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

การแยกกำหนดการสองอย่างออกจากกันคือการวินิจฉัยทั้งหมด และมันเปลี่ยนว่าการแก้ไขต้องเป็นแบบไหน

นาฬิกาสองเรือน และมีเพียงเรือนเดียวที่เป็นใบรับรอง

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

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

อ่านรายการที่บริการโหลดจริง

เริ่มจากคอนฟิกที่กำลังทำงาน ไม่ใช่จากไฟล์ที่คุณคาดไว้ พาธ crl-verify อาจเป็นแบบสัมบูรณ์ แบบอ้างอิงกับโปรไฟล์ หรือเป็นสำเนาที่ฝังอยู่ในอิมเมจ และผู้ตรวจสอบอ่านสำเนานั้น ตรวจดูที่เดิมด้วย openssl crl -in /etc/openvpn/crl.pem -noout -issuer -lastupdate -nextupdate แล้วเทียบวันที่กับนาฬิกาของเซิร์ฟเวอร์

จากนั้นยืนยันว่าไฟล์นั้นเป็นไฟล์ที่ใช้งานจริง ตรวจลายเซ็นด้วย openssl crl -in /etc/openvpn/crl.pem -CAfile /etc/openvpn/ca.crt -noout ซึ่งรายงานผลการตรวจสอบแทนที่จะพิมพ์ฟิลด์ออกมาอย่างเงียบ ๆ รายการที่เซ็นโดย CA อื่น หรือสำเนาเก่าที่ค้างอยู่ในไดเรกทอรีที่สอง ล้มเหลวเหมือนรายการที่หมดอายุทุกประการ

สร้างใหม่จากฐานข้อมูลการเพิกถอน ไม่ใช่ตั้งแต่ต้น

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

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

นำไปใช้ในที่ที่ผู้ตรวจสอบมอง

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

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

ทำให้กำหนดเส้นตายถัดไปมองเห็นได้ก่อนที่มันจะผ่านไป

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

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

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