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

86

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

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

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

Теги:
ssl

5 ответов

162
Лучший ответ

С 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>
  • 0
    В нем отсутствует команда для создания файла центра сертификации. Ответ ниже является более полным.
  • 0
    Это работает и на Windows. +1 спас мою задницу.
73

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

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>
  • 7
    Примечание: если сертификат CA будет пустым - не включайте эту строку в файл конфигурации.
  • 8
    Я думаю, что это лучший ответ, потому что он более полный.
Показать ещё 3 комментария
25

Чтобы заставить его работать с 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-----
  • 0
    ОТЛИЧНО! Для Битнами и других, которым также нужен CRT CA, посмотрите на ответ от Andron, чтобы включить CRT CA. Используйте серверную-ca.crt (вместо domain-ca.crt в ответе Андрона), и server.crt (вместо domain.cer), и server.key (вместо domain.key) в номенклатуре Майкла Ферранте ответ здесь.
3

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

Сгенерировано и установлено сертификат на 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.

  • 0
    Если вы не хотите, чтобы закрытый ключ и сертификаты оказались в одном файле, используйте -nokeys (не для извлечения закрытого ключа) и -clcerts (только для извлечения сертификата). Это именно то, что сказал Матей.
  • 0
    Бруно, спасибо. Я дам ему правильный ответ награду. Хорошо знать.
0

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню