OpenVPN client-config-dir: ชื่อไฟล์กับ CN ของใบรับรอง
ชื่อไฟล์ CCD มาจากชื่อสามัญของใบรับรอง หรือจากชื่อผู้ใช้เมื่อเปิดการแมปนั้น ควรเทียบกฎทั้งสองข้อก่อนเปลี่ยนชื่อไฟล์
มีสองชื่อที่เกี่ยวข้องก่อนไคลเอนต์จะเชื่อมต่อด้วยซ้ำ คือชื่อไฟล์บนแล็ปท็อป (nuc.ovpn) และตัวตนที่เซิร์ฟเวอร์สกัดจากข้อมูลรับรอง การค้นหาใน client-config-dir ใช้ชื่อที่สอง การเปลี่ยนชื่อโปรไฟล์ฝั่งไคลเอนต์ หรือการเติม .conf ให้ไฟล์ฝั่งเซิร์ฟเวอร์ ไม่ได้เปลี่ยนว่าเซิร์ฟเวอร์จะเปิดไฟล์ใด
การเปรียบเทียบที่มีประโยชน์ไม่ใช่ «ฉันใช้ชื่ออะไร» แต่เป็น «เซิร์ฟเวอร์ใช้กฎข้อใด» เพราะการยืนยันด้วยใบรับรองและการยืนยันด้วยชื่อผู้ใช้/รหัสผ่านอาจให้ชื่อที่มีผลต่างกันจากการเข้าสู่ระบบครั้งเดียวกัน
ชื่อโปรไฟล์กับชื่อสามัญของใบรับรอง
ในการตั้งค่าเริ่มต้นที่อิงใบรับรอง เซิร์ฟเวอร์จะใช้ชื่อสามัญ X.509 แล้วมองหาไฟล์ที่ชื่อตรงกันทุกตัวอักษรภายใน client-config-dir โปรไฟล์ชื่อ nuc.ovpn ที่ใบรับรองระบุ tester จะถูกแปลงเป็น /etc/openvpn/server/ccd/tester ชื่อไฟล์ฝั่งไคลเอนต์ไม่เคยถูกนำมาคำนวณ นี่คือจุดแรกที่ความไม่ตรงกันซ่อนอยู่
ไดเรกทอรีที่เต็มไปด้วยโปรไฟล์ซึ่งตั้งชื่ออย่างพิถีพิถันจึงอาจพลาดได้ทุกครั้ง ไฟล์ไม่ได้ถูกจับคู่ตาม subject ตามที่อยู่อีเมล หรือตามชื่อที่แสดงใน GUI แต่ถูกจับคู่ตามสตริงชื่อสามัญ
บนระบบไฟล์ที่แยกตัวพิมพ์ใหญ่เล็ก Tester และ tester เป็นไฟล์คนละไฟล์ และมีเพียงไฟล์เดียวที่ถูกเปิด ตรวจชื่อสามัญจากใบรับรองที่ไคลเอนต์นำมาเสนอจริง ไม่ใช่จากสำเนาในบันทึกของคุณ
username-as-common-name กลับกฎ
เมื่อเซิร์ฟเวอร์รันการยืนยันด้วยชื่อผู้ใช้/รหัสผ่านพร้อม username-as-common-name ชื่อผู้ใช้ที่ยืนยันแล้วจะแทนที่ชื่อสามัญของใบรับรองสำหรับการค้นหานี้
เทียบสองกรณีโดยตรง ในกรณีตัวตนจากใบรับรอง ไฟล์จะตามใบรับรองและการเปลี่ยนรหัสผ่านไม่เกี่ยวข้อง ในกรณีตัวตนจากชื่อผู้ใช้ ไฟล์จะตามชื่อเข้าสู่ระบบและการออกใบรับรองใหม่ไม่เกี่ยวข้อง ฟิลด์ใดที่เซิร์ฟเวอร์แทนที่ ค่านั้นคือฐานในการเปลี่ยนชื่อ ใบรับรองที่ออกใหม่ด้วย CN ใหม่จะเปลี่ยนเป้าหมายการค้นหาอย่างเงียบ ๆ และไฟล์ CCD เก่ายังคงอยู่บนดิสก์และดูเหมือนถูกต้อง
มีการตั้งค่าแบบผสม และความสับสนส่วนใหญ่เริ่มจากตรงนั้น หากบล็อกบริการหนึ่งเปิดการแทนที่และอีกบล็อกไม่เปิด ชื่อที่มีผลจะขึ้นกับว่าอินสแตนซ์ใดจัดการการเชื่อมต่อ ควรยืนยันการตั้งค่าที่ใช้งานจริงแทนการถือว่าไฟล์ส่วนกลางมีผล เอกสารอ้างอิงตัวเลือกเซิร์ฟเวอร์ต้นทางอธิบายการค้นหาตามชื่อไฟล์และการถอยกลับแบบเลือกได้
สิ่งที่เซิร์ฟเวอร์อ่าน และสิ่งที่มันข้ามไปอย่างเงียบ ๆ
ความต่างเล็ก ๆ สองข้อเป็นตัวกำหนดว่าจะเลือกไฟล์หรือไม่ ข้อแรกคือส่วนขยายที่ถูกเติมเข้าไป ข้อที่สองคืออักขระที่หลงเหลือในชื่อ
OpenVPN ไม่เติม .conf ให้ชื่อที่ค้นหา ดังนั้น tester.conf จึงไม่ตรงกับ tester โปรแกรมแก้ไขที่ซ่อนส่วนขยายอาจทิ้งไฟล์ที่ดูถูกต้องในรายการแต่ไม่ตรงกับใครเลย
เมื่อไม่มีไฟล์ที่ตรงกัน เซิร์ฟเวอร์อาจถอยไปใช้ไฟล์ชื่อ DEFAULT การที่การตั้งค่าบางอย่างมาถึงจึงไม่ใช่หลักฐานว่าไฟล์เฉพาะไคลเอนต์ถูกใช้ ให้เทียบที่อยู่ที่จัดสรรหรือเส้นทางที่ถูกดันกับสิ่งที่ไฟล์เฉพาะไคลเอนต์จะให้ สิทธิ์คือตัวกรองที่สาม เพราะเซิร์ฟเวอร์เปิดไฟล์หลังจากลดสิทธิ์แล้ว เชลล์ root ที่อ่านไฟล์ได้ไม่ได้พิสูจน์อะไร
ชื่อไฟล์ที่ถูกต้องไม่ได้ยืนยันเนื้อหา
การเลือกและเนื้อหาเป็นความล้มเหลวคนละเรื่อง เมื่อเปิดไฟล์ที่ถูกต้องแล้ว คำสั่งในไฟล์นั้นยังต้องใช้ได้กับไคลเอนต์รายนั้น
ifconfig-push ต้องกำหนดที่อยู่ที่โทโพโลยีใช้ได้จริง และ iroute มีความหมายเฉพาะกับซับเน็ตที่ถูกเราเตอร์อยู่หลังไคลเอนต์รายนั้น
ตัวตนเดียว อุปกรณ์หลายเครื่อง
แล็ปท็อปสองเครื่องที่เสนอชื่อสามัญเดียวกันจะเลือกไฟล์เดียวกันและได้รับการตั้งค่าเฉพาะไคลเอนต์ชุดเดียวกัน หากต้องการที่อยู่แยกกันหรือการเพิกถอนแยกกัน ต้องใช้ตัวตนแยกกัน ไม่ใช่สำเนาสองชุดของไฟล์เดียว
การเปรียบเทียบอยู่ระหว่างการแบ่งใช้ตัวตนกับการออกใบรับรองหนึ่งใบต่ออุปกรณ์ การแบ่งใช้นั้นดูแลง่ายกว่าและเพิกถอนได้หยาบกว่า ขณะที่ใบรับรองต่ออุปกรณ์ต้องเตรียมมากกว่าแต่ให้หน่วยที่สะอาดสำหรับปิดใช้งาน