Theo nhận xét của bạn, tôi đang trả lời chung chung, vì chúng tôi không thể thảo luận chi tiết cụ thể từ cài đặt thực tế.
Khi một chương trình dựa trên Linux chẳng hạn như rsyslog sử dụng TLS, chương trình này thường được xây dựng với (được liên kết với) một thư viện TLS tiêu chuẩn như OpenSSL hoặc GnuTLS. Các thư viện này truy cập kho lưu trữ chứng chỉ (tệp, thư mục chứa tệp hoặc cơ sở dữ liệu), định vị các chứng chỉ thích hợp trong kho lưu trữ, xây dựng chuỗi chứng chỉ và thực hiện xác minh chứng chỉ máy chủ (với sự trợ giúp từ mật mã cơ bản và các thư viện khác).
Một tuyên bố như DefaultNetstreamDriverCAFile="/etc/ssl/cert.pem"
đang chuyển đường dẫn của kho lưu trữ chứng chỉ mong muốn (tệp) tới thư viện TLS đó (một hệ thống có thể có nhiều kho lưu trữ chứng chỉ).Vì vậy, khi bạn không nhận xét dòng đó, rsyslog sẽ yêu cầu thư viện TLS sử dụng tệp văn bản đó, chứa một hoặc nhiều chứng chỉ có định dạng PEM.
Nếu bạn nhận xét dòng đó, thì điều gì sẽ xảy ra tùy thuộc vào thư viện TLS bên dưới. Nếu thư viện được xây dựng với kho lưu trữ chứng chỉ mặc định thì thư viện vẫn có thể thực hiện thương lượng TLS. Ví dụ: trên hộp Ubuntu 20 của tôi, một chương trình sử dụng thư viện GnuTLS sẽ được liên kết với /usr/lib/x86_68-linux-gnu/libgnutls.so
. Tệp thư viện đối tượng dùng chung đó đã được biên dịch với đường dẫn lưu trữ chứng chỉ mặc định là /etc/ssl/certs/ca-certificates.crt
-- kho lưu trữ chứng chỉ tệp văn bản là vị trí tiêu chuẩn cho hệ điều hành Ubuntu. Bạn có thể thấy đường dẫn được mã hóa cứng này nếu bạn chạy lệnh:
chuỗi /usr/lib/x86_68-linux-gnu/libgnutls.so | chứng chỉ grep
.
Vì vậy, nếu tôi chạy rsyslog được liên kết với GnuTLS với cùng một dòng DefaultNetstreamDriverCAFile đã nhận xét, thì đường dẫn được mã hóa cứng đến kho lưu trữ chứng chỉ sẽ được sử dụng và rsyslog có thể hoàn tất quá trình thương lượng TLS.
Đây có thể là những gì đã xảy ra trên hệ thống của bạn và tại sao thông báo bạn thấy chỉ ở mức "cảnh báo". Chương trình rsyslog không biết liệu thư viện TLS bên dưới có mặc định hay không, vì vậy rsyslog được viết để cảnh báo bạn và tiếp tục. Nếu không có kho lưu trữ chứng chỉ nào cho thư viện TLS cơ bản, thì mã đó sẽ trả về thông báo lỗi nghiêm trọng cho rsyslog và rsyslog sẽ chuyển tiếp/ghi nhật ký thông báo cho người dùng.