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

ทำการตรวจสอบทั้งห้าข้อด้านล่างตามลำดับ และหยุดที่ข้อแรกที่ไม่ผ่าน เพราะการตรวจสอบถัดไปทุกข้อถือว่าข้อก่อนหน้าถูกต้อง

ตรวจสอบว่าองค์ประกอบใดเป็นผู้ตัดสินใจรับ

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

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

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

ตรวจสอบว่ารายการถูกเซ็นสำหรับผู้ออกใด

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

ยืนยันการจับคู่ก่อนแตะเดมอน ผู้ออกบนใบรับรองต้องตรงกับ subject ของรายการ:

openssl x509 -in client.crt -noout -issuer -serial
openssl crl  -in intermediate.crl -noout -issuer -lastupdate -nextupdate

เมื่อทั้งสองมาจาก CA เดียวกัน หมายเลขซีเรียลที่พิมพ์สำหรับใบรับรองคือค่าที่ต้องปรากฏในรายการ ถ้าไม่ตรงกัน คุณถือ CRL ผิดหรือสำเนาผิดของมัน

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

ตรวจสอบว่าหมายเลขซีเรียลอยู่ในสำเนาที่เดมอนโหลด

การเพิกถอนเขียนรายการลงฐานข้อมูล CA และการสร้างใหม่เขียนไฟล์ใหม่ ทั้งสองอย่างไม่ไปถึงเดมอนที่กำลังทำงานซึ่งโหลดสำเนาเก่าตอนเริ่มทำงาน ดัมปรายการและค้นหาหมายเลขซีเรียล:

openssl crl -in intermediate.crl -noout -text | grep -i -A2 'Serial Number'
openssl ca -revoke client.crt
openssl ca -gencrl -out intermediate.crl

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

ตรวจสอบนโยบายสำหรับรายการที่หายไปหรือหมดอายุ

นี่คือการตัดสินใจที่หลายการติดตั้งไม่เคยทำอย่างชัดเจน และเป็นตัวกำหนดว่าการเพิกถอนปกป้องคุณหรือล็อกทุกคนออก Fail-closed หมายความว่าเมื่อไม่มีข้อมูลการเพิกถอนที่ใช้ได้จะเกิดการปฏิเสธ Fail-open หมายความว่าผู้ตรวจสอบดำเนินการต่อโดยไม่มีข้อมูลนั้น strongSwan เปิดเผยทางเลือกเป็น strictcrlpolicy OpenVPN ด้วย crl-verify ปฏิเสธที่จะเริ่มบนไฟล์ที่อ่านหรือแยกวิเคราะห์ไม่ได้ และรายการที่หมดอายุจะปรากฏเป็นข้อผิดพลาดการตรวจสอบ TLS เกี่ยวกับ CRL ที่หมดอายุ แทนที่จะเป็นการยอมรับอย่างเงียบ

State of the revocation dataFail-closed resultFail-open result
List missing or unreadableVerification fails, so expect an outageEvery client connects, including the revoked one
List past nextUpdateValidation errors until a fresh list is deployedOld status is trusted indefinitely
Revoked serial present in the loaded listHandshake rejected for that certificateHandshake rejected for that certificate

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

ตรวจสอบเซสชันที่ใช้งานอยู่ แล้วจึงตรวจสอบสำเนาของคีย์

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

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

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

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