Thực hiện theo các hướng dẫn here và các chứng chỉ được tạo lại mà trước đây tôi đã tạo không chính xác. Một cái gì đó đã thay đổi khi tôi đang thấy javax.net.ssl.SSLHandshakeException: no cipher suites in common
trên máy chủ và javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
trên máy khách. Thay vì các lỗi this questionSSLHandshakeException: không có bộ mã hóa nào trong chung
Máy chủ là ClassFileServer.java và khách hàng tương ứng
Bất kỳ lời khuyên về việc hai đầu để chơi độc đáo, lưu ý rằng tôi sử dụng localhost vì vậy tôi sẽ giả định khả năng mật mã đều giống nhau.
Cập nhật:
Dưới đây là các bước tôi đã sử dụng để tạo ra các tập tin, tôi có thể bị nhầm lẫn phím và truststore .:
Trên máy chủ (sau đây bằng cách this hướng dẫn) :
$ keytool -genkey -alias serverkey -keyalg RSA -keypass [email protected] -storepass [email protected] -keystore keystore.jks
$ keytool -export -alias serverkey -storepass [email protected] -file server.cer -keystore keystore.jks
$ keytool -import -v -trustcacerts -alias clientkey -file ../client/client.cer -keystore cacerts.jks -keypass [email protected] -storepass [email protected]
Trên client-side (bởi this hướng dẫn):
$ keytool -genkey -alias clientkey -keyalg RSA -keypass changeit -storepass changeit -keystore keystore.jks
$ keytool -export -alias clientkey -storepass changeit -file client.cer -keystore keystore.jks
$ keytool -import -v -trustcacerts -alias serverkey -file ../server/server.cer -keystore cacerts.jks -keypass changeit -storepass changeit
Đã phải sử dụng phương tiện khác như gỡ lỗi vượt quá cơ giới hạn của trang web này:
Lỗi máy khách debug:http://pastebin.com/mHCmEqAk
Lỗi máy chủ debug:http://pastebin.com/YZbh7H8f
tôi loại bỏ các không liên quan mục nhập và tôi vẫn nhận được lỗi tương tự. Tôi đã thử nhập các chứng chỉ tương ứng vào kho khóa trên mỗi nhận xét tại đây: http://stackoverflow.com/questions/9547980/unable-to-find-valid-certification-path-to-requested-target-and-certificate-unkn# comment12099962_9547980. Tôi vẫn có thể gây nhầm lẫn với sự tin tưởng và keystores. Ngoài ra, xin lưu ý đây là những chứng chỉ tự ký. – Astron
@Astron (1) bạn đã thay đổi dòng mã 'ks.load (new FileInputStream ("testkeys"), cụm mật khẩu)' để tải các keystores tương ứng thay vì 'testkeys', và (2) bạn có thể chạy máy khách với - Djavax.net.debug = ssl, bắt tay và chỉnh sửa kết quả vào bài đăng của bạn. – EJP
TrustStore cần phải được chỉ định cho máy khách/máy chủ vì chúng đang sử dụng trustStore mặc định, gây ra lỗi. Sử dụng -Djavax.net.ssl.trustStore =/home/share/samples/sockets/client/cacerts.jks -Djavax.net.ssl.trustStorePassword = thay đổi trên máy khách và mã tương ứng tương ứng cho máy chủ cho phép phiên hoàn thành. Kỳ lạ là ứng dụng hỗ trợ xác thực ứng dụng khách nhưng không có điều khoản trustStore trong mã máy khách/máy chủ. Cảm ơn thông tin gỡ lỗi đã giúp ích rất nhiều! Thêm khuyến nghị gỡ lỗi để bạn trả lời. – Astron