[英]Tomcat [9.0.26] - Invoking secure service - TrustStore vs KeyStore Configuration Difference & Issues
在我们的 stackoverflow 论坛中,Tomcat SSL 配置是一个被大量查询的区域 - 但是,尽管 Tomcat 声称设置很容易,但我仍然感到最不理解!
我正在使用 Tomcat 9.0.26 并且不得不使用第三方 (https) 网络服务。 我的麻烦开始了:)。
首先是我的无知和 Tomcat 文档堆积如山。 我试图设置 keystoreFile。 只有在几次尝试之后才意识到密钥库和信任库之间的区别。 简单来说,如果您希望部署在 tomcat 服务器上的应用程序通过安全的 HTTPS 协议提供服务,则需要密钥库。 当您希望通过将证书存储在您的信任库中来使用另一个安全的 HTTPS 网络服务时,需要 TrustStore。 默认的 tomcat SSL 文档会引导您进入密钥库而不是信任库。
所以继续设置信任库
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
truststoreFile="C:\cert\myCert.p12" truststorePass="mypass" truststoreType="PKCS12"
clientAuth="false" sslProtocol="TLS+SSLV3" />
了解到SSLConfig元素已经产生,但是Tomcat 9仍然支持上面定义的旧配置。 我使用 SSLConfig 的尝试也没有成果,这部分似乎很少记录。
我无法使用运行时参数,因为其他一些服务因以下参数而失败。
-Djavax.net.ssl.trustStore=C:\\cert\\myCert.p12 -Djavax.net.ssl.trustStorePassword=mypass -Djavax.net.ssl.trustStoreType=PKCS12
需要有关我可以尝试解决此问题的指示的帮助,因为上述尝试仍未成功。
终于解决了这个问题。 以上对trust store的理解是正确的。 但是,在 SSL 握手期间,我的服务器需要交换客户端身份验证“密钥”。 这是必须将相同的证书存储设置为 keyStore 并发布所有工作正常的地方!
-Djavax.net.ssl.trustStore=C:\\cert\\myCert.p12 -Djavax.net.ssl.trustStorePassword=mypass -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.keyStore=C:\\cert \\myCert.p12 -Djavax.net.ssl.keyStorePassword=mypass
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.