我有一个由我们的一位服务器管理员生成的通配符 SSL 证书。我想为我们的一个子域使用一份副本。我是否需要使用 keytool 重新创建 CSR 文件。如何将如下所示的 3 个文件导入到服务器?
- gd_bundle-g2-g1.crt
- 自定义dig2.crt
- 一些十六进制字符串.crt
答案1
你有没有尝试过是否按照文档中描述的流程进行?
以下是您的文件(来源:GoDaddy 证书链存储库)
- gd_bundle-g2-g1.crt:Go Daddy 证书包 - G2 可跨 G1,包含 Root
- 自定义dig2.crt:Go Daddy 安全服务器证书(中级证书)-G2
- 一些十六进制字符串.crt:您的证书
在开始之前,您可能希望从服务器管理员那里确认所有这些文件到底是什么,以防万一......
如果您想在 TomCat 服务器上安装通配符证书,您还需要该证书的私钥,除非您已经拥有私钥(例如,如果这是续订)。如果这是全新安装,您肯定需要私钥。
还请记住密钥工具极其不宽容,在错误消息方面也非常愚蠢。它会用无用的错误消息误导你,比如
keytool 错误:java.lang.Exception:无法从回复建立链
那什么可以意思是您需要手动明确指定密钥大小和算法(有关语法和参数,请参阅 keytool 帮助)。
实用建议:除非绝对必要,或者你对 keytool 了如指掌,否则不要使用 keytool。除非你对它了如指掌,否则它很可能会让你发疯。如果你对它不太了解或遇到困难,我建议使用第三方 Java 密钥库编辑器,例如KeyStore 浏览器或者波特克莱。
建议 2:使用 nginx 作为您网站的反向代理前端和 SSL 卸载器。在 nginx 上实现 SSL 更容易,它将允许您的 Tomcat 实例专注于应用程序交付,这足以让 Tomcat 实例忙碌起来。:) 此外,您将能够调整 SSL/TLS 设置以在Qualys SSL Labs SSL 测试在这个 SSL 漏洞众多的时代,这并不是一个坏主意...我不确定默认的 Tomcat 6 SSL 配置在该测试中的得分是多少。
答案2
对于 Tomcat 9,我按照此文档创建了 PKCS12 格式的密钥库http://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html#配置。由于我有来自 GoDaddy 的签名证书,因此我通过执行以下 OpenSSL 命令将所需的证书和密钥导入 PKCS12 密钥库。
openssl pkcs12 -export -in mycert.crt -inkey mykey.key
-out mycert.p12 -name tomcat -CAfile myCA.crt
-caname root -chain
- mycert.crt -> 是 GoDaddy 提供的证书(通常,这将是您的 GoDaddy 序列号.crt)
- mykey.key -> 与 CSR 一起创建的密钥。
- mycert.p12 -> 这将是您的密钥库文件。
- myCA.crt -> 是 GoDaddy 提供的根证书(在我的情况下,它是 gd_bundle-g2-g1.crt)。
运行上述命令后,mycert.p12
文件将生成到您提到的位置。
现在将其配置到您的server.xml
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" keystoreFile="/your/path/mycert.p12" keystorePass="changeit" keyAlias="tomcat">
keyAlias="tomcat"
是导入 PKCS12 密钥库时指定的名称。
保存文件然后重新启动服务器。
答案3
也许这会帮助你解决问题:http://linuxadmin.com.pl/tomcat-and-ssl-certificates-small-how-to/
无论如何,在我看来,在 tomcat 中处理 ssl 相当困难。这就是为什么我更喜欢将 Apache/Nginx 放在 Tomcat 的“前面”。