java - 使用ssl运行的tomcat的两个实例

标签 java tomcat exception ssl

我在同一个虚拟机上运行了两个 tomcat 实例。一个 tomcat 中的一个应用程序将调用第二个 tomcat 中的另一个应用程序。每个 tomcat 在 server.xml 中配置了自己的一组端口。每一个都有自己的安全 key 。这是 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 调用时,我收到此错误:

Exception in Sevlet is sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

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

最佳答案

没有理由使用 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 以使用该副本可能会更好。

关于java - 使用ssl运行的tomcat的两个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31330531/

相关文章:

java - 由模拟函数 Spring Boot 返回的 NPE

java - HTTP Status 500 – Internal Server Error-JSP-Tomcat 服务器

linux - Tomcat6 -> 如何将项目放入根文件夹?

tomcat - 尝试在tomcat中查看html文件时出现404错误

java - 如何在 JSTL 中调用 java 方法?

java - 如何从IDP端实现特定SP的全局注销?

java - 是否可以强制 Map 以一种方式排序,但以另一种方式获取值?

javascript - 停止 JavaScript 中的执行

c# windows-services - 如何处理日志记录异常?

android - 媒体播放器异常