【问题标题】:Tomcat [9.0.26] - Invoking secure service - TrustStore vs KeyStore Configuration Difference & IssuesTomcat [9.0.26] - 调用安全服务 - TrustStore 与 KeyStore 配置差异和问题
【发布时间】:2019-12-07 06:56:14
【问题描述】:

Tomcat SSL configuration 在我们的 stackoverflow 论坛中是一个被大量询问的领域 - 但是,尽管 Tomcat 声称它据称易于设置,但我仍然感到最不了解!

我正在使用 Tomcat 9.0.26 并且必须使用第三方 (https) 网络服务。我的麻烦开始了:)。

  1. 首先是我的无知和 Tomcat 文档堆积如山。我试图设置 keystoreFile。只有经过几次尝试才意识到密钥库和信任库之间的区别。简单来说,如果您希望部署在 tomcat 服务器上的应用程序通过安全的 HTTPS 协议提供服务,则需要密钥库。当您希望通过将证书存储在信任库中来使用另一个安全的 HTTPS Web 服务时,需要 TrustStore。默认的 tomcat SSL 文档会引导您进入密钥库而不是信任库。

  2. 所以继续设置信任库

<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" />
  1. 了解到 SSLConfig 元素已经产生,但是 Tomcat 9 仍然支持上面定义的旧配置。我使用 SSLConfig 的尝试也没有什么成果,而且这部分似乎很少记录。

  2. 我无法使用运行时参数,因为其他一些服务因以下参数而失败。

-Djavax.net.ssl.trustStore=C:\cert\myCert.p12 -Djavax.net.ssl.trustStorePassword=mypass -Djavax.net.ssl.trustStoreType=PKCS12

需要有关我可以尝试解决此问题的指针的帮助,因为上述尝试仍未成功。

【问题讨论】:

    标签: spring ssl tomcat ssl-certificate truststore


    【解决方案1】:

    终于解决了这个问题。上面对信任存储的理解是正确的。但是,在 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

    【讨论】:

      猜你喜欢
      • 2016-07-28
      • 2020-04-01
      • 1970-01-01
      • 2023-02-02
      • 2018-05-13
      • 2023-03-25
      • 2016-05-05
      • 2021-05-08
      • 1970-01-01
      相关资源
      最近更新 更多