n, e, d, p และ q ของ RSA อยู่ที่ใดในไฟล์คีย์ VPN
n, e, d, p และ q อยู่ในโครงสร้างเดียว ไม่ใช่ในชื่อไฟล์ อ่านคีย์ RSA ของ VPN ด้วย OpenSSL แล้วจับคู่กับใบรับรองโดยไม่พิมพ์ความลับ
ตัวอักษรในการอธิบาย 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 แยกจากใบรับรองของตัวเองและจากคีย์ของไคลเอนต์ทุกตัว คำขอเองก็ไม่ใช่ใบรับรอง มันพกข้อมูลที่ขอและคีย์สาธารณะพร้อมลายเซ็นเหนือคำขอ ซึ่งทำให้มันเป็นข้อมูลนำเข้าสำหรับลงทะเบียน ไม่ใช่หลักฐานสิทธิ
| File | Answers | Does not prove |
|---|---|---|
| vpn-client.key | Possession of the private key | That the identity is enrolled |
| vpn-client.crt | A signed binding of public key to identity | That the client holds the matching key |
| vpn-client.csr | The requested binding and public key | That access was granted |
| dh2048.pem | Group parameters for key exchange | Any RSA component |
| crl.pem | Revocation status for certificates | Anything 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
หลังการเปรียบเทียบคีย์สาธารณะ ให้เดินเส้นทางที่ใช้คู่คีย์นั้น คือยกอุโมงค์ขึ้น ยืนยันว่าใบรับรองถูกนำเสนอและยอมรับ และตรวจว่าพอร์ทัลบันทึกตัวตนใดไว้ ถ้าคีย์และใบรับรองตรงกันแต่การพิสูจน์ตัวตนยังล้มเหลว แสดงว่าข้อบกพร่องอยู่ที่ความเชื่อถือ การแมปตัวตน หรือนโยบายการเข้าถึง ไม่ใช่ที่คู่คีย์
สำหรับการย้อนกลับ ให้เก็บคีย์และใบรับรองชุดก่อนหน้าไว้ในไดเรกทอรีที่ลงวันที่และกู้คืนทั้งสองอย่างพร้อมกัน ไม่ใช่เพียงอย่างเดียว คีย์ที่ไม่มีใบรับรองและใบรับรองที่ไม่มีคีย์ล้มเหลวเหมือนกันจากภายนอก ซึ่งทำให้คู่ที่กู้คืนครึ่งเดียวแกะออกได้ยากและแพงตอนตีสอง