衔接上一篇文章,提到了公司只能提供 Nginx 下的 SSL 证书,却要在 IIS 里面开启 https 这个问题。本来想去申请上次分享的沃通免费 SSL 证书。结果发现我并没有域名控制权,只好作罢。
转念一想,既然没有那我就生成一个好了!于是在百度搜索:pem to pfx (pem 是 nginx 下的证书格式,pfx 是 IIS7 下的证书格式)、SSL 证书转换等关键词。结果只搜到从 pfx 到 pem 的转换,而且是通过 openssl 和一大堆麻烦的步骤!
我是一个很懒的人,所以并不想在这棵树上吊死,于是到谷歌搜一下老外的工具。我深知在谷歌搜老外的最好是用英文,于是直接搜索 pem to pfx,果然一下就被我找到了:
Ps:要是不会翻谷歌,可以用谷粉搜搜引擎(自己百度地址),和谷歌一样的结果。
一、证书转换
1、在线转换
我随便点开第一个发现就可以成功转换!下面是简单分享:
工具地址:https://www.sslshopper.com/ssl-converter.html
简单步骤:
①、选择转换后的格式(Type To Convert To),这里我选择 IIS 专用的 pfx:
②、选择后栏位即刻发生改变,这时候需要上传 nginx 下的*.pem 和*.key2 个证书相关文件,然后输入你自定义的证书密码,最后点击最下面的蓝色按钮(Convert Certificate)即可下载到转换后的 pfx 证书了!
2、通过一些网站来实现
宝塔
上传证书后然后下载证书就可以看到多种平台的文件了。
当然很多支持https平台都有这个功能
3、命令行
Apache使用的SSL证书是.crt格式,如果你的网站从Apache换到了windows主机的iis上,这个时候要将原来的证书放到iis上使用,是不能够直接使用这个证书的,你首先要将.crt格式的证书转换成.pfx格式,这个可以通过一句命令在Linux主机上完成转换
openssl pkcs12 -export -out ssl2_me.pfx -inkey ssl2_me.key -in ssl2_me.crt运行命令后,将会提示你输入两次相同的密码,你可以设置一个密码,你在iis上导入证书的时候将会用到。
上面命令中的ssl2_me.crt 替换成你自己的证书文件名, ssl2_me.key替换成你自己的key文件名,ssl2_me.pfx替换成你自己的pfx证书名。二、导入证书
之前分享过在Linux 服务器下开启 https 的方法,而这次是 IIS,所以也简单分享一下。
①、添加证书管理
IIS 服务器->开始->运行->输入 MMC->确定后弹出如下界面->点击文件->选择添加/删除管理单元:
②、下拉左边列表,找到证书并添加:
③、选择计算机账户:
④、跟着向导继续下一步并完成后,刚刚的 MMC 控制界面就可以看到【证书】选项了,如图点开个人选项,并右键证书,在所有任务里面选择导入:
⑤、在弹出的界面的右下角,选择个人信息交换 pfx 格式,并选择刚刚通过在线转换得到的 pfx 证书:
⑥、后面继续跟着向导操作直到导入成功(导入时需要输入之前设置的证书密码),刷新管理界面看到证书即可。
三、分配证书
①、打开 IIS7.0 管理器面板,找到待部署证书的站点,点击“绑定”如图:
②、选择“绑定”->“添加”->“类型选择 https” ->“端口 443” ->“ssl 证书【导入的证书名称】” ->“确定”,SSL 缺省端口为 443 端口,如图:
确定后,就成功了,你可以通过 https 访问该站点测试效果。当然 https 页面里面是不允许出现 http 资源的,否则浏览器会自动拦截。解决方法就是讲这些 http 资源全改成 https 资源或者将 http://**.js 改成 ://**.js 这种灵活的相对路径,当然前提是这个资源支持 https 协议。
好了,就分享这么多,比较简单的经验,希望能节省不少苦逼的转换和设置时间!
暂无评论内容