Tôi có ba chứng chỉ trong một chuỗi:
- root.pem
- trung gian.pem
- john.pem
Khi tôi kiểm tra chúng bằng cách sử dụng openssl x509 -in [filename] -text -noout
chúng trông ổn, root.pem trông giống như tự ký (Issuer == Chủ đề) và Chủ đề của mỗi chứng chỉ là Nhà phát hành của người tiếp theo, như mong đợi.
Và thực sự tôi có thể xác minh chuỗi lên đến chứng chỉ trung gian:
$ openssl verify -CAfile root.pem root.pem
root.pem: OK
$ openssl verify -CAfile root.pem intermediate.pem
intermediate.pem: OK
Tuy nhiên, john.pem không thành công:
$ openssl verify -CAfile root.pem -CAfile intermediate.pem john.pem
john.pem: C = CL, [...redacted data...]
error 2 at 1 depth lookup:unable to get issuer certificate
Theo hiểu biết tốt nhất của tôi, điều này có nghĩa là openssl không thể tìm thấy công ty phát hành cho trung gian.pem. Điều này không có ý nghĩa gì vì root.pem thực sự là nhà phát hành cho middle.pem.
Tôi đang thiếu gì?
Chỉnh sửa: Ban đầu tôi đã đăng một câu trả lời nói rằng root.pem và trung gian.pem nên được nối trong một tệp, và sau đó người ta nên sử dụng tệp này làm tham số cho -CAfile
. Đây là SAU, bởi vì điều này hoàn toàn tin tưởng trung gian.pem, như Johannes Pille chỉ ra. Đọc liên kết anh ấy đăng trong câu trả lời đã bị xóa của tôi: https://mail.python.org/pipermail/cryptography-dev/2016-August/000676.html