คุณติดตั้งชุด 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 ผิดชุด

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

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