[Başlangıçta Slack Overflow'ta gönderildi , ancak yorum dizisi uygunsuz yer hakkında şikayet etti.]
StartCom SSL Sertifikalarından Let's Encrypt'a geçmek için çalışıyoruz ve macOS Server + Apache HTTPD ile otomatik olarak çalışacak şekilde ayarlanması için çalışıyoruz. Komut satırı aracından ( security import) macOS Server düz .pemdosyaları kabul etmiyor ; Apache'de yapılandırmak için dosyaları .p12çıkardığı bir dosya vermelisiniz .pem. Sinir bozucu ve anlamsız, ama şimdilik birlikte yaşamak zorunda olduğumuz şey bu.
Bu .p12dosyayı oluşturmak için bu komutu yerine getirmeliyiz:
openssl pkcs12 -export \
-inkey /etc/letsencrypt/live/example.com/privkey.pem \
-in /etc/letsencrypt/live/example.com/cert.pem \
-certfile /etc/letsencrypt/live/example.com/chain.pem \
-out /etc/letsencrypt/live/example.com/example.com.p12
Ve işte tuhaflaştığı yer burası. Çıktı example.com.p12dosyası vardır example.comsertifikayı iki kez (tüm tarayıcılar varsayılan olarak onları yüklemiş) gereksiz kendinden imzalı DST Kök CA X3 çapa sertifikası ardından edelim Şifrele ara CA sertifikası ardından, ve son olarak özel anahtarla ardından . Sonuçta, Apache SSL el sıkışmasının, iki kez sunucu sertifikası ve ara CA sertifikası ile Qualys SSL Labs test cihazında uyarılara neden olan kök sertifikasının (gönderilmemesi gereken) olması sonucudur.
İçeriye baktık cert.pemve yalnızca sunucu sertifikasını içeriyor (ve yalnızca bir kez). chain.pemyalnızca ara CA sertifikasını içerir (kök çapa veya sunucu sertifikası değil). privkey.pemsadece özel anahtarı içerir. Bu yüzden openssl pkcs12 -exportsunucu sertifikasını çoğaltmak ve daha sonra kök bağlantı sertifikasını arama ve ekleme adımına gidiyorum.
Aynı komutu openSUSE Linux'ta çalıştırırsak, çıktı .p12dosyasında yalnızca sunucu sertifikası (bir kez), ara CA sertifikası ve özel anahtar bulunur. Kök bağlantısı yok.
Aşağıdaki varyasyonları denedik ve çıktıda bir fark olmadığını gördük:
openssl pkcs12 -export \
-inkey /etc/letsencrypt/live/example.com/privkey.pem \
-in /etc/letsencrypt/live/example.com/fullchain.pem \
-out /etc/letsencrypt/live/example.com/example.com.p12
openssl pkcs12 -export \
-inkey /etc/letsencrypt/live/example.com/privkey.pem \
-certfile /etc/letsencrypt/live/example.com/fullchain.pem \
-out /etc/letsencrypt/live/example.com/example.com.p12
Bir Linux makinesinde yanlış iki katına sunucu sertifikası davranışını çoğaltabildiğim tek şey aşağıdakileri yapmaktır (ancak yine de kök bağlantı noktasını içermez):
openssl pkcs12 -export \
-inkey /etc/letsencrypt/live/example.com/privkey.pem \
-in /etc/letsencrypt/live/example.com/cert.pem \
-certfile /etc/letsencrypt/live/example.com/fullchain.pem \
-out /etc/letsencrypt/live/example.com/example.com.p12
( fullchain.pemBunun yerine ... yerine chain.pemkullanılmasının cert.pem, sunucu sertifikasının neden kopyalandığını mükemmel bir anlam ifade ettiğini unutmayın, ancak Mac OS X'te kullandığımız komut bu değil.)
openssl pkcs12 -exportBurada doğru şeyi nasıl yapacağınız hakkında bir fikriniz var mı?
OpenSSL 0.9.8zh 14 Jan 2016değil ...
openssl versionverimleri OpenSSL 0.9.8zh 14 Jan 2016benim yerel bilgisayarda Sierra çalışan, ama aslında verir LibreSSL 2.2.7bu sertifika komut çalıştığı sunucusu (High Sierra) üzerinde. Yani belki de bu LibreSSL’de bir hatadır? Başlığı ve etiketleri güncellemeliyim, ancak ilk önce davranışların farklı olup olmadığını görmek için her ikisini de test edeceğim.