两个使用ssl运行的tomcat实例



我有两个tomcat实例运行在同一个VM上。一个tomcat中的一个应用程序将调用第二个tomcat中的另一个应用程序。每个tomcat都在server.xml中配置了自己的一组端口。每一个都有自己的安全密钥。下面是server.xml的代码片段:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" keystorePass="apple123"   keystoreFile="/usr/myFirstKey"  sslProtocol="TLS" />
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

当第一个tomcat中的应用程序使用url"https://localhost:8444/dashboard"对第二个tomcat中的第二个应用程序进行rest调用时,我得到了这个错误:

servlet中的异常是sun.security.validator. validatoreexception: PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法查找到请求目标的有效认证路径

谁能告诉我怎么修理它?

没有理由使用HTTPS在两个内部服务器之间进行通信;只要使用HTTP就可以避免所有的麻烦。

但是如果你坚持使用HTTPS,你需要tomcat#1信任tomcat#2的证书-

从tomcat#2的key store文件中导出证书

> keytool -exportcert -alias <alias> -file <XXX>.cer 
  -keystore <keystore>.jks -storepass <password>

将证书导入tomcat#1的trust store

> keytool -importcert -alias <alias> -file <XXX>.cer 
  -keystore <truststore> -storepass changeit

默认trust storeJAVA-HOME/lib/security/cacerts;最好是创建一个副本,并配置tomcat#1来使用该副本。

最新更新