Neden openssl pkcs12 ihracat, Mac OS X'te sunucu sertifikasını çoğaltarak, ekstra kök bağlantı sertifikası ekliyor?


1

[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'nin modern bir sürümünü kurmayı ve çalıştırmayı denediniz mi (belki MacPorts veya Homebrew aracılığıyla)? Apple'ın kendi güvenlik kütüphanesi vardır ve OpenSSL'lerine uzun zamandır hiç sevgi göstermedi.
Spiff

Bunu henüz denememiştik. OpenSSL’yi güvenlik denetimlerinden geçen başka bir şekilde çalışan bir yapılandırmada yükseltmeye karşı temkinliydim. Ancak, o kadar eski OpenSSL 0.9.8zh 14 Jan 2016değil ...
Nick Williams

“Yüksek Sierra'da Apple, SSL kütüphanelerini OpenSSL 0.9.8zh'den LibreSSL 2.2.7'ye değiştirdi. LibreSSL, OpenBSD tarafından desteklenen bir OpenSSL çatalıdır. Secure Transport, Apple'ın SSL / TLS için kendi API'sidir ancak öncelikle birinci taraf yazılımları için kullanılır. LibreSSL, üçüncü taraf yazılımlar için SSL kütüphanesi olarak görev yapacak. Bu herhangi bir WWDC oturumuna dahil edilmedi ancak High Sierra beta kullanıcıları tarafından gözlemlendi. ”( Thesslstore.com/blog/crypto-ssl-improvements-high-sierra-ios-11 )
Nick Williams

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.
Nick Williams,
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.