Tôi đang xây dựng một màn hình ứng dụng đơn giản để thăm dò một trong các URL API của chúng tôi và gửi email cho chúng tôi nếu nó không nhận được mã trạng thái HTTP 200 từ phản hồi (điều này cho biết API của chúng tôi là vì lý do nào đó).Lỗi "Peer Not Authenticated" SSL với HttpClient 4.1
Tôi đang sử dụng HttpClient 4.1 (điều này quan trọng vì API của nó khác rất nhiều từ 3.x).
API của chúng tôi là an toàn với SSL, tuy nhiên bước vào:
vào trình duyệt web chuyển hướng bạn đến
không gây bất kỳ lỗi.
Khi HttpClient cố gắng để đạt URL này (http://example.com/our-api
), nó không thành công với một ngoại lệ javax.net.ssl.SSLPeerUnverifiedException
với một thông báo nói:
ngang hàng không được xác thực
Tôi thấy điều này xảy ra rất nhiều cho người khác như được chứng minh bằng this bài đăng (cũng cung cấp một số cách để vượt qua vấn đề này - một giải pháp mà tôi sẽ cố gắng thực hiện tối nay trên thực tế).
Bài đăng nào khác (và những bài đăng tương tự khác với bài đăng này) không làm là giải thích lý do tại sao điều này xảy ra ngay từ đầu! Vì vậy, thay vì hỏi "làm thế nào để sửa lỗi này?" Tôi nghĩ rằng tôi sẽ hỏi "lý do tại sao điều này xảy ra?" Trước khi tôi đi trước với một trong các giải pháp được đề xuất, tôi muốn biết vấn đề là tôi đang cố sửa ;-)
Bạn có thể đăng stack trace đầy đủ? –
Cần lưu ý rằng thông báo này phải do lập trình lạ trong HttpClient. Đã có một sự thất bại bắt tay trước khi bị mất hiệu lực của SSLException, và đây là điều đáng lẽ nên bị ném ra. Thực hiện rõ ràng tiếp tục một cuộc gọi SSLSession.getPeerCertificate(), là API duy nhất ném ngoại lệ trong tiêu đề. – EJP