ส่งออกใบรับรองจาก P12 โดยไม่ใช้กุญแจส่วนตัว
แพ็กเกจ PKCS12 เก็บกุญแจและใบรับรองไว้ด้วยกัน อ่านโครงสร้างก่อน แล้วเลือกใบรับรองด้วย -nokeys แทนการถอดการป้องกันออก
ตั๋วสนับสนุนถามว่าใบรับรองใดอยู่ภายในแพ็กเกจ VPN และปฏิกิริยาแรกคือส่งออกทุกอย่างแล้วแนบไปด้วย ไฟล์ P12 บรรจุใบรับรองและวัสดุกุญแจส่วนตัวไว้ในคอนเทนเนอร์เดียว ดังนั้นการส่งออกทุกอย่างจึงเป็นสิ่งที่คุณไม่ควรส่ง คำสั่งที่ตอบคำถามคือปัญหาการเลือก ไม่ใช่ปัญหาการแปลง สี่แฟล็กเป็นตัวกำหนดว่าคุณได้ครึ่งใดของคอนเทนเนอร์ และสองในนั้นฟังดูปลอดภัยกว่าที่เป็นจริง
เริ่มด้วยการอ่านคอนเทนเนอร์แทนที่จะทำให้มันว่าง
ไฟล์ PKCS12 บรรจุอะไรจริง ๆ
คอนเทนเนอร์ PKCS12 บรรจุใบรับรองหนึ่งใบหรือมากกว่า อาจมีกุญแจส่วนตัว และ message authentication code เหนือเนื้อหา ใบรับรองอาจรวมใบรับรองใบสำหรับตัวตนไคลเอนต์ของคุณและใบรับรองกลางที่เชื่อมมันกับ CA กุญแจ เมื่อมีอยู่ คือสิ่งที่ทำให้ไฟล์เป็นความลับไม่ใช่เอกสาร
ความแตกต่างนั้นคือเหตุผลที่ -nokeys มีอยู่ และเป็นเหตุผลที่มันคือแฟล็กที่งานนี้ต้องการ
อ่านแพ็กเกจโดยไม่เขียนกุญแจออกมา
รูปแบบการตรวจสอบ พิมพ์โครงสร้างและรายละเอียดอัลกอริทึมและไม่เขียนอะไรเลย: openssl pkcs12 -in client.p12 -info -noout มันขอรหัสผ่านสำหรับนำเข้า ซึ่งเป็นตำแหน่งที่ถูกต้องสำหรับค่านั้น และบอกคุณว่าไฟล์มีกุญแจหรือไม่ ใช้ -passin env:PKCS12_PASS เมื่อไม่สามารถพิมพ์รหัสผ่านได้ เพราะรหัสผ่านในคำสั่ง shell คือรหัสผ่านในรายการโปรเซส ขั้นตอนนี้ไม่ส่งออกอะไรเลย และนั่นคือประเด็นทั้งหมด
อ่านผลลัพธ์เพื่อดูสามอย่าง: มีใบรับรองกี่ใบ มีกุญแจหรือไม่ และอัลกอริทึมใดป้องกันมัน
ใช้ -nokeys และอย่าสับสนกับ -nocerts
-nokeys ตัดกุญแจส่วนตัวออกและเหลือใบรับรองไว้ -clcerts จำกัดสิ่งนั้นให้เหลือใบรับรองไคลเอนต์ -cacerts จำกัดให้เหลือใบรับรอง CA และสองตัวนี้เป็นตัวกรองไม่ใช่ทางเลือก -nocerts อ่านเหมือนการสะกดที่ปลอดภัยของแนวคิดเดียวกันและหมายถึงตรงกันข้าม: ไม่มีใบรับรอง ซึ่งเหลือเพียงกุญแจ การผสมมันเข้าไปในการส่งออกใบรับรองคือวิธีที่กุญแจส่วนตัวไปอยู่บนดิสก์
รูปแบบสองบรรทัดที่สร้างไฟล์ใบรับรองและไฟล์ CA และไม่มีอย่างอื่นคือ:
openssl pkcs12 -in client.p12 -nokeys -clcerts -out client-certificates.pem
openssl pkcs12 -in client.p12 -nokeys -cacerts -out ca-certificates.pemแพ็กเกจเก่าต้องการ -legacy บน OpenSSL 3 เพื่ออ่านการเข้ารหัสแบบเก่าของมัน และแฟล็กนั้นเปลี่ยนสิ่งที่ตัวแยกวิเคราะห์ยอมรับ ไม่ใช่สิ่งที่มันส่งออก หากการแยกวิเคราะห์ล้มเหลวด้วยข้อผิดพลาดเกี่ยวกับอัลกอริทึมที่ไม่รองรับ การเพิ่ม -legacy คือก้าวแรกที่ถูกต้อง และการข้ามการตรวจสอบ MAC ไม่ใช่
ตรวจผลลัพธ์ ไม่ใช่รหัสออก
สถานะออกเป็นศูนย์บอกว่าคำสั่งทำงาน ไม่ได้บอกว่าไฟล์มีสิ่งที่คุณคาดหวัง นับใบรับรองในผลลัพธ์และอ่าน subject กับวันที่: openssl x509 -in client-certificates.pem -noout -subject -dates -fingerprint เปรียบเทียบลายนิ้วมือกับสิ่งที่ทีมสนับสนุนคาดหวัง เพราะแพ็กเกจที่มีใบรับรองไคลเอนต์สองใบสร้างไฟล์ที่มีสองบล็อกและเครื่องมือส่วนใหญ่อ่านเพียงบล็อกแรก วัตถุประสงค์ ความไว้วางใจ และการตรงกันของกุญแจเป็นการทดสอบแยกอีกครั้ง
ใบรับรองที่แยกวิเคราะห์ได้คือใบรับรองที่แยกวิเคราะห์ได้ มันไม่ใช่ใบรับรองที่ VPN ยอมรับ
ตัดสินใจว่าคุณต้องการไฟล์หรือไม่
หากไคลเอนต์ที่รับนำเข้า PKCS12 โดยตรง การส่งแพ็กเกจต้นฉบับผ่านช่องทางที่อนุมัติโดยเก็บรหัสผ่านแยกไว้จะง่ายกว่าและรักษาการป้องกันไว้ การแยกออกมีไว้สำหรับการตรวจสอบ สำหรับไคลเอนต์ที่ต้องการ PEM หรือสำหรับเคสสนับสนุนที่ขออาร์ติแฟกต์เฉพาะ การแยกออกแต่ละครั้งลบหนึ่งชั้นและควรมีเหตุผล
ใบรับรองสาธารณะไม่มีกุญแจส่วนตัว แต่มีชื่อและรายละเอียดองค์กร แบ่งปันฟิลด์ที่ตั๋วขอแทนการแบ่งปันไฟล์ เว้นแต่ไฟล์คือสิ่งที่ถูกขอ