บริการ systemd เข้าถึงพร็อกซีได้ แต่อ่านไฟล์ CA ไม่ได้
ตรวจสิทธิ์ไฟล์ของผู้ใช้บริการและข้อจำกัดระบบไฟล์ของ systemd เมื่อการตั้งค่าใบรับรองพร็อกซีทำงานเฉพาะในเชลล์โต้ตอบ
คุณติดตั้งชุด CA ที่อนุมัติแล้ว และคำขอทำงานในเทอร์มินัล แต่บริการยังรายงานข้อผิดพลาดโหลดใบรับรอง ก่อนเปลี่ยน IP พร็อกซี ให้ดูว่าโปรเซสนั้นเปิดไฟล์เดียวกันได้หรือไม่
บริการอาจทำงานด้วยผู้ใช้ Unix คนอื่น เริ่มในไดเรกทอรีอื่น หรือเห็นระบบไฟล์ที่จำกัด พาธที่ใช้ได้ในเซสชันล็อกอินของคุณไม่ได้ใช้ได้กับบริการโดยอัตโนมัติ
เริ่มจากพาธแบบเต็ม
ตรวจพาธที่ตั้งในไคลเอนต์จริง เช่น --cacert ของ curl เลือกชุด CA ของปลายทาง ส่วนพร็อกซี HTTPS มีตัวเลือก CA ของพร็อกซีแยกต่างหาก ไคลเอนต์อื่นใช้คีย์การตั้งค่าหรือตัวแปรสภาพแวดล้อมของตน
ตรวจทั้งไฟล์และไดเรกทอรีระหว่างทาง:
namei -l /home/alex/certs/approved-ca.pem
systemctl show example.service -p User -p Group -p ProtectHome -p RootDirectory
นี่เป็นตัวอย่างวินิจฉัย ไม่ใช่คำสั่งให้ทุกคนเขียนไฟล์ได้ สิทธิ์ผ่านไดเรกทอรีสำคัญพอ ๆ กับสิทธิ์อ่านไฟล์สุดท้าย
สิทธิ์อาจไม่ใช่ปัญหาทั้งหมด
เมื่อใช้ ProtectHome=yes systemd ทำให้ตำแหน่งโฮมไดเรกทอรีมาตรฐานเข้าถึงไม่ได้จากบริการนั้น การเปลี่ยนโหมดไฟล์ใบรับรองไม่ยกเลิกข้อจำกัดเนมสเปซ ไดเรกทอรีรากที่ตั้งไว้ก็อาจเปลี่ยนสิ่งที่พาธเต็มอ้างถึงภายในบริการ
ใช้ตำแหน่งการตั้งค่าบริการที่เหมาะสม เช่น ไดเรกทอรีใต้ /etc สำหรับแอปนั้น และให้สิทธิ์อ่านเท่าที่จำเป็น เปลี่ยนพาธ CA ของไคลเอนต์ไปที่นั่น อย่าถอดข้อจำกัดระบบไฟล์ที่ไม่เกี่ยวข้องเพียงเพราะสำเนาแรกอยู่ในโฮมส่วนตัว
อ่านข้อผิดพลาดแรกที่มีประโยชน์
«โหลดไฟล์ CA ไม่ได้» กับ «สายโซ่ใบรับรองไม่เป็นที่เชื่อถือ» เป็นปัญหาคนละอย่าง ข้อแรกอาจเกิดก่อนที่ไคลเอนต์จะยืนยันอะไรได้ ข้อหลังอาจหมายถึงชุดที่อ่านได้มีผู้ออกผิดราย หรือถูกใช้กับการเชื่อมต่อ TLS ผิดชุด
หลังแก้การเข้าถึง ให้ทดสอบจากบริบทของบริการอีกครั้ง คำสั่งเทอร์มินัลที่สำเร็จยังเป็นข้อมูลเปรียบเทียบที่มีประโยชน์ แต่ไม่พิสูจน์ว่าบริการเห็นไฟล์ใดหรือไคลเอนต์ใช้การตั้งค่าความเชื่อถือใด