转换java keytools的keystore证书到OPENSSL的PEM格式文件

背景:原先业务使用的前端为haproxy,直接端口转发至tomcat,后端进行ssl连接,所以当时生成的步骤如下

?
1
2
•生成密钥对:keytool -genkey - alias tomcat-server -keyalg RSA -keypass xxxxxxx -storepass xxxxxxx -keystore server.keystore
•将服务器证书导出为证书文件:keytool - export - alias tomcat-server -storepass xxxxxxx - file server.cer -keystore server.keystore

而现在为了解决haproxy的单点,决定迁移前端到nginx,ssl也放在前端做。但是keytool生成的正式都是二进制 data,nginx使用的是OPENSSL标准的PEM+key文件,即ascii文本格式的密钥。因为其他调用业务的关系,不能轻易重新生成证书。所 以就开始了艰辛的格式转换。
首先cer文件到PEM文件的转换较简单。这两者都是X509证书,编码不同,使用openssl工具即可:

?
1
openssl x509 -inform der - in server.cer -out server.pem

至于keystore转换就比较麻烦,搜索了一圈也没找到直接转换方式,只有进行两次转换。
首先使用http://download.csdn.net/detail/cwxzz/1072684这里的工具,PFX格式证书和JAVA keyStore证书相互转换,先将keystore转换为PFX证书。
修改java代码,填入keystore路径,生成文件的路径,KEYSTORE_PASSWORD。javac编译,java运行,如无错误,PFX格式的证书已经成功生成了。接下来使用openssl从PFX中提取私钥。

?
1
openssl pkcs12 - in server.pfx -nocerts -nodes -out server.key

这里也需要输入生成证书时使用的密码。
这样ascii格式的key文件也可以使用了。

nginx配置如下:

?
1
2
3
4
5
6
server {
     listen 443;
     ssl on;
     ssl_certificate      /usr/local/nginx/conf/cacerts/server .pem;
     ssl_certificate_key  /usr/local/nginx/conf/cacerts/server .key;
     xxxxxx...

使用浏览器访问,大功告成。

一些有用的相关资料:
使用openssl进行证书格式转换http://blog.csdn.net/linda1000/article/details/8676330
不同格式证书导入keystore方法http://www.blogjava.net/lihao336/archive/2012/02/03/369303.html
Nginx下配置SSL安全协议http://down.chinaz.com/server/201105/462_1.htm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值