使用 Java Key Tool 安装中间/链证书

Jus*_*Guy 2 ssl tomcat jks ssl-certificate tomcat7

我有一个为 Confluence 制作的 JKS 文件,其中已经包含我的私钥和公钥。尽管有一个小问题,但它在大多数浏览器上都能正常工作。在 sslshopper 上我收到以下消息:

并非所有 Web 浏览器都信任该证书。您可能需要安装中间/链证书以将其链接到受信任的根证书。

我从 Comodo 获得了 CA 链 + 根,通读并尝试了以下操作:

keytool -importcert -keystore fecru.jks -storepass SECRET -trustcacerts -alias chain -file cachain.bundle
Run Code Online (Sandbox Code Playgroud)

即使证书已成功添加到密钥存储,我仍然得到相同的结果。

我缺少什么?

Chr*_*ltz 7

这是我的“Java TLS with Keystores”备忘单中的内容,我需要一直参考它,因为出于某种原因,如果你做得不完美,似乎什么都不起作用。

  1. 生成服务器密钥(和自签名证书)

    $ keytool -genkey -keyalg RSA -sigalg SHA256withRSA -keysize 4096-alias ${HOSTNAME}-keystore ${HOSTNAME}.jks

  2. 创建证书签名请求 (CSR)

    $ keytool -certreq -sigalg SHA256withRSA -keystore ${HOSTNAME}.jks

  3. 让证书颁发机构 (CA) 签署您的 CSR

  4. 将证书导入回密钥库,从 CA 的根证书开始,沿着链返回到服务器的证书

    $ keytool -import -alias [Authority.CA] -trustcacerts -file [authority's CA cert] -keystore ${HOSTNAME}.jks

    $ keytool -import -alias [Authority.intermediate] -trustcacerts -file [authority's intermediate cert] -keystore ${HOSTNAME}.jks

    $ keytool -import-alias ${HOSTNAME}-file ${HOSTNAME}.crt -keystore ${HOSTNAME}.jks

在生成服务器密钥后,我总是会制作密钥库的备份副本,以防万一我破坏了某些东西。

有几件事至关重要

  1. alias请记住在上面的步骤 1 和 4c(导入服务器的签名证书)中使用相同的内容
  2. 请记住将keyAliasTomcat 中的属性设置<Connector>为您用于服务器证书的相同值(同样,与上面步骤 1 和 4c 的值相同)

我强烈建议使用Qualys 的 SSLTest工具来测试您的网站。它是我所知道的最全面的测试工具,并且它并不是想向您推销任何东西。