ฉันมีไฟล์ PKCS12 ที่มีห่วงโซ่ใบรับรองแบบเต็มและรหัสส่วนตัว ฉันจำเป็นต้องแบ่งไฟล์ออกเป็น 3 ไฟล์สำหรับแอปพลิเคชัน 3 ไฟล์ที่ฉันต้องการมีดังนี้ (ในรูปแบบ PEM):
- ไฟล์คีย์ที่ไม่มีการเข้ารหัส
- ไฟล์ใบรับรองไคลเอ็นต์
- ไฟล์ใบรับรอง CA (รูทและสื่อกลางทั้งหมด)
นี่เป็นงานทั่วไปที่ฉันต้องทำดังนั้นฉันจึงกำลังมองหาวิธีที่จะทำสิ่งนี้โดยไม่ต้องมีการแก้ไขเอาต์พุตเอง
ฉันพยายามต่อไปนี้:
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>
วิธีนี้ใช้ได้ผลดี แต่ผลลัพธ์มีคุณสมบัติถุงซึ่งแอปพลิเคชันไม่ทราบวิธีจัดการ
หลังจากการค้นหาบางอย่างฉันพบวิธีแก้ปัญหาที่แนะนำในการส่งผลลัพธ์ผ่าน x509 เพื่อตัดคุณลักษณะถุง
openssl x509 -in <clientcert.cer> -out <clientcert.cer>
ทำงานได้ แต่ฉันพบปัญหาในไฟล์ cacert ไฟล์ที่ส่งออกมีเพียงหนึ่งใน 3 certs ในห่วงโซ่
มีวิธีใดที่จะหลีกเลี่ยงการรวมแอ็ตทริบิวต์ bag ในเอาต์พุตของคำสั่ง pkcs12 หรือวิธีที่เอาต์พุตเอาท์พุต x509 รวมใบรับรองทั้งหมดหรือไม่? นอกจากนี้หากใช้งานผ่าน x509 เป็นทางออกที่ง่ายที่สุดมีวิธีที่จะส่งออกท่อจาก pkcs12 เป็น x509 แทนที่จะเขียนไฟล์สองครั้งหรือไม่?