本鱼拟成立工作室承接项目开发/软件定制/云设施开发运维/办公设备技术支持等,如您有相关需求,欢迎来询 | ::博客文章推荐::

将Godaddy的证书部署到IIS上

: 服务器运维 木魚 22996℃ 1评论

什么鬼,居然就设置一个IIS的事情,你居然还要写一篇博客?! 
简单回答:是的!

 

太长不看版准备好Linux或Win10的Bash环境,直接翻到第二阶段,根据提示将key文件和crt、p7b文件生成pfx后导入IIS即可!

第一阶段

当然,对于此类Goddy上申请的证书,Goddy会给你生成后的证书文件,里面包含一个 p7b 以及一个 crt 文件。然鹅IIS要使用的是PFX文件。怎么办呢?

在Goddy官方有这样一篇教程,会教你如何在IIS里使用“完成证书申请”来安装证书,也会有很多文章告诉你都是这样操作的。然鹅我这样操作的时候遇到了一点小问题,就是完成证书申请后证书列表里有这样一张证书,但是刷新一下就消失了……无论以何种方式完成申请,不是报错就是刷新后消失。

我琢磨这个问题琢磨了很久,最后只能推测为——完成申请证书的这台机器不是原来制作证书申请的机器,所以没有对应的私钥,也就进而导致无法完成申请证书。

因为我这是帮同事的忙部署的,所以后来联系了相关的同学,于是给我补充了两个文件。

看到key文件没?妥妥的私钥啊。辣么问题来了,我应该怎么通过这些文件来获得pfx文件呢?看起来通过完成证书申请不知道咋弄啊。

然后我想到了万能的Linux。毕竟Windows上不好做到的,Linux似乎都很容易……来来来,openssl一招搞定(参考资料)。

openssl pkcs12 -export <目标pfx> -inkey <申请的key> -in <Goddy返回的crt> -certfile <其它crt文件>

最后一个 -certfile 是可选的。参考资料里是Goddy的bubble,但是提供给我的文件里是个p7b文件没法用,所以我就留空了。命令行里,cert.pfx 是最终生成的pfx,后面的key和crt分别对应了前面的文件。下面的密码是指定导出密码,我这里全都省略了直接按回车。

回车后,PFX文档搞定。啊,Bash(WSL)真是一个好东西啊。OpenSSL也是一个好东西,嗯。

然后拿到pfx了,直接在IIS的服务器证书里导入,再去绑定域名,就可以了对不?理论上如此啊,只可惜我这么操作的时候,在最终绑定域名添加证书的时候,报了一个我摸不着头脑的错误……

执行此操作时出错。指定的登录会话不存在。可能已被终止。 (异常来自 HRESULT:0x80070520)

尝试访问 SSL 服务器 凭据私钥时发生错误。从加密模块返回的错误代码为 0x8009030D。内部错误状态为 10001。

我在尝试谷歌这些错误的时候,无一例外地提到了这样一篇长长的checklist,这篇checklist告诉了你,这个问题很复杂,解决起来很麻烦,很有技术含量。

然而我检查了所有提示之后,都没找到问题所在。直到最后在这篇台湾同胞的文章中才找到了答案。 

原来,安装证书,不仅要IIS里导入导入的时候勾中允许导出此证书,还需要在证书管理器中手动导入导入的时候还得选中“标志此密钥为可导出的密钥”

我记得之前安装别个证书没这么复杂啊。为啥Goddy的证书这么麻烦。

如此这般后,绑定就正常了。

综上所述,总结而言就是:

  1. 需要原始申请的key文件,以及Goddy发过来的crt文件,使用OpenSSL合并成pfx文件
  2. 证书管理器中除了p7b需要安装外,还需要安装pfx文件(需要再本地计算机中,所以直接运行certmgr.msc不行,而是运行mmc.exe后在文件菜单中点击“添加/删除管理单元”,然后依次选择证书本地计算机
  3. 在IIS中的服务器证书中导入pfx证书
  4. 设置绑定

阿西吧。

00017.gif

第二阶段

这时候我开始琢磨了,因为之前安装别的证书似乎不需要这么手动导入。那么这里的问题是啥呢,于是我留意到了这个p7b文件。根据Goddy的指南,这里面包含了Goddy的中间证书。

那么有没有办法把这个证书合并到pfx里呢?合并过去是不是就不需要再去这样手动导入证书管理器呢?

首先,我在这篇SSL的教程中查到了相关的命令行。

openssl pkcs7 -print_certs -in gd-g2_iis_intermediates.p7b -out gd.crt

最后的 gd.crt 就是我们需要用到的其它crt文件。再修改一下最终得到pfx的命令行。

openssl pkcs12 -export <目标pfx> -inkey <申请的key> -in <Goddy返回的crt> -certfile gd.crt

如此得到的PFX文件,可以直接在IIS中导入(导入的时候同样需要选中可导出),就可以绑定了,不再会有错误。

果然谷歌是个好东西啊……

00017.gif

喜欢 (4)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. GIF出处群934446546

    找图出处2020-04-27 13:54 回复