.p7b anahtarını .pfx dosyasına dönüştür


10

.Pfx biçimine dönüştürmem gereken bir .p7b biçiminde SSL sertifikam var. Bunu Windows sertifika yönetimi aracılığıyla denersem .pfx olarak uzman seçeneği devre dışı bırakılır.

Openssl ile denemek Dönüşüm yapmak için aşağıdaki iki komut bulduk:

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer

ancak bu komut için hangi anahtarın kullanılacağından veya CACert.cer sertifikasının ne anlama geldiğinden emin değilim.

Bu anahtarı nasıl .pfx biçimine dönüştürebilirim?

Yanıtlar:


20

PKCS # 7, bir sertifikanın / özel anahtar çiftinin özel (anahtar) bölümünü içermez, genellikle sertifika dağıtımı için kullanılır (örneğin, bir PKCS # 10 sertifika isteğine yanıt olarak, S / MIME sertifikalarını dağıtmanın bir yolu olarak mesajları şifrelemek veya imzalı mesajları doğrulamak için kullanılır). Bunun yalnızca tanımı gereği ortak öğeler olan sertifikalar için olduğunu hatırlamak önemlidir.

PKCS # 12 daha evrensel bir kapsayıcıdır - hareket ettirilebilmeleri için hem özel anahtarı hem de genel sertifika parçalarını birlikte saklamak için tasarlanmıştır. Anahtarlara bir miktar koruma sağlamak için şifre korumalı olma özelliğine sahiptir.

PFX, PKCS # 12'nin öncüsüdür.

(Anitak'ın işaret ettiği gibi) PKCS # 7'den ek veri (özel anahtar kısmı) olmadan PKCS # 12'ye PKCS # 12'ye dönüşemezsiniz çünkü PKCS # 7 tüm verilere sahip değildir.

Mark Sutton neden PFX olarak dışa aktaramadığınızı belirtti - söz konusu sertifikanın özel anahtarı dışa aktarılamaz olarak işaretlendi. Şifreleme Servis Sağlayıcısı (CSP) bu anahtarın taşınmasına izin vermez, bu kasıtlıdır. Dışa aktarılabilir bir cert \ anahtar çifti almanın tek * yolu, orijinal Sertifikanın dışa aktarılabilir bayrak kümesi ile verilip verilmediğidir. Sertifika ile ilişkili özel bir anahtarın olmaması da mümkündür, ancak burada böyle olmadığını varsayıyorum.

Wikipedia'da çeşitli PKCS türlerinin iyi bir özeti vardır .

  • En azından tek meşru yol. CSP \ Crypto Donanımına bağlı olarak, özellikle yalnızca CSP yazılımları için mekanizmalar olabilir, ancak bu, sistem yöneticisi değil, yalnızca ilgili olduğum kadarıyla güvenlik açığı araştırması için bir alandır.

Teşekkürler - yeni bir sertifika satın almak, bunu yapmak için bir üçüncü tarafla uğraşmamız gereken süreye bağlı olarak, kurtarmadan daha ucuz olabilir gibi görünüyor.
DrStalker

12

Bunu her 2 yılda bir yapıyorum (kod imzalama sertifikasını yenilediğimde) ve her seferinde bir acı.

Önemli bir bilgi parçası .p7b dosyalarını .spc olarak yeniden adlandırabilmenizdir (burada belirtildiği gibi: http://support.microsoft.com/kb/269395 ).

Daha sonra PVK + SPC'nizi bir PFX'e dönüştürmek için pvk2pfx.exe aracını kullanabilirsiniz.

pvk2pfx.exe -pvk input.pvk -pi <existing_input.pvk_password> -spc input.spc -pfx output.pfx -po <new_output.pfx_password>

(p7b yeniden adlandırma adımını atlayabilir ve doğrudan kullanabilirsiniz; denemedim ...)


bu kabul edilen cevaptan çok daha yararlıdır. Saçma sapan kodun durumuna hayran kaldım. Sertifikaların geçerliliği sona erdiğinde bunu tekrar tekrar yapmak zorunda kaldığımı düşünürüm.
Tim

3

Windows aracıyla pfx seçeneği devre dışı bırakılmışsa, özel anahtarın yerel mağazadan dışa aktarılamayacağı anlamına gelir. Bunun nedeni ya orada olmaması (anahtarları kullandığınız kutuda oluşturulmamış olması) ya da anahtarları oluşturduğunuzda özel anahtar dışa aktarılabilir olarak işaretlenmemiş olması ve Windows sertifika şablonunun dışa aktarmaya izin verecek şekilde yapılandırılmamış olmasıdır.

Sertifikalarınızı vermek için bir Microsoft sertifika yetkilisi kullandığınızı varsayıyorum. Bu doğru mu?

Eğer öyleyse: -

1. Sertifika şablonunun özel anahtarların dışa aktarılmasına izin verdiğinden emin olun.
2.Sertifika isteğinizi nasıl oluşturuyorsunuz, aşağıdaki tekniği kullanabilirsiniz

INF dosyasını aşağıdaki gibi OLUŞTUR

[Version]
Signature = "$ Windows NT $

[NewRequest]
Subject =" etc "
KeySpec = 1
Exportable = 1
MachineKeySet = TRUE
ProviderName =" CSPName "
ProviderType = 1

[ RequestAttributes ] CertificateTemplate =

NOT Exportable = 1
Sonra komut isteminde fllowing komutlarını kullanın

infile.inf yukarıda dosyasıdır ve reqfile çıktı isteği dosyanın nerede olduğunu certreq -yeni infile.inf reqfile.req //

certreq -submit -config \ reqfile.req // gönderdiğinde CA'ya sertifika isteği

bu kez tamamlandıktan olacak Sertifikayı bir pfx

olarak dışa aktarabilir Alternatif olarak http://www.blacktipconsulting.com/Site/Products.html adresine gidin, burada sizin için tüm bunları yapan ücretsiz komut satırı aracımı koydum ve sertifikayı bittikten sonra pfx olarak dışa aktarın


2

Helvick'in işaret ettiği gibi, PKCS10'un yanıtı PKCS7'dir ve özel anahtarı içermez. Bu yüzden CSR'yi oluştururken privatekey.key dosyasını oluşturmuş olmalısınız. Aşağıdaki komutları kullanabilirsiniz. (Bunun dört yaşında bir soru olduğunu biliyorum ancak sayfadaki tartışmayı izlerken bunu yapamadım).

openssl pkcs7 -inform DER -in PK7BDownloadedArchive.p7b -text -print_certs -out intermediateCert.pem

openssl pkcs12 -export -in intermediateCert.pem -inkey privateKey.key -out FinalPKCS12Cert.p12

İyi şanslar!

Saygılarımızla, JE


-informTartışmaya ihtiyacınız olmayabilir .
palswim

1

Yanlış olabilirdim, ancak PCKCS # 7 dosyanızın yalnızca sertifikanızın ortak yarısını içerdiğini düşünüyorum.

PKCS # 12 dosyasının her iki yarıya da sahip olması gerekir - bu yüzden neden -inkeyseçeneğe ihtiyacı vardı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.