Ứng dụng của tôi sử dụng SSL để liên lạc an toàn với máy chủ và gặp sự cố khi xác minh chuỗi chứng chỉ. Chuỗi trông như thế này:Gặp sự cố khi hiểu xác minh chuỗi chứng chỉ SSL
Entrust.net Máy Chủ Bảo Mật Certification Authority -> DigiCert toàn cầu CA -> * .ourdomain.com
Chúng tôi đang sử dụng một kho chứng chỉ kéo từ Mozilla. Nó chứa chứng chỉ Entrust.net, nhưng không chứa chứng chỉ DigiCert Global CA.
sự hiểu biết của tôi là một cơ quan trung gian không cần phải được tin cậy miễn là quyền người dùng root, nhưng việc xác minh thất bại:
% openssl verify -CAfile mozilla-root-certs.crt ourdomain.com.crt
error 20 at 0 depth lookup:unable to get local issuer certificate
Vì vậy, tôi cần phải tin tưởng một cách rõ ràng CA DigiCert toàn cầu trong đặt hàng để xác minh để vượt qua? Điều đó có vẻ sai. Nhưng bạn nói với tôi!
EDIT: Bây giờ tôi hiểu rằng tệp chứng chỉ cần phải có sẵn cho OpenSSL ở phía trước. Một cái gì đó như thế này hoạt động:
% openssl verify -CAfile mozilla-root-certs.crt -untrusted digicert.crt ourdomain.com.crt
ourdomain.com.crt: OK
Điều này cho phép tôi cung cấp một bản sao của DigiCert CA mà không nói rõ ràng "Tôi tin tưởng", toàn bộ chuỗi vẫn cần được xác minh.
Nhưng chắc chắn các trình duyệt như Firefox sẽ không luôn luôn xuất xưởng với một bản sao của mọi chứng chỉ đơn lẻ mà bạn cần. Luôn có các CA mới và vấn đề là sử dụng bảo mật của chứng chỉ gốc để đảm bảo tất cả các CA trung gian đều hợp lệ. Đúng? Vậy làm thế nào hiện tác phẩm này? Nó có thực sự ngớ ngẩn không?
Trên OpenBSD, '-CAfile' có thể được đặt thành'/etc/ssl/cert.pem'. –