Tôi được yêu cầu sử dụng xác thực hai chiều để kết nối với máy chủ của khách hàng. Xác thực máy chủ hoạt động trơn tru nhưng chúng tôi đang gặp sự cố lớn khi xác thực ứng dụng khách. Hãy để tôi cố gắng giải thích rắc rối của chúng tôi.
Cách đây một thời gian, công ty của tôi đã mua chứng chỉ từ GeoTrust. Chứng chỉ này hoàn toàn có giá trị như chứng chỉ khách hàng của chúng tôi. Rõ ràng khách hàng đã không quản lý để thêm chứng chỉ GeoTrust này vào kho tin cậy của họ một cách chính xác, vì vậy mỗi lần chúng tôi cố gắng kết nối với máy chủ của họ, chúng tôi đều thấy lỗi trong nhật ký bắt tay SSL không rõ_ca.
Thay vào đó, khách hàng yêu cầu chúng tôi gửi cho họ Yêu cầu ký chứng chỉ (CSR) và chúng tôi đã nhận được chứng chỉ gốc cũng như chứng chỉ sẽ được sử dụng làm chứng chỉ ứng dụng khách của chúng tôi. Sau khi cập nhật kho khóa tương ứng, giờ đây chúng tôi thấy lỗi trong nhật ký bắt tay SSL không được hỗ trợ_chứng chỉ. Nhìn kỹ hơn vào chứng chỉ ứng dụng khách do khách hàng ký sẽ thấy rằng chứng chỉ mới rõ ràng cóXác thực máy chủ kéo dài nhưng khôngXác thực ứng dụng khách Sự mở rộng. tôi đã tìm thấy không được hỗ trợ_chứng chỉ và mất tích Xác thực ứng dụng khách Sự phụ thuộc giữa các tiện ích mở rộng là rất rõ ràng, nhưng khách hàng từ chối chấp nhận phần còn thiếu Xác thực ứng dụng khách như một lời giải thích hợp lệ (do đó từ chối tạo chứng chỉ ứng dụng khách mới và được mở rộng phù hợp cho chúng tôi). Đây là những gì khách hàng tranh luận:
Khách hàng đã gửi cho tôi nhật ký của anh ấyChứng chỉ không được trả lạiẢnh chụp màn hình và tuyên bố rằng mục nhật ký này có nghĩa là tôi đang chuyển chứng chỉ ứng dụng khách qua mạng ở định dạng sai:
Để củng cố khẳng định của anh ấy rằng tôi đã gửi chứng chỉ ứng dụng khách sai định dạng, khách hàng đã gửi cho tôi ảnh chụp màn hình kết xuất TCP sau đây với vòng tròn pkcs:
Theo tôi,pkcs-9-at-emailĐịa chỉ Chỉ là cách tiêu chuẩn để bao gồm thông tin địa chỉ email trong chứng chỉ, không liên quan gì đến việc chứng chỉ được gửi sai định dạng. Ngoài ra, tôi đã tìm thấy một vị trí trên Google có đề cập rằng chứng chỉ ứng dụng khách bị thiếu.Xác thực ứng dụng kháchtiện ích mở rộng có thể xuất hiệnChứng chỉ không được trả lạiĐăng nhập. p>
Để loại trừ mã Java của chúng tôi khỏi việc sử dụng keystore.jks Và Truststore.jks Định dạng không chính xác và tôi đã thử kết nối với máy chủ của họ chỉ bằng lệnh OpenSSL:
openssl s_client -CAfile caroot.cer -cert client.cer -key client.key -connect :
Việc thực thi lệnh OpenSSL này sẽ cho kết quả tương tự không được hỗ trợ_chứng chỉ 错误。
Nếu ai đó có thể giúp tôi hiểu liệu chúng tôi đúng hay khách hàng đúng thì tôi sẽ rất biết ơn. Cảm ơn bạn rất nhiều.
Tất nhiên OpenSSL s_client
Chứng chỉ sẽ được chuyển theo đúng định dạng (nếu không nó sẽ bị lỗi trước khi kết nối với máy chủ). Hãy để chúng tôi kiểm tra TLS 1.2 (RFC 5246) được xác địnhbáo động sai .
chứng chỉ xấu
Chứng chỉ bị hỏng, chứa các chữ ký không đúng
xác minh chính xác, v.v.
không được hỗ trợ_chứng chỉ
Chứng chỉ thuộc loại không được hỗ trợ.
Có một số cảnh báo nữa, nhưng đây là hai cảnh báo thú vị nhất. Từ đó, chúng ta có thể suy ra rằng việc không phân tích được chứng chỉ, ví dụ do định dạng không chính xác sẽ dẫn đếnchứng chỉ xấu
, và không phù hợp sử dụng chìa khóaThông tin có thể được trả lại trong các trường hợp nhưChứng chỉ không được hỗ trợ
.
Nếu khách hàng của bạn yêu cầu thêm bằng chứng, bạn có thể s_server(1)
chương trình và s_client
Được sử dụng cùng nhau để cho biết cách chứng chỉ ứng dụng khách bị từ chối trong cùng một quy trình trong cài đặt này.
Tôi là một lập trình viên xuất sắc, rất giỏi!