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

Как я могу конвертировать файл сертификата PFX для использования с Apache на сервере Linux?

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

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

Ответ 1

С 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>

Ответ 2

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

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

Я также создал сертификат Certificate Authority (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>

Ответ 3

Чтобы заставить его работать с 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. Файл domain.key должен выглядеть следующим образом:

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

Ответ 4

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

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

Преобразовать в pkcs12

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

ПРИМЕЧАНИЕ. При преобразовании PFX в формат PEM, openssl поместит все сертификаты и закрытый ключ в один файл. Вам нужно будет открыть файл в текстовом редакторе и скопировать каждый сертификат и закрытый ключ (включая операторы BEGIN/END) в отдельный текстовый файл и сохранить их как cert.cer, CAcert.cer, privateKey.key соответственно.

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

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

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

Ответ 5

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

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

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

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