我正在将我的单服务器Tomcat迁移到一个集群,由Apache HTTPD(使用mod_proxy反向代理进行负载平衡和缓存)进行支持。 是否可以将证书和密钥转换为Apache格式,还是必须重新发行整个证书?
使用 keytool
直接提取证书非常容易,而提取私钥则有一些技巧(不过您可以编写程序来实现)。我建议使用 keytool
和 openssl
的组合。
如果您的密钥库是 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使用),因此请确保没有其他人可以读取它。
然后,使用SSLCertificateFile
和SSLCertificateKeyFile
配置Apache Httpd,分别指向证书文件和私钥文件。