Загрузка данных


# Укажите имя вашего файла pfx и пароль к нему
$pfxPath = ".\ваш_файл.pfx" 
$password = "ПАРОЛЬ_ОТ_PFX"

# Загружаем сертификат в память
$certCollection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection
$certCollection.Import($pfxPath, $password, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)

foreach ($cert in $certCollection) {
    # 1. Экспорт сертификата (Public Key) в формате Base64 (CRT)
    $crtBytes = $cert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Cert)
    $crtBase64 = [Convert]::ToBase64String($crtBytes, [Base64FormattingOptions]::InsertLineBreaks)
    $crtPem = "-----BEGIN CERTIFICATE-----`r`n$crtBase64`r`n-----END CERTIFICATE-----"
    [File]::WriteAllText(".\server.crt", $crtPem)

    # 2. Экспорт приватного ключа (Private Key) в формате PEM
    if ($cert.HasPrivateKey) {
        $rsa = [System.Security.Cryptography.X509Certificates.RSACertificateExtensions]::GetRSAPrivateKey($cert)
        $keyBytes = $rsa.ExportPkcs8PrivateKey()
        $keyBase64 = [Convert]::ToBase64String($keyBytes, [Base64FormattingOptions]::InsertLineBreaks)
        $keyPem = "-----BEGIN PRIVATE KEY-----`r`n$keyBase64`r`n-----END PRIVATE KEY-----"
        [File]::WriteAllText(".\server.key", $keyPem)
    }
}
Write-Host "Файлы server.crt и server.key успешно созданы!" -ForegroundColor Green