Як я можу конвертувати файл сертифіката PFX для використання з Apache на сервері Linux?
Я створив PFX з сервісів сертифікатів Windows. PFX містить увесь ланцюжок сертифікатів. (Який лише корінь і головна церт, не проміжний.)
Веди мене, мудрі.
Як я можу конвертувати файл сертифіката 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
Я також створив сертифікат з питань сертифікації (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>
The certificate is not trusted because the issuer certificate is unknown
SEC_ERROR_UNKNOWN_ISSUER
помилку.
Щоб змусити його працювати з 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) у свій власний текстовий файл та зберегти їх як сертифікат.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
(лише для вилучення cert). Це саме те, що сказав Матей.
У SSLSHopper є досить ґрунтовні статті про переміщення між різними серверами.
http://www.sslshopper.com/how-to-move-or-copy-an-ssl-certificate-from-one-server-to-another.html
Просто виберіть відповідне посилання внизу цієї сторінки.
Примітка: у них є онлайн-конвертер, який надає їм доступ до вашого приватного ключа. Їм, ймовірно, можна довіряти, але було б краще скористатися командою OPENSSL (також показаною на цьому веб-сайті), щоб зберегти приватний ключ приватним на власній машині.