การแปลง pfx เป็น pem โดยใช้ openssl


คำตอบ:


107

คุณสามารถใช้เครื่องมือบรรทัดคำสั่ง OpenSSL คำสั่งต่อไปนี้ควรทำเคล็ดลับ

openssl pkcs12 -in client_ssl.pfx -out client_ssl.pem -clcerts

openssl pkcs12 -in client_ssl.pfx -out root.pem -cacerts

หากคุณต้องการให้ไฟล์ของคุณได้รับการป้องกันด้วยรหัสผ่านเป็นต้นมีตัวเลือกเพิ่มเติม

คุณสามารถอ่านเอกสารทั้งหมดที่นี่


191

อีกมุมมองหนึ่งสำหรับการทำบน Linux ... นี่คือวิธีการทำเพื่อให้ไฟล์เดียวที่ได้รับมีคีย์ส่วนตัวที่ถอดรหัสเพื่อให้บางอย่างเช่น HAProxy สามารถใช้งานได้โดยไม่ต้องแจ้งให้คุณป้อนข้อความรหัสผ่าน

openssl pkcs12 -in file.pfx -out file.pem -nodes

จากนั้นคุณสามารถกำหนดค่า HAProxy เพื่อใช้ไฟล์ file.pem


นี่เป็นการแก้ไขจากเวอร์ชันก่อนหน้าซึ่งฉันมีหลายขั้นตอนเหล่านี้จนกว่าฉันจะรู้ว่าตัวเลือก -nodes เพียงแค่ข้ามการเข้ารหัสคีย์ส่วนตัว แต่ฉันจะทิ้งมันไว้ที่นี่เพราะมันอาจช่วยสอนได้

openssl pkcs12 -in file.pfx -out file.nokey.pem -nokeys
openssl pkcs12 -in file.pfx -out file.withkey.pem
openssl rsa -in file.withkey.pem -out file.key
cat file.nokey.pem file.key > file.combo.pem
  1. ขั้นตอนที่ 1 แจ้งให้คุณป้อนรหัสผ่านเพื่อเปิด PFX
  2. ขั้นตอนที่ 2 จะแจ้งให้คุณทราบพร้อมทั้งสร้างข้อความรหัสผ่านสำหรับคีย์
  3. ขั้นตอนที่ 3 แจ้งให้คุณป้อนข้อความรหัสผ่านที่คุณเพิ่งสร้างขึ้นเพื่อจัดเก็บที่ถอดรหัส
  4. อันที่ 4 รวมทั้งหมดเป็น 1 ไฟล์

จากนั้นคุณสามารถกำหนดค่า HAProxy เพื่อใช้ไฟล์ file.combo.pem

เหตุผลที่คุณต้องใช้ขั้นตอนแยกกัน 2 ขั้นตอนที่คุณระบุไฟล์ที่มีคีย์และอีกขั้นตอนหนึ่งที่ไม่มีคีย์เป็นเพราะถ้าคุณมีไฟล์ที่มีทั้งคีย์ที่เข้ารหัสและถอดรหัสบางอย่างเช่น HAProxy จะยังคงแจ้งให้คุณพิมพ์ข้อความรหัสผ่านเมื่อ มันใช้มัน


ฉันไม่ได้ใช้เวลาทำความคุ้นเคยกับ openssl อย่างใกล้ชิด แต่การแปลง pem ไม่รวมคีย์ส่วนตัว การแก้ไขให้รายละเอียดเกี่ยวกับวิธีการรวมใบรับรองและคีย์ลงในไฟล์ pem เดียวตามที่ฉันต้องการ
EBT

บนระบบ windows ให้ใช้ type แทน cat
hupseb

บน Windows OpenSSL เวอร์ชันนี้ใช้งานง่ายสำหรับสิ่งนี้: slproweb.com/products/Win32OpenSSL.html
Helge Klein

ขั้นตอนข้างต้นทำงานได้ดีในการแปลง PFX เป็น PEM อย่างไรก็ตามฉันต้องทำขั้นตอนเพิ่มเติมหนึ่งขั้นตอน: เปิดไฟล์ nokey PEM ในโปรแกรมแก้ไขข้อความและย้ายใบรับรองสุดท้ายในห่วงโซ่ไปที่ด้านบนของไฟล์ มิฉะนั้น nginx จะแสดงข้อผิดพลาดเกี่ยวกับใบรับรองและปฏิเสธที่จะใช้
EugeneRomero

ในกรณีนี้คุณสามารถเรียงลำดับคำสั่ง cat ใหม่เพื่อวางไว้ก่อน เช่น: cat file.key file.nokey.pem> file.combo.pem เว้นแต่ file.key เองจะมีหลายลำดับที่ไม่ถูกต้อง แต่ทั้งสองกรณีคุณมีแนวโน้มที่จะจัดเรียงสิ่งของอีกครั้งโดยใช้โปรแกรม
user2415376

12

แม้ว่าคำตอบอื่น ๆ จะถูกต้องและอธิบายอย่างละเอียด แต่ฉันพบว่ามีปัญหาในการทำความเข้าใจ นี่คือวิธีที่ฉันใช้ ( นำมาจากที่นี่ ):

กรณีแรก: ในการแปลงไฟล์ PFX เป็นไฟล์ PEM ที่มีทั้งใบรับรองและคีย์ส่วนตัว:

openssl pkcs12 -in filename.pfx -out cert.pem -nodes

กรณีที่สอง: ในการแปลงไฟล์ PFX เพื่อแยกไฟล์ PEM คีย์สาธารณะและไพรเวต:

แยกคีย์ส่วนตัวในรูปแบบ PFX เป็นไฟล์ PEM:

openssl pkcs12 -in filename.pfx -nocerts -out key.pem

ส่งออกใบรับรอง (รวมถึงคีย์สาธารณะเท่านั้น):

openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem

ลบรหัสผ่าน (ถอดความ) จากคีย์ส่วนตัวที่แยกออกมา (ไม่บังคับ):

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