如何将 SSL 从 Tomcat 迁移到 Apache HTTPD?

Posted

技术标签:

【中文标题】如何将 SSL 从 Tomcat 迁移到 Apache HTTPD?【英文标题】:How can i migrate SSL from Tomcat to Apache HTTPD? 【发布时间】:2011-04-13 09:56:51 【问题描述】:

我正在将我的单服务器 tomcat 迁移到集群,由 Apache HTTPD(使用 mod_proxy 的反向代理)进行负载平衡和缓存。 是否可以将证书和密钥转换为 apache 格式,或者我必须重新签发整个东西?

【问题讨论】:

【参考方案1】:

直接使用keytool 提取证书很容易,提取私钥有点棘手(尽管您可以编写程序来这样做)。我建议使用keytoolopenssl 的组合。

如果您的密钥库是 PKCS#12 格式(.p12 文件),请跳过此步骤。使用 keytool 将您的 JKS 存储转换为 PKCS12 存储(需要 Java 6+ 的版本)

keytool -importkeystore -srckeystore thekeystore.jks \
                        -srcstoretype JKS \
                        -destkeystore thekeystore.p12 \
                        -deststoretype PKCS12

然后,使用 openssl 提取证书:

openssl pkcs12 -in thekeystore.p12 -clcerts -nokeys -out servercert.pem

提取私钥:

umask 0077
openssl pkcs12 -in thekeystore.p12 -nocerts -nodes -out serverkey.pem
umask 0022

请注意,由于在提取私钥时使用了-nodes 选项,因此私钥文件将不受保护(因为它必须没有密码才能被 Apache Httpd 使用),因此请确保没有其他人可以阅读。

然后,使用SSLCertificateFileSSLCertificateKeyFile 配置Apache Httpd,分别指向证书文件和私钥文件。

【讨论】:

-srsstoretype 应该是 -scrstoretype @jramoyo,感谢您发现这个错字。 (您也可以直接提出修改建议。) 不幸的是 servercert.pem 是空的 (0bytes)。有什么提示吗? @PeterRader 也许您的 JKS 商店一开始就没有私钥,在这种情况下,将其转换为 PKCS#12 将无法正常工作。 您能否解释一下如何完全反转该过程:我有一个有效的 httpd ssl 配置:1. SSLCertificateFile certificate.cer,2. SSLCertificateKeyFile privatekey.key 3. SSLCertificateChainFile intermediate.cer。我需要为 vertx 3 创建一个 java 密钥库 (.jks)。我所有的尝试都会导致错误:www.... 使用无效的安全证书。该证书不受信任,因为颁发者证书未知。服务器可能未发送适当的中间证书。可能需要导入额外的根证书。错误代码:SEC_ERROR_UNKNOWN_ISSUER

以上是关于如何将 SSL 从 Tomcat 迁移到 Apache HTTPD?的主要内容,如果未能解决你的问题,请参考以下文章

从ExpeditedSSL迁移到免费的Heroku SSL

无法将 JSF + CDI 项目从 Tomcat 迁移到 Wildfly

将WebApp从Tomcat迁移到WebLogic

将应用程序从websphere迁移到tomcat

将 Spring Web App 从 tomcat 5.5 迁移到 tomcat 6.0 的问题

迁移到 tomcat 后,将枚举值作为参数从 JSF 页面传递给 bean 方法失败