首先,我的Tomcat8配置为具有连接器xml文件中链接的有效证书的https。
就像这样:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" enableLookups="false" keyAlias="https"
keystoreFile="C:\Program Files\Apache Software Foundation\Tomcat 8.0\conf\keystore.jks"
keystorePass="changeit"/>但我需要我的web应用程序作为客户端连接到第三方数据提供者与有效的证书。我把这张额外的证书放在哪里?当我为连接器输入keystore时,"https“证书不是第一个证书,它破坏了一些东西。我也许可以用连接器中的keyAlias来解决这个问题.
但是..。连接器密钥存储应用程序是否广泛?这种设置的最佳选择是什么?
这个文章很大程度上概括了我的选择,选择哪一个?最好的选择似乎是将带两个证书的keystore传递给JVM,但是如何告诉连接器使用哪个证书呢?
根据建议,我对连接器和密钥存储库进行了如下编辑:

现在我得到了:
Wrapped javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException:
PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
Cause: sun.security.validator.ValidatorException: PKIX path building
failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target]发布于 2018-01-19 10:20:08
最后,我创建了一个密钥存储库(windows上有密钥库资源管理器),其中包含所有必要的证书(密钥)和别名。然后,我将keystore和trustore填写为java启动参数:
-Djavax.net.ssl.keyStore=%KEYSTORE%
-Djavax.net.ssl.keyStorePassword=changeme
-Djavax.net.ssl.trustStore=%TRUSTSTORE%
-Djavax.net.ssl.trustStorePassword=changeme在tomcat连接器中使用相同的密钥存储库,并为HTTPS提供适当的keyAlias。
在调试时,启用-Djava.net.debug=ssl也非常有用。
https://serverfault.com/questions/845141
复制相似问题