首页 文章

使用ssl运行的两个tomcat实例

提问于
浏览
1

我在同一个VM上运行了两个tomcat实例 . 一个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中的第二个应用程序进行休息调用时,出现此错误:

Sevlet中的异常是sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径

有人可以告诉我如何解决它吗?

1 回答

  • 1

    没有理由使用HTTPS在两个内部服务器之间进行通信;只需使用HTTP并避免所有麻烦 .

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

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

    > 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来使用副本 .

相关问题