我在Apache Tomcat 7上有一个Web应用程序,我的Web应用程序上有不受信任的证书。我的Web应用程序必须与使用https的另一个Web应用程序通信。但是我总是得到这个例外:
无法建立连接:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径
我从另一个应用程序下载浏览器中的crt文件,并在我的tomcat服务器的jks密钥库中导入。
以下是来自server.xml文件的配置:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLSv1.2" keystoreFile="/opt/apache/apache-tomcat-7.0.55-test/conf/portalnew.jks" keystorePass="changeit" keyAlias="portalnew"/>
当我输入
keytool -list -v -keystore portalnew.jks
我可以看到我添加的crt文件。
我还在cacerts.jks中添加了crt文件
答案 0 :(得分:1)
您需要配置tomcat以信任此证书。这可以通过以下方式实现:
在tomcat连接器中添加其他属性 - server.xml文件
truststoreFile="conf/store/tomcat.truststore" truststorePass="TruststorePassword"
在您的CATALINA_OPTS变量中添加:
-Djavax.net.ssl.trustStore=/opt/tomcat/conf/store/tomcat.truststore -Djavax.net.ssl.trustStorePassword=TruststorePassword
在上面的命令中调整您的密码
答案 1 :(得分:0)
我通过在cacerts中添加.crt文件来修复它,而不是在cacerts.jks中添加