【问题标题】:truststore works even with wrong password, why?即使密码错误,信任库也可以工作,为什么?
【发布时间】:2013-04-04 21:39:58
【问题描述】:

我刚刚将我的 tomcat webapp 设置为支持 SSL 以此为指导: SSL Configuration

我被告知将其添加到 server.xml:

"<Connector 
 port="8443" maxThreads="200"
 scheme="https" secure="true" SSLEnabled="true"
 keystoreFile="${user.home}/.keystore" **keystorePass="changeit"**
 clientAuth="false" sslProtocol="TLS"/>

现在,SSL 工作正常,但是当我想通过另一个使用 mytruststore.jks 的程序进入 web 服务时,即使 mytruststore 密码错误也可能。

为了更清楚, -我必须使用这个“mytruststore.jks”进入网络服务 -“mytruststore.jks”密码没有被tomcat服务器检查

这种情况是否与 server.xml 中使用的 keystorePass 有关? 当我删除“keystorePass”时,Tomcat 不起作用。

谢谢!!

【问题讨论】:

  • 请澄清您是在谈论密钥库密码(实际问题)还是信任库密码(标题)。

标签: tomcat ssl ssl-certificate tomcat7 tomcat6


【解决方案1】:

当使用密钥库文件作为信任库时,密码仅用于验证,验证中的错误很可能被完全忽略。密码实际上只是为了保护私钥,而信任库中没有。

【讨论】:

    【解决方案2】:

    听起来您正在尝试使用 keystorePass 为受 SSL 保护的网站提供某种级别的身份验证安全性。这不是 SSL 的工作方式,您正在保护 Web 服务器和客户端浏览器之间传输的数据。它不会阻止对网站的访问。

    keystorePass 指定使用 keytool 之类的工具解密 .jks 文件的密码。

    我可能会走得更远,但这就是我对情况的解释,请根据您的预期更新。

    【讨论】:

    • 我不知道您所说的“这不是 SSL 的工作方式”是什么意思。身份验证是 SSL 的关键部分,在 Java 中它由密钥库、密码和信任库提供。这正是 SSL 的工作方式完全。 -1
    • @EJP Rosh 所说的方式在我看来是合法的:SSL 不依赖于密钥库密码存在于其他任何地方,而是在服务器上,密钥库使用所述密码解密。 SSL/TLS 提供的身份验证是客户端可以合理地确保与正确的服务器通信,如果它提供正确的证书。 SSL/TLS 中的整个信任/加密/身份验证内容是许多误解的根源,但对我来说,听起来 Rosh 就在这里。 +1。我看不出任何与您对此问题的回答相矛盾的内容
    • @OlafKock,Tomcat 使用 keystorePass(在 Tomcat 连接器中)来解锁和使用私钥:必须在服务器端正确获取它(此连接器配置示例所在的位置) .当密钥库用作信任库(在客户端)时,EJP 的答案是正确的。这个问题有点不清楚,但这个答案并不完全有意义。 keystorePass 绝对不仅仅适用于 keytool。
    猜你喜欢
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 2011-08-22
    • 2021-09-20
    • 2019-07-24
    • 1970-01-01
    相关资源
    最近更新 更多