有项目之前使用的apache-tomcat环境配置了https,用的证书也是jks的ssl证书,现在改成了 spring boot 直接jar包启动,为了方便使用Nginx配置https,反代理后端服务 关键是证书只有jks,网上找了一圈,都失败,各种jks转pem,单都失败了,证书不匹配
总结一下成功经验
1、准备好jks证书
2、jks转换成p12证书---> p12证书提取ssl的crt证书和中间crt证书
3、上一步提取出来的 ssl的crt证书和中间crt证书 合成nginx使用的crt证书(并非一定要pem证书)
4、从第二步转换出来的p12 证书提前key私钥
5、nginx配置ssl ,使用第三步合成的crt和第四部key私钥
具体操作
1、准备好的jks放到服务器目录内,cd 进入改目录 执行命令
keytool -importkeystore -srckeystore my.jks -destkeystore my.p12 -srcstoretype jks -deststoretype pkcs12
2、现在我们已经得到 my.p12证书,下面使用p12证书获取ssl的crt证书和中间crt证书
openssl pkcs12 -in my.p12 -nokeys -clcerts -out server-ssl.crt
openssl pkcs12 -in my.p12 -nokeys -cacerts -out gs_intermediate_ca.crt
3、server-ssl.crt是SSL证书,gs_intermediate_ca.crt是中级证书,合并到一起才是nginx服务器所需要的证书,不一定非要pem
cat server-ssl.crt gs_intermediate_ca.crt >server.crt
4、此时server.crt是一个完成的证书,然后提取私钥
openssl pkcs12 -nocerts -nodes -in my.p12 -out server.key
自此得到server.crt 和server.key,可以用来陪着nginx开启https了