Tôi đang cố gắng tải ứng dụng chạy trên đầu Tomcat 6 để kết nối với máy chủ LDAP qua SSL.Chứng chỉ đã nhập vào kho khóa Java, JVM bỏ qua chứng chỉ mới
tôi nhập khẩu giấy chứng nhận của máy chủ để keystore sử dụng:
C:\Program Files\Java\jdk1.6.0_32\jre\lib\security>keytool -importcert -trustcacerts -file mycert -alias ca_alias -keystore "c:\Program Files\Java\jdk1.6.0_32\jre\lib\security\cacerts"
Khi tôi bắt đầu Tomcat với SSL gỡ lỗi bật lên, theo bản ghi Tomcat đang sử dụng tập tin giấy chứng nhận chính xác:
trustStore is: C:\Program Files\Java\jdk1.6.0_32\jre\lib\security\cacerts
Tuy nhiên , Tomcat không thêm chứng chỉ tôi vừa nhập - tất cả các chứng chỉ khác trong tệp cacerts được in vào nhật ký - và kết nối không thành công:
handling exception: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Khởi động lại Tomcat không hiệu quả. Tôi đã xác minh bằng lệnh keytool -list rằng chứng chỉ mới thực sự tồn tại trên tệp.
Tại sao Tomcat tiếp tục bỏ qua chứng nhận mới của tôi?
EDIT:
Dường như vấn đề là do Windows 7 VirtualStore. Keytool đã tạo một bản sao mới của tệp cacert và Tomcat đã sử dụng tệp gốc.
Tệp 'mycert' có chứa toàn bộ chuỗi chứng chỉ không? Java muốn toàn bộ đường dẫn tin cậy nằm trong cửa hàng. – Romain
Chỉ cần một gợi ý đơn giản, hãy vào 'C: \ Users \ YourAccountName' của bạn, một tên tập tin' .keystore' sẽ ở đó, mở nó ra và xóa tên trước đó của bạn khỏi đó, và sau đó làm lại những gì bạn đã làm.Hy vọng rằng sẽ sắp xếp mọi thứ cho bạn :-) –
@Romain Không, một chứng chỉ đáng tin cậy không liên quan gì đến chuỗi. Bất kỳ chứng chỉ nào được nhập dưới dạng chứng chỉ tin cậy đều được xử lý như chứng chỉ gốc tin cậy. – emboss