แปลงคีย์. p7b เป็น. pfx


10

ฉันมีใบรับรอง SSL ในรูปแบบ. p7b ที่ฉันต้องการแปลงเป็น. pfx หากฉันลองผ่านการจัดการใบรับรอง windows ตัวเลือกสำหรับผู้เชี่ยวชาญเนื่องจาก. pfx ถูกปิดใช้งาน

ลองใช้ openssl ฉันได้พบคำสั่งสองคำสั่งต่อไปนี้เพื่อทำการแปลง:

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

แต่ฉันไม่แน่ใจว่าจะใช้คีย์ใดสำหรับคำสั่ง teh esecond หรือใบรับรอง CACert.cer หมายถึงอะไร

ฉันจะแปลงคีย์นี้เป็นรูปแบบ. pfx ได้อย่างไร

คำตอบ:


20

PKCS # 7 ไม่รวมส่วนไพรเวต (คีย์) ของคู่ใบรับรอง / ไพรเวตคีย์โดยทั่วไปจะใช้สำหรับการเผยแพร่ใบรับรอง (เช่นการตอบสนองต่อคำขอใบรับรอง PKCS # 10 ซึ่งเป็นวิธีการกระจาย S / MIME certs ใช้เพื่อเข้ารหัสข้อความหรือเพื่อตรวจสอบข้อความที่ลงนาม ฯลฯ ) มันเป็นสิ่งสำคัญที่ต้องจำไว้ว่ามันเป็นเพียงสำหรับใบรับรองซึ่งโดยรายการสาธารณะที่กำหนด

PKCS # 12 เป็นคอนเทนเนอร์สากลมากขึ้น - มีวัตถุประสงค์เพื่อจัดเก็บทั้งคีย์ส่วนตัวและใบรับรองสาธารณะด้วยกันเพื่อให้สามารถเคลื่อนย้ายได้ มันมีความสามารถในการป้องกันด้วยรหัสผ่านเพื่อให้การป้องกันคีย์บางอย่าง

PFX เป็นบรรพบุรุษของ PKCS # 12

คุณไม่สามารถ (ตามที่ Anitak ชี้) แปลงจาก PKCS # 7 เป็น PKCS # 12 โดยไม่มีข้อมูลเพิ่มเติม (ส่วนคีย์ส่วนตัว) เนื่องจาก PKCS # 7 ไม่มีข้อมูลทั้งหมด

Mark Sutton ได้ชี้ให้เห็นเหตุผลที่คุณไม่สามารถส่งออกเป็น PFX ได้ - ใบรับรองที่เป็นปัญหามีรหัสส่วนตัวของมันตั้งค่าสถานะเป็นไม่สามารถส่งออกได้ Cryptographic Service Provider (CSP) จะไม่อนุญาตให้ย้ายกุญแจนี้โดยเจตนา วิธีเดียวที่คุณจะได้รับคู่ใบรับรอง \ ที่ส่งออกได้คือถ้าใบรับรองต้นฉบับออกด้วยชุดแฟล็กที่ส่งออกได้ อาจเป็นไปได้ว่าไม่มีรหัสส่วนตัวที่เกี่ยวข้องกับใบรับรอง แต่ฉันสมมติว่าไม่ใช่กรณีที่นี่

มีบทสรุปที่ดีของต่าง ๆ เป็นประเภท PKCS วิกิพีเดีย

  • วิธีที่ถูกต้องเท่านั้นอย่างน้อย ขึ้นอยู่กับ CSP \ Crypto Hardware อาจมีกลไกโดยเฉพาะอย่างยิ่งสำหรับซอฟต์แวร์ CSP เท่านั้น แต่เป็นพื้นที่สำหรับการวิจัยช่องโหว่ด้านความปลอดภัยเท่าที่ฉันกังวลไม่ใช่ผู้ดูแลระบบ

ขอบคุณ - ดูเหมือนว่าการซื้อใบรับรองใหม่อาจถูกกว่าการกู้คืนขึ้นอยู่กับระยะเวลาที่เราต้องจัดการกับบุคคลที่สามเพื่อดำเนินการนี้
DrStalker

12

ฉันทำสิ่งนี้ทุก 2 ปี (เมื่อฉันต่ออายุใบรับรองการลงนามรหัส) และมันก็เจ็บปวดในแต่ละครั้ง

