利用 openssl 转换证书格式
场景1:nginx 正常配置证书 ✔
- 从阿里云申请的证书,服务器类型选择 Nginx(证书格式 pem/key),下面是利用 nginx 转发到后端 java 服务的配置:
注:如果是 windows 系统配置目录,请使用 c:/nginx 而非 c:\nginx
server {
listen 80;
server_name www.sqlfans.cn;
return 301 https://www.sqlfans.cn$request_uri;
}
server {
listen 443 ssl;
server_name www.sqlfans.cn;
ssl_certificate c:/nginx/nginx/ssl/www.sqlfans.cn.pem;
ssl_certificate_key c:/nginx/nginx/ssl/www.sqlfans.cn.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8024;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
场景2:转换为 pfx 格式以供 IIS 使用 ✔
- 利用私钥文件(.key格式)和证书文件(.crt或.pem格式),转换为iis证书(.pfx格式)
[root@localhost ~]# ls
xxx.com.crt xxx.com.key xxx.com.pem
[root@localhost ~]# openssl pkcs12 -export -out xxx.com.pfx -inkey xxx.com.key -in xxx.com.crt
[root@localhost ~]# ls
xxx.com.crt xxx.com.key xxx.com.pem xxx.com.pfx
- 转换成iis可识别的fpx格式,中间证书包(通常名为 gd_bundle-g2-g1.crt)
openssl pkcs12 -export -out xxx.com.pfx -inkey xxx.com.key -in xxx.com.crt -certfile gd_bundle-g2-g1.crt
场景3:利用 openssl 将 GoDaddy 证书转换为 pfx 格式以供 IIS 使用 ✔
- 由于购买的 GoDaddy 证书,解压针对 IIS 服务的压缩包,没有 .pfx 格式文件,参考 场景2 转换的的 pfx 文件在绑定证书的时候报错“中间证书丢失”,利用 chrome 访问 https 提示页面不安全。
- 由于 GoDaddy R1 新根证书 未被 Windows / Chrome 原生信任库收录,而 Chrome 不会自动下载缺失交叉证书,需要强制下发完整三段证书链(站点+中间+交叉根),步骤如下:
#.原始iis压缩包文件
cd /opt/ssl
ll _.xxx.com.chained.crt
ll _.xxx.com.csr
ll _.xxx.com.key #.私钥
ll 92a52fca81437d14.crt #.站点证书
ll 92a52fca81437d14.pem
ll gd_bundle_dv-r1-g2.crt.pem #.中间证书
#.下载godaddy交叉根证书
# wget -c https://certs.godaddy.com/repository/gd_tls_root-r1-cross-g2.crt
wget -c http://iso.sqlfans.cn/nginx/gd_tls_root-r1-cross-g2.crt
#.合并完整的证书链
cat 92a52fca81437d14.crt gd_bundle_dv-r1-g2.crt.pem gd_tls_root-r1-cross-g2.crt > fullchain.crt
#.转换pfx格式
openssl pkcs12 -export -out xxx.pfx -inkey _.xxx.com.key -in fullchain.crt
场景4:利用 openssl 将 .cer 转换 .crt
- 利用 openssl 将 .cer 转换 .crt
openssl x509 -inform PEM -in server.cer -out server.crt
附:在线转换工具
- 在线转换:https://www.chinassl.net/ssltools/convert-ssl.html
- 关于在线转换的操作,点我查看
