sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径

时间:2017-01-04 09:28:18

标签: apache ssl keytool

我在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文件

2 个答案:

答案 0 :(得分:1)

您需要配置tomcat以信任此证书。这可以通过以下方式实现:

  1. 创建新的Java密钥库(可以命名为:tomcat.truststore)
  2. 将所有必要的证书导入tomcat.truststore
  3. 在tomcat连接器中添加其他属性 - server.xml文件

    truststoreFile="conf/store/tomcat.truststore" truststorePass="TruststorePassword"

  4. 在您的CATALINA_OPTS变量中添加:

  5. -Djavax.net.ssl.trustStore=/opt/tomcat/conf/store/tomcat.truststore -Djavax.net.ssl.trustStorePassword=TruststorePassword

    在上面的命令中调整您的密码

    1. 重启tomcat

答案 1 :(得分:0)

我通过在cacerts中添加.crt文件来修复它,而不是在cacerts.jks中添加