我假设您已经按照上面的陈述维护了密钥库。首先备份您的密钥库以避免发生任何事故。
除了您拥有的文件之外,您还应该拥有私钥您生成的证书的。
现在按照命令执行步骤。
- 首先从密钥库文件中删除任何现有条目。
keytool -delete -alias tomcat -keystore domain.jks
您还可以通过以下方式查看任何其他现有条目 keytool -list -keystore domain.jks
也删除它们。
- 现在将证书和私钥导出到 PKCS12 文件中
openssl pkcs12 -export -in fce4f111a61ea3f4.crt -inkey private.key -out cert_and_key.p12 -name tomcat -CAfile gd_bundle-g2-g1.crt -caname root
如果您收到类似以下错误
unable to load private key
139995851216720:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:707:Expecting: ANY PRIVATE KEY
这意味着你的private.key
格式不正确,您需要将编码更改为ASCII text
运行以下命令来转换您的私钥
# You can do a dry run before manipulating the actual file
tail -c +4 private.key | file -
# Change encoding
tail -c +4 private.key > private.key
- 将 PKCS12 文件导入 JKS 密钥库:
keytool -importkeystore -srckeystore cert_and_key.p12 -srcstoretype PKCS12 -alias tomcat -keystore domain.jks
- 现在将根证书导入 JKS 密钥库(带有根别名)
keytool -import -trustcacerts -alias root -file $certdir/gd_bundle-g2-g1.crt -noprompt -keystore domain.jks
- 添加以下内容
server.xml
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150"
SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"
keystoreFile="/path/to/keysore/domain.jks" keystorePass="xxxxxx"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_RC4_128_SHA" />
别忘了更换xxxxxx
使用您的 JKS 密钥库密码和keystoreFile
范围
- 完毕。现在重新启动您的Tomcat服务器并听你的日志文件
sudo service tomcat7 restart
sudo tail -f /var/log/tomcat7/catalina.out
Note:代替domain.jks
与您的实际密钥库文件。