Tôi đang cố gắng kết nối API Web Java thông qua HTTPS; tuy nhiên, một ngoại lệ được đưa ra:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException
Tôi đã làm theo các bước mà tôi đã học được từ các hướng dẫn về chứng chỉ keytool & SSL trực tuyến:
Tôi đã sao chép URL HTTPS vào trình duyệt, tải xuống chứng chỉ SSL & Đã cài đặt chúng trong trình duyệt bằng Internet Explorer.
Xuất chứng chỉ vào một đường dẫn trên máy tính của tôi, chứng chỉ đã được lưu dưới dạng
.cer
Đã sử dụng tùy chọn nhập của keytool. Lệnh dưới đây thực hiện mà không có bất kỳ lỗi nào.
keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer
Tôi đã được nhắc nhập mật khẩu tại dấu nhắc lệnh, tôi đã nhập sau đó tôi được xác thực.
Các
cmd
cửa sổ in một số dữ liệu chứng nhận & chữ ký và tôi đã nhắc với câu hỏi:Tin tưởng chứng chỉ này?
Tôi trả lời là có.
Dấu nhắc cmd được hiển thị
Chứng chỉ đã được thêm vào kho khóa
Tuy nhiên, sau thông báo đó, một ngoại lệ khác đã được hiển thị:
keytool error: java.io.FileNotFoundException: C:\Program files\...\cacerts <Access Denied>
Cuối cùng khi tôi kiểm tra kho khóa, chứng chỉ SSL không được thêm vào và ứng dụng của tôi đưa ra ngoại lệ giống như tôi đã nhận được trước đó khi thử kết nối:
(javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException)
keytool
lệnh chính xác mà bạn đã thực hiện và nó xuất ra không? Một số vấn đề rõ ràng ở đây là lỗi chính tả-keystore
và thực tế là keytool không thể tìm thấy kho khóa để nhập khóa vào