【问题标题】:Tomcat SSL certificate authority invalidTomcat SSL 证书颁发机构无效
【发布时间】:2018-01-03 20:46:41
【问题描述】:

之前尝试过询问,但不太擅长,所以尝试两次

我试图让 SSL 在 RHEL 下的 tomcat 7 服务器上运行。服务器在 HTTP 下工作正常,但是当我尝试使用 HTTPS 访问它时,我收到此错误。

进一步研究,chrome 告诉我这个

做了一些研究。将证书添加到 /etc/pki/ca-trust/source/anchors,update-ca-trust,仍然是同样的问题。尝试从头开始重建密钥库并更改它们的导入顺序,但仍然没有。

这是我的密钥库中当前的内容:

root, Dec 29, 2017, trustedCertEntry,

tomcat, Dec 29, 2017, PrivateKeyEntry,

intermed, Dec 29, 2017, trustedCertEntry,

crm2.mydomain.org, Jan 3, 2018, trustedCertEntry,

以及我的 server.xml 中的内容

<Connector
       port="443" maxThreads="200"
       scheme="https" secure="true" SSLEnabled="true"
       keystoreFile="/opt/apache-tomcat-7.0.82/conf/store" keystorePass=[pass]
       clientAuth="false" sslProtocol="TLS"/>

其他信息:

从 godaddy 获得的证书。 安装使用指南here

godddy ssl 检查器说我缺少中间证书

Tomcat 版本 7

RHEL 7.4

java 1.8

感谢任何帮助

【问题讨论】:

  • 一个问题只是为了确保问题不存在:您使用什么 URL 访问您的服务器?使用原始域名 ([xyz].org) 或使用直接 IP(例如 192.168.0.15),因为您是从本地网络访问服务器?
  • 我们使用 FQDN 访问它。值得一提的是,它不在我们的网络上,但这是一个 EC2 AWS 实例

标签: tomcat ssl https rhel


【解决方案1】:

很难确定,但您似乎没有正确遵循您引用的说明。您的密钥库显示了一个trustedCertEntry,其别名看起来像是您的域名的编辑;这建议您将服务器证书导入该条目,而不是名为“tomcat”的 privateKeyEntry。

引用您链接的页面,强调:

在 Tomcat 中安装 SSL [它们显然是指 SSL/TLS 服务器证书]

  1. 通过运行以下命令安装根证书:
    keytool -import -alias root -keystore tomcat.keystore -trustcacerts -file [根证书的名称]
  2. 通过运行以下命令安装中间证书:
    keytool -import -alias intermed -keystore tomcat.keystore -trustcacerts -file [中间证书的名称]
  3. 通过运行以下命令将颁发的证书 [为您的服务器] 安装到密钥库中:
    keytool -import -alias tomcat -keystore tomcat.keystore -trustcacerts -file [证书名称]

在第 3 步中,别名是“tomcat”,这与您在该过程前面的 -genkey[pair] 和 -certreq 步骤中使用的别名相同,而不是您的域的名称,通常也是文件的名称包含您的服务器/EE 证书。

为了验证正确的程序,keytool 对命令 1 和 2 的响应应该是

 Certificate was added to keystore 

但对命令 3 的响应应该不同:

 Certificate reply was installed in keystore

但是,如果您“从头开始重新构建 [t] 密钥库”并且包括在获得证书后生成新的密钥对,则证书现在一文不值且无法使用,此过程将不起作用;它会改为说类似

 Public keys in reply and keystore don't match 

服务器使用的证书必须与私钥匹配,因此这意味着您必须遵循该页面中指定的顺序,以及数十亿其他地方:生成密钥对,然后that 密钥对,然后 让 CA 从 that CSR 颁发证书,然后 导入 that 将证书放入同一个密钥库和别名中,其链证书可在回复中(如某些 CA 所做的,通常采用 'p7b' 格式)或信任库中的其他位置(如 GoDaddy 显然所做的那样)。

有效地为不同的 CA 欺骗 Import CA signed certificates to JKS

【讨论】:

  • 那么我想我的下一个问题将是从这里去哪里,因为听起来我可以非常努力地打破东西。完全炸毁服务器并在全新安装的第 1 步重试是否最容易?
  • @SteakStyles:您当然不需要“吹走”整个服务器(即 Tomcat + 应用程序)。根据您对密钥库所做的操作,该部分可能会或可能不会恢复,但如果您不知道自己做了什么,这将很难弄清楚,因此您最好重新执行 certificate 过程,从创建密钥对的步骤开始(即 GoDaddy 页面的开头)。
  • 我想我应该提前问的一个问题是,如果我用我第一次创建它时使用的完全相同的信息重新制作密钥库,我是否还需要从 go daddy 那里获得新的证书,或者我可以使用我第一次收到的原件吗?
  • @SteakStyles:您无法使用“完全相同的信息”重新制作密钥库;您可以重复相同的命令,但每次生成密钥对时,它都是安全随机的,并且极有可能不同于您或宇宙中任何其他人曾经创建或将要创建的任何其他密钥对所有的空间和时间。如果您可以在某处找到或恢复旧私钥,则可以使用旧证书;如果你有一个新的私钥,你需要新的证书匹配那个新的密钥
  • 重新制作密钥库,按照文章中的步骤操作,保持别名不变。一切正常!非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-04
  • 2014-12-26
  • 2018-06-19
  • 2015-08-09
  • 2020-10-14
相关资源
最近更新 更多