ทำไมการคัดลอก ca.key ไปยังไคลเอนต์ VPN ทุกเครื่องจึงทำลาย CA
ไคลเอนต์ตรวจสอบใบรับรองสาธารณะของ CA และไม่เคยต้องใช้กุญแจที่ใช้ลงนาม การคัดลอก ca.key ไปยังทุกอุปกรณ์คือการมอบอำนาจออกใบรับรองให้ใครก็ตามที่หยิบสำเนาไปหนึ่งชุด
ที่ใดที่หนึ่งในคำแนะนำการติดตั้ง ไดเรกทอรีหนึ่งถูกคัดลอกทั้งก้อนไปยังแล็ปท็อปทุกเครื่อง เพราะทำเช่นนั้นง่ายกว่าการตัดสินใจว่าไฟล์ใดควรอยู่ที่นั่น ไดเรกทอรีนั้นมี ca.key อยู่ และในวินาทีที่มันไปถึงอุปกรณ์เครื่องที่สอง ผู้ออกใบรับรองก็ไม่ใช่ผู้มีอำนาจอีกต่อไป ทุกคนที่ถือมันไว้สามารถออกตัวตนที่เครือข่ายส่วนที่เหลือจะเชื่อถือได้
ความสับสนนี้ควรค่าแก่การคลี่คลายสักครั้ง เพราะไฟล์ทั้งสองดูคล้ายกันแต่ทำสิ่งที่ตรงกันข้าม
วัสดุสำหรับตรวจสอบและวัสดุสำหรับลงนาม
ไคลเอนต์ต้องมีใบรับรองสาธารณะของ CA เพื่อตรวจสอบว่าใบรับรองที่อีกฝ่ายนำเสนอได้รับการลงนามโดยผู้ออกใบรับรองนั้น การตรวจสอบเป็นงานที่ไม่ต้องใช้ความลับใด ๆ เลย ส่วนการลงนามในใบรับรองของอีกฝ่ายเป็นงานอีกอย่างหนึ่ง ซึ่งทำเพียงครั้งเดียวโดยผู้ดูแล CA ด้วยกุญแจส่วนตัวที่ไม่เคยออกจากที่จัดเก็บที่ได้รับการป้องกัน การแยกงานสองอย่างนี้ออกจากกันคือเหตุผลทั้งหมดของการส่งไฟล์สองไฟล์
ดังนั้น ca.crt จึงอยู่ในโปรไฟล์ และ ca.key ไม่ควรอยู่ใกล้มันเลย ชื่อไฟล์เป็นเพียงธรรมเนียมปฏิบัติ ไม่ใช่การรับประกัน จึงต้องตรวจสอบชนิดของไฟล์แทนการเดาจากชื่อ
สถาปัตยกรรมที่มี CA ระดับกลางหรือบริการออกใบรับรองออนไลน์ก็ไม่ใช่ข้อยกเว้น นี่คือวิธีมาตรฐานในการแยกความสามารถในการลงนามออกจากอุปกรณ์ปลายทาง ขณะที่ยังออกใบรับรองอุปกรณ์ในวงกว้าง
ไคลเอนต์ต้องพิสูจน์อะไรด้วยกุญแจของตนเอง
อุปกรณ์แต่ละเครื่องได้รับคู่กุญแจและใบรับรองของตนเอง ซึ่ง CA ลงนามเพียงครั้งเดียว ไคลเอนต์นำเสนอใบรับรองนั้นและพิสูจน์ว่าตนถือกุญแจส่วนตัวที่เข้าคู่กัน และเซิร์ฟเวอร์ตัดสินใจว่าจะยอมรับหรือไม่ นี่คือตัวตนที่ถูกเพิกถอนเมื่อแล็ปท็อปเครื่องหนึ่งหายไป
ความต่างนี้สำคัญที่สุดหลังการโจรกรรม เมื่อมีตัวตนแยกตามอุปกรณ์ ไคลเอนต์ที่ถูกเปิดเผยหนึ่งเครื่องจะถูกถอดออกด้วยการเพิกถอนหรือการนำอีกฝ่ายออก ส่วนที่เหลือยังทำงานต่อไป
กุญแจของผู้ออกใบรับรองที่รั่วไหลไม่อาจจัดการแบบนั้นได้ ใบรับรองทุกใบที่มันเคยลงนามหรืออาจลงนามได้กลายเป็นที่น่าสงสัย ดังนั้นการตอบสนองคือการเปลี่ยนความเชื่อถือทั้งชุด ไม่ใช่การเพิกถอนเพียงใบเดียว นี่คือโครงการ ไม่ใช่ตั๋วงาน
| File | Role | Belongs on |
|---|---|---|
ca.crt | Public certificate used to verify signatures | Every client profile |
ca.key | Private key that issues certificates | Protected CA storage only |
| client key pair | Proves one device's identity | That device alone |
อ่านไฟล์ก่อนคัดลอกไปที่ใด
คำสั่งสองคำสั่งบอกคุณว่ากำลังถือวัตถุชนิดใดโดยไม่พิมพ์ความลับใด ๆ คำสั่งแรกแสดงชื่อผู้ถือและแฟล็ก CA บนใบรับรอง คำสั่งที่สองตรวจสอบกุญแจและรายงานชนิดของมัน เรียกใช้ทั้งสองกับไฟล์ในชุดที่คุณกำลังจะแจกจ่าย สิ่งใดที่ตรวจสอบแล้วเป็นกุญแจส่วนตัวย่อมไม่อยู่ในไดเรกทอรีไคลเอนต์
openssl x509 -in ca.crt -noout -subject -ext basicConstraints openssl pkey -in ca.key -noout -check
หากคำสั่งที่สองสำเร็จบนไฟล์ที่อยู่ในชุดไคลเอนต์ ให้หยุดและถือว่าชุดนั้นถูกบุกรุก ผลลัพธ์ที่บอกว่ากุญแจใช้ได้ยังบอกด้วยว่ากุญแจนั้นมีอยู่ และการมีอยู่คือปัญหาทั้งหมด
สังเกตทิศทางตรงกันข้ามด้วย โปรไฟล์ไคลเอนต์มีกุญแจส่วนตัวของไคลเอนต์นั้นอยู่โดยชอบธรรม การลบทุกกุญแจที่พบจะตัดการเชื่อมต่อโดยไม่ปรับปรุงอะไร จึงต้องระบุชนิดของวัตถุก่อนจะนำออก
จำกัดความเสียหายของกุญแจที่แจกจ่ายไปแล้ว
อย่าคิดว่าการลบสำเนาในเครื่องจะย้อนการเปิดเผยได้ ใครก็ตามที่เคยถือไฟล์อาจคัดลอกไปแล้ว และสมมติฐานที่ปลอดภัยคือเขาทำเช่นนั้น ปฏิบัติตามกระบวนการรับมือเหตุการณ์ของผู้ดูแลและเปลี่ยนสมอความเชื่อถือ พร้อมออกใบรับรองอุปกรณ์ใหม่ภายใต้ CA ใหม่
จากนั้นจงเปลี่ยนวิธีจัดแพ็กเกจที่เป็นต้นเหตุ ส่งรายการไดเรกทอรีพร้อมรายการไฟล์ที่อนุญาตอย่างชัดเจน เก็บ กุญแจ CA ไว้บนเครื่องที่ไม่เคยเข้าร่วมกลุ่มไคลเอนต์ และบันทึกว่าระบบใดถือมันไว้
หากผู้ออกใบรับรองต้องออกบ่อย ให้ย้ายการลงนามไปไว้หลังบริการหรือผู้ออกระดับกลางที่มีขอบเขตแคบและอายุสั้น ด้วยวิธีนี้ความผิดพลาดในอนาคตจะเปิดเผยกุญแจบางส่วนของการออกใบรับรอง ไม่ใช่รากของความเชื่อถือทั้งระบบ