Linux sunucusunda Apache ile kullanmak için bir PFX sertifika dosyasını nasıl dönüştürebilirim?


110

Linux sunucusunda Apache ile kullanmak için bir PFX sertifika dosyasını nasıl dönüştürebilirim?

PFX'i Windows Sertifika Hizmetlerinden oluşturdum. PFX, tüm sertifika zincirini içerir. (Bu sadece bir kök ve ana sertifika, ara yok.)

Bana liderlik edin, bilge olanlar.

Yanıtlar:


194

OpenSSL ile pfx'i aşağıdaki komutlarla Apache uyumlu formata dönüştürebilirsiniz:

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

İlk komut, genel anahtarı domain.cer.
İkinci komut özel anahtarı konumuna çıkarır domain.key.

Apache yapılandırma dosyanızı şununla güncelleyin:

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

Bu, sertifika yetki dosyasını oluşturma komutu eksik. Aşağıdaki cevap daha eksiksizdir.
hawkee

100

Ek olarak

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

Ayrıca Sertifika Yetkilisi (CA) sertifikası oluşturdum:

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

Ve bunu Apache yapılandırma dosyasına dahil edin:

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

8
Not: ca sertifikası boş olacaksa - lütfen bu satırı yapılandırma dosyasına dahil etmeyin.
Andron

@Andron CA sertifikasını oluşturmak için üçüncü komutu kullandığımda sonuç boş bir crt dosyası. Giriş için hem serverSSL pfx dosyasını hem de rootCA pfx dosyasını kullanmayı denedim. (bitnami wamp) Nihai sonuç, firefox'un bana bir The certificate is not trusted because the issuer certificate is unknown SEC_ERROR_UNKNOWN_ISSUERhata vermesidir .
khargoosh

@khargoosh yorumda bildirdiğim gibi: boşsa - sadece bu satırı kullanmayın / dahil etmeyin. Ben de aynı durumdaydım.
Andron

31

Apache ile çalışmasını sağlamak için fazladan bir adıma ihtiyacımız vardı.

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

Son komut, Apache ile kullanmak için anahtarın şifresini çözer. Domain.key dosyası şöyle görünmelidir:

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

GÜZEL! Bitnami veya CA crt'ye ihtiyaç duyan diğerleri için, CA crt'yi eklemek için Andron'dan gelen yanıta bakın. Michael Ferrante'de server-ca.crt (Andron'un yanıtında domain-ca.crt yerine) ve server.crt (domain.cer yerine) ve server.key (domain.key yerine) isimlendirmesini kullanın cevap burada.
OldGreg

3

Etrafta biraz alet edindim, ama bu benim son bulduğum şey.

IIS7 üzerinde bir sertifika oluşturdu ve kurdu. IIS'den PFX olarak dışa aktarıldı

Pkcs12 biçimine dönüştür

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

NOT: PFX'i PEM formatına dönüştürürken, openssl tüm Sertifikaları ve Özel Anahtarı tek bir dosyaya koyacaktır. Dosyayı Metin düzenleyicide açmanız ve her Sertifika ve Özel anahtarı (BEGIN / END ifadeleri dahil) kendi bireysel metin dosyasına kopyalamanız ve bunları sırasıyla certificate.cer, CAcert.cer, privateKey.key olarak kaydetmeniz gerekecektir.

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

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

Apache vhost w / Webmin'e eklendi.


Özel anahtarın ve sertifikaların aynı dosyada yer almasını istemiyorsanız, (özel anahtarı -nokeysçıkarmak için değil) ve -clcerts(yalnızca sertifikayı çıkarmak için) kullanın. Bu tam olarak Matej'in söylediği şey.
Bruno

0

SSLSHopper'ın farklı sunucular arasında geçiş yapmakla ilgili oldukça kapsamlı makaleleri var.

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

Bu sayfanın altındaki ilgili bağlantıyı seçmeniz yeterlidir.

Not: Özel anahtarınıza erişmelerini sağlayan çevrimiçi bir dönüştürücüleri vardır. Muhtemelen güvenilir olabilirler, ancak özel anahtarı kendi makinenizde gizli tutmak için OPENSSL komutunu (bu sitede de gösterilmektedir) kullanmak daha iyi olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.