[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 .pem
dosyaları 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 .p12
dosyayı 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.p12
dosyası vardır example.com
sertifikayı 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.pem
ve yalnızca sunucu sertifikasını içeriyor (ve yalnızca bir kez). chain.pem
yalnızca ara CA sertifikasını içerir (kök çapa veya sunucu sertifikası değil). privkey.pem
sadece özel anahtarı içerir. Bu yüzden openssl pkcs12 -export
sunucu 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ı .p12
dosyası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.pem
Bunun yerine ... yerine chain.pem
kullanı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 -export
Burada doğru şeyi nasıl yapacağınız hakkında bir fikriniz var mı?
OpenSSL 0.9.8zh 14 Jan 2016
değil ...
openssl version
verimleri OpenSSL 0.9.8zh 14 Jan 2016
benim yerel bilgisayarda Sierra çalışan, ama aslında verir LibreSSL 2.2.7
bu 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.