ubah kunci .p7b menjadi .pfx

10

Saya memiliki sertifikat SSL dalam format .p7b yang perlu saya konversi menjadi .pfx. Jika saya mencoba ini melalui manajemen sertifikat windows opsi untuk ahli sebagai .pfx dinonaktifkan.

Mencoba dengan openssl Saya telah menemukan dua perintah berikut untuk melakukan konversi:

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

tapi saya tidak yakin kunci apa yang digunakan untuk perintah esecond, atau apa yang dimaksud dengan sertifikat CACert.cer.

Bagaimana saya bisa mengubah kunci ini ke format .pfx?

DrStalker
sumber

Jawaban:

20

PKCS # 7 tidak termasuk bagian (kunci) pribadi dari pasangan sertifikat / kunci-pribadi, itu biasa digunakan untuk penyebaran sertifikat (misalnya sebagai tanggapan terhadap permintaan sertifikat # 10 PKCS, sebagai sarana untuk mendistribusikan sertifikat S / MIME digunakan untuk mengenkripsi pesan, atau untuk memvalidasi pesan yang ditandatangani, dll). Penting untuk diingat bahwa ini hanya untuk sertifikat yang menurut definisi merupakan barang publik.

PKCS # 12 adalah wadah yang lebih universal - ini dimaksudkan untuk menyimpan kunci pribadi dan bagian sertifikat publik bersama-sama sehingga dapat dipindahkan. Ini memiliki kemampuan dilindungi kata sandi untuk memberikan perlindungan terhadap kunci.

PFX adalah pendahulu dari PKCS # 12.

Anda tidak dapat (seperti yang ditunjukkan Anitak) mengonversi dari PKCS # 7 ke PKCS # 12 tanpa data tambahan (bagian kunci pribadi) karena PKCS # 7 tidak memiliki semua data.

Mark Sutton telah menunjukkan mengapa Anda tidak dapat mengekspor sebagai PFX - sertifikat yang dimaksud memiliki kunci pribadi yang ditandai sebagai tidak dapat diekspor. Penyedia Layanan Kriptografis (CSP) tidak akan mengizinkan kunci itu untuk dipindahkan, ini disengaja. Satu-satunya cara Anda bisa mendapatkan pasangan kunci yang dapat diekspor adalah jika Sertifikat asli dikeluarkan dengan set bendera yang dapat diekspor. Mungkin juga tidak ada kunci pribadi yang terkait dengan sertifikat, tetapi saya berasumsi bahwa itu tidak terjadi di sini.

Ada ringkasan yang bagus dari berbagai jenis PKCS di Wikipedia .

  • Satu-satunya cara yang sah setidaknya. Tergantung pada CSP \ Crypto Hardware mungkin ada mekanisme, terutama untuk perangkat lunak hanya CSP, tapi itu area untuk penelitian kerentanan keamanan hanya sejauh yang saya ketahui, bukan admin sistem.
Helvick
sumber
Terima kasih - sepertinya membeli sertifikat baru mungkin lebih murah daripada memulihkannya, berdasarkan jumlah waktu yang harus kita hadapi dengan pihak ketiga untuk melakukan ini.
DrStalker
12

Saya melewati ini setiap 2 tahun (ketika saya memperbarui sertifikat penandatanganan kode) dan itu menyakitkan setiap kali.

Sepotong informasi penting adalah Anda cukup mengganti nama file .p7b menjadi .spc (seperti yang dinyatakan di sini: http://support.microsoft.com/kb/269395 ).

Anda kemudian dapat menggunakan alat pvk2pfx.exe untuk mengubah PVK + SPC Anda menjadi PFX.

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

(Anda mungkin dapat melewati langkah penggantian nama p7b & menggunakannya secara langsung; saya belum mencoba ...)

John Hart
sumber
ini jauh lebih berguna daripada jawaban yang diterima. Saya kagum pada keadaan kode penandatanganan omong kosong. Saya ngeri membayangkan harus mengulang ini berulang kali ketika sertifikat berakhir.
Tim
3

Dengan alat windows jika opsi pfx dinonaktifkan, itu berarti bahwa kunci pribadi tidak dapat diekspor dari toko lokal. Ini karena tidak ada di sana (karena kunci tidak dihasilkan pada kotak yang Anda gunakan) atau karena ketika Anda membuat kunci, kunci pribadi tidak ditandai sebagai dapat diekspor dan templat sertifikat windows tidak dikonfigurasikan untuk memungkinkan ekspor.

Saya berasumsi Anda menggunakan otoritas sertifikat Microsoft untuk mengeluarkan sertifikat Anda. Apakah ini benar?

Jika demikian maka: -

1. Pastikan bahwa templat sertifikat memungkinkan ekspor kunci pribadi.
2.Bagaimana Anda menghasilkan permintaan sertifikat Anda, Anda dapat menggunakan teknik berikut

BUAT file INF sebagai berikut

[Versi]
Signature = "$ Windows NT $

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

[RequestAttributes] CertificateTemplate =

CATATAN yang Diekspor = 1
Kemudian gunakan perintah mengalir di prompt perintah

certreq -baru infile.inf reqfile.req // di mana infile.inf adalah file di atas dan reqfile adalah file permintaan output

certreq -submit -config \ reqfile.req // Mengajukan permintaan cert ke CA

Setelah ini selesai, Anda akan dapat mengekspor sertifikat sebagai pfx

Atau goto http://www.blacktipconsulting.com/Site/Products.html di mana saya telah meletakkan alat baris perintah gratis saya yang melakukan semua ini untuk Anda dan mengekspor sertifikat sebagai pfx setelah selesai

Mark Sutton
sumber
2

Seperti yang ditunjukkan Helvick, respons PKCS10 adalah PKCS7 dan tidak mengandung kunci pribadi. Jadi saat menghasilkan CSR Anda harus menghasilkan file privatekey.key. Anda dapat menggunakan perintah berikut. (Saya tahu ini adalah pertanyaan empat tahun tetapi saya tidak bisa melakukannya saat mengikuti diskusi di halaman).

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

Semoga berhasil!

Salam, JE

java_enthu
sumber
Anda mungkin tidak membutuhkan -informargumen.
palswim
1

Saya bisa saja salah, tetapi saya pikir file PCKCS # 7 Anda hanya menyertakan setengah publik dari sertifikat Anda.

File PKCS # 12 harus memiliki kedua bagian - karenanya mengapa perlu -inkeyopsi.

Alnitak
sumber