ข้อมูลสำคัญคือคุณสามารถเปลี่ยนชื่อไฟล์. p7b เป็น. spc (ตามที่ระบุไว้ที่นี่: http://support.microsoft.com/kb/269395 )

จากนั้นคุณสามารถใช้เครื่องมือ pvk2pfx.exe เพื่อแปลง PVK + SPC ของคุณเป็น PFX

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

(คุณอาจจะข้ามขั้นตอนการเปลี่ยนชื่อ p7b และใช้โดยตรงฉันยังไม่ได้ลอง ... )


สิ่งนี้มีประโยชน์มากกว่าคำตอบที่ยอมรับ ฉันประหลาดใจที่สถานะของการลงรหัสไร้สาระ ฉันประจบประแจงที่คิดว่าจะต้องทำซ้ำนี้ซ้ำแล้วซ้ำอีกเมื่อใบรับรองหมดอายุ
ทิม

3

ด้วยเครื่องมือ windows หากปิดการใช้งานตัวเลือก pfx หมายความว่าคีย์ส่วนตัวไม่สามารถส่งออกจากร้านค้าในพื้นที่ได้ นี่เป็นเพราะมันไม่ได้อยู่ที่นั่น (เพราะไม่ได้สร้างกุญแจในกล่องที่คุณใช้) หรือเพราะเมื่อคุณสร้างกุญแจรหัสส่วนตัวไม่ได้ถูกทำเครื่องหมายว่าส่งออกได้และไม่ได้กำหนดค่าแม่แบบใบรับรอง windows เพื่ออนุญาตให้ส่งออก

ฉันสมมติว่าคุณใช้หน่วยงานออกใบรับรองของ Microsoft ในการออกใบรับรองของคุณ ถูกต้องหรือไม่

ถ้าเป็นเช่นนั้น: -

1. ตรวจสอบให้แน่ใจว่าแม่แบบใบรับรองอนุญาตให้ส่งออกคีย์ส่วนตัว
2. คุณกำลังสร้างคำขอใบรับรองของคุณคุณสามารถใช้เทคนิคต่อไปนี้

สร้างไฟล์ INF ดังนี้

[Version]
Signature = "$ Windows NT $

[NewRequest]
Subject =" ฯลฯ "
KeySpec = 1
ส่งออกได้ = 1
MachineKeySet =
ProviderName TRUE =" CSPName "
ProviderType = 1

[RequestAttributes] CertificateTemplate

= 1
จากนั้นใช้คำสั่ง fllowing ที่พร้อมท์คำสั่ง

certreq -new infile.inf reqfile.req // โดยที่ infile.inf เป็นไฟล์ด้านบนและ reqfile เป็นไฟล์คำร้องขอเอาต์พุต

certreq -submit -config \ reqfile.req // ส่งคำขอไปยัง CA

ทันทีที่คุณทำสำเร็จ สามารถส่งออกใบรับรองเป็น pfx

หรือไปที่http://www.blacktipconsulting.com/Site/Products.htmlอีกทางที่ได้รับฉันใส่เครื่องมือบรรทัดคำสั่งฟรีที่ทำทั้งหมดให้คุณและส่งออกใบรับรองเป็น pfx เมื่อเสร็จแล้ว


2

ดังที่ Helvick ระบุไว้การตอบสนองของ PKCS10 คือ PKCS7 และไม่มีรหัสส่วนตัว ดังนั้นในขณะที่สร้าง CSR คุณควรสร้างไฟล์ privatekey.key คุณสามารถใช้คำสั่งต่อไปนี้ (ฉันรู้ว่านี่เป็นคำถามอายุสี่ขวบ แต่ฉันไม่สามารถทำได้ในขณะที่ติดตามการอภิปรายในหน้านี้)

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

โชคดี!

ขอแสดงความนับถือ JE


คุณอาจไม่ต้องการ-informอาร์กิวเมนต์
palswim

1

ฉันอาจจะผิด แต่ฉันคิดว่าไฟล์ PCKCS # 7 ของคุณรวมถึงใบรับรองสาธารณะครึ่งหนึ่งของคุณเท่านั้น

ไฟล์ PKCS # 12 จะต้องมีทั้งสองครึ่งดังนั้นจึงต้องมี-inkeyตัวเลือก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.