# Укажите имя вашего файла 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