CA sertifika zincirini PFX'ten PEM formatında çanta özellikleri olmadan dışa aktarma


31

Tam sertifika zinciri ve özel anahtarı içeren bir PKCS12 dosyam var. Bir uygulama için 3 dosyaya bölmem gerekiyor. İhtiyacım olan 3 dosya şu şekilde (PEM formatında):

  • şifrelenmemiş bir anahtar dosyası
  • bir istemci sertifika dosyası
  • bir CA sertifika dosyası (kök ve tüm ara)

Bu yapmak zorunda olduğum ortak bir görev, bu yüzden çıktısını el ile düzenlemeden bunu yapmanın bir yolunu arıyorum.

Aşağıdakileri denedim:

openssl pkcs12 -in <filename.pfx> -nocerts -nodes -out <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys -out <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain -out <cacerts.cer>

Bu iyi çalışır, ancak çıktı, uygulamanın nasıl işleneceğini bilmediği çanta özellikleri içerir.

Bazı araştırmalardan sonra, sonuçları çantadan çıkarmak için x509'dan geçen bir çözüm buldum.

openssl x509 -in <clientcert.cer> -out <clientcert.cer>

Bu çalışır, ancak cacert dosyasında bir sorunla karşılaşıyorum. Çıkış dosyası yalnızca zincirdeki 3 cerdan birini içerir.

Pkcs12 komutunun çıktısına bag özniteliklerini dahil etmekten kaçınmanın bir yolu var mı, yoksa x509 komut çıktısının tüm sertifikaları içermesinin bir yolu var mı? Ek olarak, x509 aracılığıyla çalıştırılması en basit çözümse, dosyayı iki kez yazmak yerine pkcs12'den x509'a çıktısını aktarmanın bir yolu var mı?

Yanıtlar:


36

Sonunda geldiğim çözüm onu ​​sedye ile taşımaktı.

openssl pkcs12 -in <filename.pfx> -nocerts -nodes | sed -ne '/-BEGIN PRIVATE KEY-/,/-END PRIVATE KEY-/p' > <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <cacerts.cer>

Teşekkürler! Bu bana bugün biraz zaman kazandırdı! ;-)
Jim P.

Çok teşekkür ederim!
PaulJ
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.