ตามความคิดเห็นของคุณ ฉันกำลังตอบโดยทั่วไป เนื่องจากเราไม่สามารถพูดคุยรายละเอียดเฉพาะจากการติดตั้งจริงได้
เมื่อโปรแกรมบน Linux เช่น rsyslog ใช้ TLS โดยทั่วไปแล้วโปรแกรมจะสร้าง (เชื่อมโยงกับ) ไลบรารี TLS มาตรฐาน เช่น OpenSSL หรือ GnuTLS ไลบรารีเหล่านี้เข้าถึงที่เก็บใบรับรอง (ไฟล์ ไดเร็กทอรีของไฟล์ หรือฐานข้อมูล) ค้นหาใบรับรองที่เหมาะสมในร้านค้า สร้างห่วงโซ่ใบรับรอง และดำเนินการตรวจสอบใบรับรองเซิร์ฟเวอร์ (ด้วยความช่วยเหลือจากไลบรารีการเข้ารหัสลับและไลบรารีอื่นๆ)
คำสั่งเช่น DefaultNetstreamDriverCAFile="/etc/ssl/cert.pem"
กำลังส่งเส้นทางของที่เก็บใบรับรองที่ต้องการ (ไฟล์) ไปยังไลบรารี TLS นั้น (ระบบสามารถมีที่เก็บใบรับรองได้หลายที่)ดังนั้นเมื่อคุณไม่ได้แสดงความคิดเห็นในบรรทัดนั้น rsyslog จะบอกให้ไลบรารี TLS ใช้ไฟล์ข้อความนั้น ซึ่งมีใบรับรองรูปแบบ PEM อย่างน้อยหนึ่งรายการ
หากคุณแสดงความคิดเห็นในบรรทัดนั้น สิ่งที่เกิดขึ้นจะขึ้นอยู่กับไลบรารี TLS พื้นฐาน หากไลบรารีถูกสร้างขึ้นด้วยที่เก็บใบรับรองเริ่มต้น ไลบรารีจะยังคงดำเนินการต่อรอง TLS ได้ ตัวอย่างเช่น ในกล่อง Ubuntu 20 ของฉัน โปรแกรมที่ใช้ไลบรารี GnuTLS จะเชื่อมโยงกับ /usr/lib/x86_68-linux-gnu/libgnutls.so
. ไฟล์ไลบรารีวัตถุที่ใช้ร่วมกันนั้นถูกคอมไพล์ด้วยพาธที่เก็บใบรับรองดีฟอลต์ของ /etc/ssl/certs/ca-certificates.crt
-- ที่เก็บใบรับรองไฟล์ข้อความซึ่งเป็นตำแหน่งมาตรฐานสำหรับระบบปฏิบัติการ Ubuntu คุณสามารถดูเส้นทางฮาร์ดโค้ดนี้ได้หากคุณรันคำสั่ง:
สตริง /usr/lib/x86_68-linux-gnu/libgnutls.so | ใบรับรอง grep
.
ดังนั้นหากฉันต้องเรียกใช้ rsyslog ที่เชื่อมโยงกับ GnuTLS ด้วยบรรทัด DefaultNetstreamDriverCAFile ที่แสดงความคิดเห็นเหมือนกัน ก็จะใช้พาธแบบฮาร์ดโค้ดไปยังที่เก็บใบรับรอง และ rsyslog ก็สามารถดำเนินการเจรจา TLS ให้เสร็จสมบูรณ์ได้
นี่น่าจะเป็นสิ่งที่เกิดขึ้นกับระบบของคุณ และเหตุใดข้อความที่คุณเห็นจึงเป็นเพียงระดับ "คำเตือน" โปรแกรม rsyslog ไม่ทราบว่าไลบรารี TLS พื้นฐานมีค่าเริ่มต้นหรือไม่ ดังนั้น rsyslog จึงเขียนขึ้นเพื่อเตือนคุณและดำเนินการต่อ หากไม่มีที่เก็บใบรับรองในไลบรารี TLS พื้นฐาน โค้ดนั้นจะส่งคืนข้อความแสดงข้อผิดพลาดร้ายแรงไปยัง rsyslog และ rsyslog จะส่งต่อ/บันทึกข้อความไปยังผู้ใช้