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

การทำไฟล์หายไม่ใช่การทำบันทึกของ CA หาย

Easy-RSA PKI เก็บใบรับรองสาธารณะที่ออกไว้ และรุ่นปัจจุบันยังเก็บสำเนาตามซีเรียลในไดเรกทอรี certs_by_serial ของ PKI ไม่จำเป็นต้องใช้กุญแจส่วนตัวในการเพิกถอน สิ่งสำคัญคือใบรับรองที่แน่นอนซึ่ง CA ลงนาม และ CA มีอยู่แล้ว

ทำงานบนสำเนาสำรองของ PKI ที่ถูกต้อง ร่วมกับผู้ดูแลที่เป็นเจ้าของ การเพิกถอนเป็นการดำเนินการที่ตรวจสอบได้ ไม่ใช่การซ่อมแซมฐานข้อมูลการผลิตตอนเที่ยงคืน

สำเนาใบรับรองสาธารณะแบบฝังในของไคลเอนต์ก็ใช้ได้ หากการติดตั้งเก็บไว้หนึ่งฉบับ

อ่านผู้ออกและซีเรียลก่อน

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

จับคู่ค่ากับบันทึกของ CA และกับอุปกรณ์หรือบุคคลที่คุณเชื่อว่าถือใบรับรองนั้น

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

เหตุใดการเพิกถอนใบรับรองใหม่จึงไม่เกิดผล

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

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

ข้อผิดพลาดทั้งสองมาจากการปฏิบัติต่อชื่อในฐานะตัวตน

เพิกถอนใบรับรองที่ซีเรียลระบุ

ระบุวัตถุก่อนแตะ CA: openssl x509 -in recovered-client.pem -noout -issuer -serial -subject -dates พิมพ์ค่าทั้งสี่ในการรันครั้งเดียว และซีเรียลคือสิ่งที่คุณจับคู่กับคลังของ CA Easy-RSA เก็บคลังนั้นไว้ใต้ pki/certs_by_serial โดยมีไฟล์หนึ่งไฟล์ต่อซีเรียล คำสั่งเพิกถอนรับชื่อทั่วไปไม่ใช่ซีเรียล ดังนั้นคัดลอกไฟล์ที่เก็บไว้ไปยัง pki/issued/<common-name>.crt และให้ชื่อชี้ไปยังวัตถุที่คุณระบุ รัน easyrsa revoke <common-name> จากไดเรกทอรี PKI แล้วตรวจสอบว่าแถวที่ตรงกันใน index.txt เปลี่ยนเป็น R หรือไม่ ซีเรียลเป็นวิธีที่คุณเลือกวัตถุ ไม่ใช่อาร์กิวเมนต์ที่คำสั่งยอมรับ

openssl x509 -in recovered-client.pem -noout -issuer -serial -subject -dates
cp pki/certs_by_serial/A1B2C3D4.pem pki/issued/client-01.crt
./easyrsa revoke client-01
grep -n client-01 pki/index.txt
./easyrsa gen-crl

หาก index.txt ไม่แสดง R ให้หยุดและอ่านข้อผิดพลาดก่อนสร้าง CRL เพราะ CRL ที่สร้างจากบันทึกที่ยังใช้ได้จะไม่ถอนอะไรเลย หลังจากแถวเปลี่ยนแล้วเท่านั้นที่คุณรัน easyrsa gen-crl และไปต่อที่การแจกจ่ายไฟล์

เผยแพร่ CRL ในที่ที่ถูกบังคับใช้จริง

สร้าง CRL ใหม่ผ่านเวิร์กโฟลว์ที่รองรับของ PKI แล้วเผยแพร่ไปยังผู้ตรวจสอบทุกตัวที่บังคับใช้การเพิกถอนของผู้ออกนี้

ไฟล์ที่อัปเดตแล้วซึ่งวางอยู่บน CA ไม่เปลี่ยนอะไร เพราะ VPN ตัดสินใจจบที่ผู้ตรวจสอบของตัวเอง ตรวจสอบผู้ออกของ CRL ช่วงเวลาที่ใช้ได้ และซีเรียลที่ถูกเพิกถอน และยืนยันว่าบริการโหลดไฟล์ใหม่แทนที่จะแคชไฟล์ก่อนหน้า ความเป็นเจ้าของและเส้นทางสำคัญพอๆ กับเนื้อหา: CRL ที่ดีมอนอ่านไม่ได้ก็แยกไม่ออกจากไม่มี CRL เลย ตัวเลือก crl-verify ของ OpenVPN ระบุไฟล์ที่ดีมอนอ่าน ดังนั้นตรวจสอบเส้นทางนั้นและความเป็นเจ้าของไฟล์ในการกำหนดค่าเซิร์ฟเวอร์

ตรวจสอบด้วยความพยายามเชื่อมต่อจริง ไม่ใช่ด้วยเวลาของไฟล์

รู้ว่าเมื่อใด CRL เป็นเครื่องมือผิด

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

การแก้ไขฐานข้อมูลการออกด้วยมือเพื่อพลิกตัวอักษรสถานะไม่ใช่สิ่งทดแทนการเพิกถอนที่ลงนาม และทำให้ CRL ไม่สอดคล้องกับบันทึก

เก็บซีเรียล CRL และขั้นตอนการแจกจ่ายไว้ในบันทึกเดียว แล้วการตรวจสอบครั้งต่อไปจะกลายเป็นการอ่าน โครงการ Easy-RSA จัดทำเอกสารคำสั่งที่รองรับสำหรับรุ่นที่คุณติดตั้ง และนี่คืออินเทอร์เฟซเดียวที่ควรค่าแก่การปฏิบัติตาม

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