我不熟悉 JAVA 和 Tomcat 的 SSL 证书。我所做的是:
1- 使用生成的 keystore 和证书
keytool -genkey -alias tomcat -keyalg RSA \
-keystore keystore.jks
2- 之后,我使用浏览器访问 servlet URL 并将证书导出到
path_to_JRE/lib/security/server.cer
3- 发生的事情是内部 eclipse 浏览器曾经要求我安装证书,因为它不受 JVM 信任,所以我使用以下方法将导出的证书添加到 JVM keystore :
Keytool -import -alias root -file "path_to_JRE/lib/security/server.cer" -keystore keystore.jks
我被要求提供 keystore 密码,之后我被要求确认信任证书,我说是。
在那之后,我尝试使用我的内部 eclipse 浏览器打开 URL,但它还一直要求我安装证书,因为它不受信任。 即使使用代码,我仍然会遇到以下异常:
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
我知道我可能做错了什么,因为我没有理解整个想法。 提前致谢
最佳答案
好的,我已经找到答案了,
我不知道为什么要将导出的证书添加到 JVM keystore 以外的另一个 keystore 。所以导入命令应该是:
Keytool -import -alias root -file "JRE_HOME/lib/security/server.cer" -keystore JRE_HOME/lib/security/cacerts"
关于JAVA 在将其添加到 keystore 后要求信任 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17144223/