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

ระบุใบรับรอง ไม่ใช่ตัวบุคคล

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

openssl x509 -in client.crt -noout -serial -issuer -subject -dates
openssl crl -in ca.crl -noout -text | head -40

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

การตรวจพฤติกรรมอย่างรวดเร็วยืนยันสถานะโดยไม่เปลี่ยนแปลงอะไร:

openssl verify -crl_check -CAfile ca.crt -CRLfile ca.crl client.crt

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

ตรวจสอบว่า CA ใช้การพักหรือการเพิกถอนถาวร

RFC 5280 กำหนดให้ certificateHold เป็นสถานะชั่วคราว และ removeFromCRL เป็นสัญญาณที่ปลดปล่อยมัน วัฏจักรชีวิตนั้นเป็นจริง แต่ไม่ใช่ปุ่มundoทั่วไป การอ่านรหัสเหตุผลบอกคุณว่าผู้ออกเคยตั้งใจสนับสนุนการปลดปล่อยหรือไม่

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

CA ที่ใช้ OpenSSL แสดงข้อจำกัดนี้ คำสั่ง ca ยอมรับค่า -crl_reason รวมถึง certificateHold และ removeFromCRL แต่ไม่สร้าง CRL แบบเดลต้า — เอกสาร OpenSSL CA ระบุข้อจำกัดนั้นสำหรับผลลัพธ์ CRL ของมัน CRL แบบเต็มที่เพียงละเว้นหมายเลขซีเรียลเป็นรูปแบบการเผยแพร่ที่ต่างจากเดลต้าที่บอกว่า "รายการนี้ถูกปลดปล่อย" ดังนั้นการวาง removeFromCRL ลงใน CA VPN ที่ใช้ OpenSSL จึงไม่ได้สร้างการปลดปล่อยตามที่มาตรฐานกำหนด

ถ้าคีย์อาจถูกเปิดเผย ให้เปลี่ยนมัน

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

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

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

ถ้าเป็นความผิดพลาดทางการบริหาร ให้เปลี่ยนภายใต้การควบคุม

เมื่อการเพิกถอนผิดไปเฉย ๆ และคีย์ไม่เคยถูกเปิดเผย การซ่อมยังเป็นการเปลี่ยนแบบควบคุมไม่ใช่การแก้ไข ใช้กระบวนการที่ได้รับการสนับสนุนของผู้ออก รักษาหมายเลขซีเรียลและประวัติการออกใบให้ครบถ้วน และหลีกเลี่ยงทางลัดที่น่าดึงดูดสองทาง: การพลิกอักขระสถานะใน index.txt จาก R กลับเป็น V และการลบแถวการออกใบเพื่อให้ใบรับรองใหม่ใช้หมายเลขซีเรียลซ้ำได้

บน CA OpenSSL ฐานข้อมูลแยกด้วยแท็บและอ่านผิดได้ง่าย ซึ่งทำให้การแก้ไขด้วยมือน่าดึงดูด:

awk -F'\t' '$1=="R" {print $4, $3, $6}' index.txt

อ่านมัน อย่าเขียนมัน การแก้ไขไฟล์เปลี่ยน CRL ถัดไปโดยไม่มีร่องรอยการตรวจสอบใด ๆ และสำเนา CA หรือข้อมูลสำรองใดที่ยังเก็บแถวเดิมไว้จะขัดแย้งกับมันในภายหลัง

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

ยืนยันการรับเข้าใหม่และเก็บบันทึก

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

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

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

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