背景:原先业务使用的前端为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

最新文章

  1. SharePoint 2010 GridView/SPGridView完全应用系统样式
  2. request属性 request.getAttribute()
  3. add添加
  4. apache通过cgi调用exe程序
  5. CS0016: 未能写入输出文件“c:\WINDOWS\Microsoft.NET\Framework\.。。”--“拒绝访问
  6. Java基础之泛型
  7. Git秘籍:在 Git 中进行版本回退
  8. PLSQL_基础系列06_判断操作NVL / NULLIF / COALESCE / NVL2(案例)
  9. poj - 2377 Bad Cowtractors&&poj 2395 Out of Hay(最大生成树)
  10. oepn sync
  11. Android04-UI01常用控件
  12. Intellij IDEA创建Maven Web项目
  13. javaweb学习路之一--web项目搭建
  14. ZOJ 1654 二分匹配基础题
  15. 几行实现圆形头像,以及一些常见需求形状自定义ImageView组件
  16. Android ListView Adapter的getItemViewType和getViewTypeCount多种布局
  17. tar 压缩和解压缩使用笔记
  18. 《linux就该这么学》第十五节课:第14,15章,dhcp服务和邮件系统
  19. Python学习之路—————day04
  20. invalid location of tag 解决办法

热门文章

  1. jTessBoxEditor工具进行Tesseract3.02.02样本训练
  2. Java List 转 String
  3. PHP 操作redis 封装的类 转的
  4. Qt QByteArray或者Char转十六进制 QString
  5. vue后台管理框架
  6. MySQL数据库引擎详解
  7. 003.FTP客户端连接
  8. MD Test
  9. 【Tsinsen-A1486】树(王康宁) 点分治 + Trie
  10. UVALive 6909 Kevin's Problem 数学排列组合