ใบรับรอง VPN ที่ถูกเพิกถอนยังเชื่อมต่ออยู่หรือไม่? ตรวจสอบการบังคับใช้ CRL
ใบรับรองที่ถูกเพิกถอนยังเชื่อมต่อได้เมื่อ CRL ไม่เคยไปถึงผู้ตรวจสอบ ตรวจสอบตามลำดับนี้ ผู้ออก หมายเลขซีเรียลที่โหลด พฤติกรรมการโหลดใหม่ และเซสชันที่ใช้งานอยู่
คุณเพิกถอนใบรับรอง สร้างรายการใหม่ แล้วโปรไฟล์เก่ายังคงสร้างอุโมงค์ การเพิกถอนเองไม่ได้เสียหาย 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 data | Fail-closed result | Fail-open result |
|---|---|---|
| List missing or unreadable | Verification fails, so expect an outage | Every client connects, including the revoked one |
List past nextUpdate | Validation errors until a fresh list is deployed | Old status is trusted indefinitely |
| Revoked serial present in the loaded list | Handshake rejected for that certificate | Handshake rejected for that certificate |
ไม่ว่าคุณจะเลือกทิศทางใด การทำงานอัตโนมัติสำคัญกว่าการเลือก งานที่สร้าง CRL ใหม่ก่อน nextUpdate และการแจ้งเตือนเมื่อสำเนาที่ติดตั้งไว้เก่าขึ้น ช่วยไม่ให้นโยบายใดกลายเป็นเหตุการณ์ การตรวจสอบออนไลน์ด้วย OCSP ย้ายความสดใหม่ไปที่ผู้ตอบ แต่กฎเดียวกันยังใช้ เพราะผู้ตรวจสอบที่ไม่ได้กำหนดค่าให้ตรวจคำตอบไม่ได้เปลี่ยนอะไร
ตรวจสอบเซสชันที่ใช้งานอยู่ แล้วจึงตรวจสอบสำเนาของคีย์
การเพิกถอนถูกประเมินระหว่างการตรวจสอบใบรับรอง ซึ่งเกิดขึ้นเมื่อเชื่อมต่อและเมื่อเจรจาใหม่ เซสชันที่สร้างแล้วจะดำเนินต่อไปจนกว่าจะเจรจาใหม่ และค่าเริ่มต้นของ OpenVPN คือชั่วโมงละครั้งด้วย reneg-sec 3600 ถ้าบุคคลนั้นต้องออกจากเครือข่ายตอนนี้ ให้สิ้นสุดเซสชันควบคู่กับการเผยแพร่รายการ แล้วยืนยันว่าการเชื่อมต่อใหม่ถูกปฏิเสธ
แยกข้อมูลรับรองออกจากสำเนาของมัน การลบโปรไฟล์บนแล็ปท็อปเครื่องหนึ่งไม่ได้หยุดสำเนาอื่นของคีย์ส่วนตัวเดียวกันจากการพิสูจน์ตัวตน การเพิกถอนคือสิ่งที่ทำให้ทุกสำเนาไร้ประโยชน์ และเกิดขึ้นได้ก็ต่อเมื่อการตรวจสอบก่อนหน้าถูกต้อง ให้ใบรับรองของตัวเองแก่อุปกรณ์ทดแทน เพื่อให้เพิกถอนอันหนึ่งได้โดยไม่แตะอีกอัน
ก่อนจะเรียกว่าเสร็จ องค์ประกอบที่ตรวจสอบถูกระบุแล้ว ผู้ออกของรายการตรงกับผู้ออกของใบ หมายเลขซีเรียลที่ถูกเพิกถอนอยู่ในสำเนาที่เดมอนโหลดจริง นโยบายสำหรับรายการที่หายไปหรือหมดอายุเป็นเจตนาและถูกเฝ้าติดตาม และเซสชันที่ใช้งานอยู่ถูกสิ้นสุดแทนที่จะรอ รูปแบบที่อยู่เบื้องหลังทั้งหมดนี้ระบุไว้ใน RFC 5280