使用场景描述:
因在腾讯云购买的nginx负载均衡不提供https认证,为了解决域名劫持问题,考虑使用ssl。
腾讯云端配置如下:
1:使用keytool生成keystore文件。
keytool -keysize 2048 -genkey -alias tomcat -keyalg RSA -keystore tomcat.keystore
2:输入密码,进行填写信息
(如:www.xxx.com,2/3可以回车默认,SHANGHAI/SHANGHAI,CN)
3:使用keystore文件生成CSR文件
(记得输入第二步的密码)
keytool -certreq -keyalg RSA -alias tomcat -file csr.csr -keystore tomcat.keystore
4:打开CSR文件复制到Godaddy的证书密钥内。
5:根据Godaddy官网签发证书邮件的ID进行域名网站验证。
(如:在webapp下ROOT创建一个以Godaddy官网签证邮件的ID为名的html页面,其内容填写ID。)
下面是配置SSL证书到tomcat
1:下载证书,了解加密算法类型
这里证书有三级,root/secure/id.key。
java6/7需要使用SHA-2 Root Certificate: gdroot-g2_cross.crt
如果直接把gd_bundle-g2-g1.crt作为root,会报告错误:无法从回复中建立链(Failed to establish chain from reply)
2:安装SSL到tomcat
keytool -import -alias root -keystore tomcat.keystore -trustcacerts -file gdroot-g2.crt
(刚刚在仓库下载的文件gdroot-g2.crt)
keytool -import -alias intermed -keystore tomcat.keystore -trustcacerts -file gdig2.crt
keytool -import -alias tomcat -keystore tomcat.keystore -trustcacerts -file 随机id.crt
随即id文件是下载证书时候带的,注意下载证书时候gd_bundle-g2-g1.crt文件中包含根证书,二级安全。
3:更新tomcat的server.xml文件。
保存重启tomcat。使用https访问。
潜在问题:
此证书是使用keytool进行生成的,如果keystore文件,如果后期其他项目使用,如nginx/CDN等,如何解决?
答:转为p12格式。
keytool -importkeystore -srckeystore keystore.jks
-destkeystore keystore.p12
-deststoretype PKCS12 -srcalias <jkskeyalias>
-deststorepass <password> -destkeypass <password>
导出证书使用openssl:
openssl pkcs12 -in keystore.p12 -nokeys -out cert.pem
导出私钥:
openssl pkcs12 -in keystore.p12 -nodes -nocerts -out key.pem