Từ nhận xét đến trả lời đầu tiên của tôi Tôi thấy rằng có một sự hiểu lầm chung 'xác minh chứng chỉ có nghĩa là gì'. Tôi sẽ cố gắng viết một lời giải thích ngắn gọn ở đây để loại bỏ một số ảo tưởng.
Xác minh chứng chỉ là về việc kiểm tra chữ ký trên siêu dữ liệu chứng chỉ (ví dụ: chủ đề, khoảng thời gian hiệu lực, tiện ích mở rộng và như vậy) đối với một số chữ ký mã hóa.
Nếu tất cả những gì bạn có để xác thực là chứng chỉ tự ký, bạn không thể phân biệt chứng chỉ này với chứng chỉ tự ký khác có cùng siêu dữ liệu, nhưng khóa khác, trừ khi bạn biết trước khóa của chứng chỉ khóa. Và đừng quên rằng bạn thiết lập tất cả quy trình xác minh này để xóa yêu cầu có kiến thức được chia sẻ trước này. Với xác minh chứng chỉ thông thường, bạn không thể loại bỏ hoàn toàn yêu cầu để có một số kiến thức được chia sẻ trước, đó là một bộ chứng chỉ của bên thứ ba, còn được gọi là 'chứng chỉ CA'. Vì kiến thức này được chia sẻ trước, các chứng chỉ đó có thể được tự ký, nhưng hãy nhớ rằng bạn đã nhận được thông tin về tính hợp lệ của những chứng chỉ đó không phải từ quá trình xác minh, mà từ một số kiến thức bên ngoài.
Khi bạn có một bộ chứng chỉ CA đáng tin cậy được phân phối giữa các đồng nghiệp, bạn có thể sử dụng chúng để ký các chứng chỉ khác và kiểm tra chữ ký chống lại kiến thức được chia sẻ trước đó của CA đáng tin cậy. Nếu bạn không có kiến thức bổ sung về chứng chỉ tự ký trừ bản thân chứng chỉ, bạn có thể không đưa ra giả định về niềm tin vào chứng chỉ cụ thể này, bởi vì nó có thể do một số hacker xấu cấp cũng như bởi máy chủ đáng tin cậy của bạn.
Vui lòng tìm hiểu một số kiến thức về Man in the middle attack, Public key infrastructure và Public key cryptography nói chung trước khi triển khai bất kỳ loại quy trình xác minh chứng chỉ nào.
Hãy hiểu rằng xác minh mù của chứng chỉ tự ký sẽ không bảo vệ bạn ngay cả từ một hacker thông minh trong mạng của riêng bạn, thậm chí không xem xét bảo mật internet nói chung.
Chỉnh sửa: tác giả câu hỏi làm rõ rằng anh ấy đang tìm cách xác minh chữ ký verisign (hoặc CA khác) trên chứng chỉ bằng cách sử dụng liên kết M2Crypto. Dưới đây là hai ví dụ:
from M2Crypto import X509, SSL
# manual validation of a signature on a certificate using a given CA cert:
ca = X509.load_cert('/path/to/ca_cert.pem')
cert = X509.load_cert('certificate_to_validate.pem')
print "Verification results:", cert.verify(ca.get_pubkey())
# adding a given CA cert to the SSL Context for verification
ctx = SSL.Context()
# load a certificate from file
ctx.load_verify_locations(cafile='/path/to/ca_cert.pem')
# or use all certificate in a CA directory
ctx.load_verify_locations(capath='/path/to/ca/dir')
# or you can specify both options at the same time.
Nếu bạn đang sử dụng một thư mục với nhiều chứng chỉ CA (mà thường là thuận tiện hơn), bạn phải đổi tên mỗi giấy chứng nhận để <hash>.0
nơi <hash>
là băm của đối tượng chứng chỉ (thu được với openssl x509 -noout -hash -in cert.pem
).
Xin lỗi, câu hỏi của tôi đã sai. – Bhargava
Tôi thực sự đang tìm kiếm xác minh chứng chỉ đã ký bằng chữ ký bằng M2Crypto. – Bhargava
Tôi đã cập nhật câu trả lời bằng các ví dụ về M2Crypto. – abbot