ตัวอักษรในการอธิบาย RSA เป็นชื่อฟิลด์ภายในวัตถุเดียว ไม่ใช่ไฟล์ที่เครื่องมือ PKI แจกจ่าย ไฟล์คีย์ส่วนตัวมีโครงสร้างที่ฟิลด์แรกเป็นข้อมูลสาธารณะและฟิลด์หลังต้องไม่ออกจากเครื่องที่สิ้นสุดอุโมงค์เลย คำถามเชิงปฏิบัติส่วนใหญ่ว่าไฟล์ใดตอบคำถามใดนั้นอยู่ระหว่างข้อเท็จจริงสองข้อนี้ คู่มือนี้จะอ่านโครงสร้างก่อน แล้วจึงอ่านคำสั่งที่ตรวจสอบโดยไม่ทำหก

ยืนยันว่าคีย์เป็น RSA ก่อนตามหาจำนวนเฉพาะ

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

คำสั่งอ่านอย่างเดียวสามคำสั่งนี้ตอบคำถามและบันทึกเวอร์ชันของเครื่องมือ

openssl version
openssl x509 -in vpn-client.crt -noout -text
openssl pkey -in vpn-client.key -noout -text

เวอร์ชันสำคัญเพราะชื่อตัวเลือกย้ายไปมาระหว่างรุ่นหลัก ในเอาต์พุตของใบรับรองให้หาบรรทัดอัลกอริทึมคีย์สาธารณะและขนาดคีย์ ในเอาต์พุตของคีย์ คีย์ RSA จะพิมพ์มอดุลัสและเลขชี้กำลังสาธารณะ คีย์บนเส้นโค้งวงรีจะพิมพ์ชื่อเส้นโค้งแทน และไม่มีการค้นหาใดจะได้ n หรือ q จากมัน

อ่านโครงสร้างแทน base64

PEM คือ base64 ที่ห่อด้วยบรรทัดหัวเรื่อง และการถอดรหัสจะได้ DER ซึ่งเป็นโครงสร้างแบบอนุกรม ไม่ใช่จำนวนเต็มมหึมาหนึ่งจำนวน คีย์ส่วนตัว RSA เดินทางในคอนเทนเนอร์ทั่วไปสองแบบคือ PKCS#1 และ PKCS#8 และทั้งคู่คลี่ออกมาเป็นชุดตัวเลขเดียวกัน

ในกรณีที่มีจำนวนเฉพาะสองจำนวน โครงสร้างส่วนตัวพกฟิลด์เก้าฟิลด์ คือเวอร์ชัน มอดุลัส n เลขชี้กำลังสาธารณะ e เลขชี้กำลังส่วนตัว d จำนวนเฉพาะ p และ q เลขชี้กำลัง CRT สองตัว และสัมประสิทธิ์ CRT หนึ่งตัว RFC 8017 ส่วน A.1 กำหนดองค์ประกอบเหล่านี้และผัง ASN.1 และยังอนุญาตให้มีจำนวนเฉพาะมากกว่าสองจำนวน ด้วยเหตุนี้ตัวแยกวิเคราะห์ทั่วไปจึงอาจพิมพ์รายการจำนวนเฉพาะเพิ่มเติม สังเกตลำดับ เพราะมันอธิบายข้อผิดพลาดที่พบบ่อย ครึ่งสาธารณะถูกเก็บไว้ในไฟล์ส่วนตัว ดังนั้นการมีฟิลด์สาธารณะไม่ได้ทำให้ไฟล์นั้นปลอดภัยที่จะแชร์ ทุกอย่างหลังจากนั้นคือวัสดุที่ต้องอยู่บนโฮสต์

การเข้ารหัสเพิ่มชั้นที่สับสนกับเนื้อหาได้ง่าย openssl asn1parse วาดโครงสร้างเป็นต้นไม้เพื่อให้เห็นลำดับฟิลด์ และมันไม่ถอดรหัสสิ่งใดและไม่บอกว่าคีย์ใช้งานได้หรือไม่

จับคู่ใบรับรองกับคีย์โดยไม่พิมพ์คีย์

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

openssl pkey -in vpn-client.key -pubout -out /tmp/key.pub
openssl x509 -in vpn-client.crt -pubkey -noout > /tmp/cert.pub
cmp /tmp/key.pub /tmp/cert.pub && echo MATCH

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

รู้ว่าไฟล์ข้างเคียงไม่ใช่อะไร

ใบรับรองไม่ใช่คีย์สาธารณะที่เข้ารหัสไว้ซึ่งอีกฝ่ายไขด้วยใบรับรอง CA มันคือพันธะที่ลงนามระหว่างคีย์สาธารณะกับข้อมูลระบุตัวตน คีย์ลงนามส่วนตัวของ CA แยกจากใบรับรองของตัวเองและจากคีย์ของไคลเอนต์ทุกตัว คำขอเองก็ไม่ใช่ใบรับรอง มันพกข้อมูลที่ขอและคีย์สาธารณะพร้อมลายเซ็นเหนือคำขอ ซึ่งทำให้มันเป็นข้อมูลนำเข้าสำหรับลงทะเบียน ไม่ใช่หลักฐานสิทธิ

FileAnswersDoes not prove
vpn-client.keyPossession of the private keyThat the identity is enrolled
vpn-client.crtA signed binding of public key to identityThat the client holds the matching key
vpn-client.csrThe requested binding and public keyThat access was granted
dh2048.pemGroup parameters for key exchangeAny RSA component
crl.pemRevocation status for certificatesAnything about a private key

สองรายการในนั้นสับสนกับพารามิเตอร์ RSA บ่อยพอที่จะต้องเอ่ยชื่อสองครั้ง ไฟล์พารามิเตอร์ Diffie-Hellman มีพารามิเตอร์กลุ่มสำหรับการสร้างคีย์และไม่มีจำนวนเฉพาะ RSA แม้จะพิมพ์ออกมาเป็นจำนวนเฉพาะขนาดใหญ่ด้วย ใบเพิกถอนเผยแพร่สถานะของใบรับรองและไม่ใช่ที่ที่เลขชี้กำลังส่วนตัวจะซ่อนได้

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

บันทึกการจับคู่ แล้วตรวจสอบแฮนด์เชก

ก่อนแก้ไขสิ่งใด ให้บันทึกเอาต์พุตของการตรวจสอบพร้อมวันที่และเวอร์ชัน OpenSSL จากนั้นการหมุนเวียนในภายหลังจะเทียบกับหลักฐานได้ ไม่ใช่กับความจำ

openssl verify -CAfile ca.crt vpn-client.crt
openssl x509 -in vpn-client.crt -noout -subject -issuer -dates

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

สำหรับการย้อนกลับ ให้เก็บคีย์และใบรับรองชุดก่อนหน้าไว้ในไดเรกทอรีที่ลงวันที่และกู้คืนทั้งสองอย่างพร้อมกัน ไม่ใช่เพียงอย่างเดียว คีย์ที่ไม่มีใบรับรองและใบรับรองที่ไม่มีคีย์ล้มเหลวเหมือนกันจากภายนอก ซึ่งทำให้คู่ที่กู้คืนครึ่งเดียวแกะออกได้ยากและแพงตอนตีสอง

บทความที่เกี่ยวข้อง