Как я могу конвертировать файл сертификата PFX для использования с Apache на сервере Linux?
Я создал PFX из служб сертификации Windows. PFX содержит всю цепочку сертификатов. (Это всего лишь корень и главный сертификат, без промежуточных.)
Ведите меня, мудрые.
С 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
Я также создал сертификат 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>
Чтобы заставить его работать с 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-----
Принял некоторые инструменты, но это то, с чем я закончил.
Сгенерировано и установлено сертификат на 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.
-nokeys
(не для извлечения закрытого ключа) и -clcerts
(только для извлечения сертификата). Это именно то, что сказал Матей.
В SSLSHopper есть довольно подробные статьи о перемещении между различными серверами.
http://www.sslshopper.com/how-to-move-or-copy-an-ssl-certificate-from-one-server-to-another.html
Просто выберите соответствующую ссылку внизу этой страницы.
Примечание: у них есть онлайн-конвертер, который дает им доступ к вашему закрытому ключу. Вероятно, им можно доверять, но лучше было бы использовать команду OPENSSL (также показанную на этом сайте), чтобы личный ключ был закрыт на вашей собственной машине.