Как преобразовать файл сертификата PFX для использования с Apache на сервере linux?

Как преобразовать файл сертификата PFX для использования с Apache на сервере linux?

Я создал PFX из служб сертификатов Windows. Файл содержит всю цепочку сертификатов. (Который является только корнем и основным сертификатом, без промежуточного.)

Ведите меня, мудрецы.

5 ответов


С OpenSSL вы можете конвертировать pfx в Apache совместимый формат со следующими командами:

openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer
openssl pkcs12 -in domain.pfx -nocerts -nodes  -out domain.key   

первая команда извлекает открытый ключ domain.cer.
Вторая команда извлекает закрытый ключ в domain.key.

Обновить файл конфигурации Apache с:

<VirtualHost 192.168.0.1:443>
 ...
 SSLEngine on
 SSLCertificateFile /path/to/domain.cer
 SSLCertificateKeyFile /path/to/domain.key
 ...
</VirtualHost>

дополнительно

openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer
openssl pkcs12 -in domain.pfx -nocerts -nodes  -out domain.key

Я также создал сертификат центра сертификации (CA):

openssl pkcs12 -in domain.pfx -out domain-ca.crt -nodes -nokeys -cacerts

и включил его в конфигурационный файл Apache:

<VirtualHost 192.168.0.1:443>
 ...
 SSLEngine on
 SSLCertificateFile /path/to/domain.cer
 SSLCertificateKeyFile /path/to/domain.key
 SSLCACertificateFile /path/to/domain-ca.crt
 ...
</VirtualHost>

чтобы заставить его работать с Apache, нам нужен один дополнительный шаг.

openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer
openssl pkcs12 -in domain.pfx -nocerts -nodes  -out domain_encrypted.key
openssl rsa -in domain_encrypted.key -out domain.key

последняя команда расшифровывает ключ для использования с Apache. Домен.ключевой файл должен выглядеть так:

-----BEGIN RSA PRIVATE KEY-----
MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3
LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp
YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG
A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq
-----END RSA PRIVATE KEY-----

взял некоторые инструменты вокруг, но это то, что я закончил.

сгенерирован и установлен сертификат на IIS7. Экспортируется как PFX из IIS

конвертировать в pkcs12

openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes

Примечание: при преобразовании PFX в формат PEM openssl поместит все сертификаты и закрытый ключ в один файл. Вам нужно будет открыть файл в текстовом редакторе и скопировать каждый сертификат и закрытый ключ(включая инструкции BEGIN/END) в свой собственный текстовый файл и сохраните их как сертификат.cer, CAcert.КВЖД, закрытый ключ.ключ соответственно.

-----BEGIN PRIVATE KEY-----
Saved as certificate.key
-----END PRIVATE KEY-----

-----BEGIN CERTIFICATE-----
Saved as certificate.crt
-----END CERTIFICATE-----

добавлен в apache vhost w / Webmin.


SSLSHopper имеет некоторые довольно подробные статьи о перемещении между различными серверами.

http://www.sslshopper.com/how-to-move-or-copy-an-ssl-certificate-from-one-server-to-another.html

просто выберите соответствующую ссылку внизу этой страницы.

Примечание: у них есть онлайн конвертер, который дает им доступ к вашему закрытому ключу. Им, вероятно, можно доверять, но было бы лучше использовать команду OPENSSL (также показанную на этом сайте) хранить закрытый ключ на своем компьютере.