在 Windows 申请 Let’s Encrypt wildcard 凭证

  上回抱着尝试的心态在 SSL For Free 申请 Wildcard 凭证 (*.abc.com),没想到申请成功了,原本还以为 Let’s Encrypt 只能针对个别网址进行申请。最近由于凭证快满三个月,便准备再进行申请,却发现 SSL For Free 被 ZeroSSL 买下来后,针对 Wildcard 凭证的申请,只能以付费的方式购买,因此只好放弃此平台的服务。

 

  在网路搜寻一些资讯后,大多数文章都是建议使用 Let’s Encrypt 推荐的 Certbot 工具,既可以申请凭证,还能自动展延。但我实际试用后,在网址验证这段出现一些问题而无法顺利进行,因此只好作罢。

 

  之后试着搜寻可以像 SSL For Free 那样线上申请凭证的网站,最后找到 免费获取HTTPS! 这个不太起眼但很棒的网站! Get HTTPS for free! 是个 open source 的网站,网页的页面很简陋,但是说明很详细。试着依照上面的步骤进行,可惜在步骤 3. 要透过 openssl 验证时,网页说明的指令在 Windows 环境似乎无法运行,因此再度卡关。

 

  好在后来在 Cook Wu’s Murmurs 的文章 得知,有网友针对 Get HTTPS for free! 写了一个可以在 Windows 运行的超方便协力工具 – GetHttpsForFree-UI,只要把 openssl 的位置在 GetHttpsForFree-UI 设定好,后面搭配网页的步骤一步一步进行,几乎都只要复制贴上就好,不需用到指令。

 

  下面为以「Get HTTPS for free!」+「openssl」+「GetHttpsForFree-UI」申请「Let’s Encrypt wildcard 凭证」的说明:

※ 如果是要续签凭证,把前一次的 account.key、domain.key 及 openssl.cnf 放到指定位置,并设定好 OpenSSL Path 及 Working Path,先做步骤 10.,接着从 12. 依序做下去即可。

 

1. 下載 Windows的openssl,并解压缩。

2. 下載 GetHttpsForFree-UI.exe

3. 执行 GetHttpsForFree-UI.exe,在 OpenSSL Path 设定 openssl.exe 的位置。

4. 在 Working Path 设定一个待会要存放「凭证」及「金钥」的目录。

5. Account key 与 Domain key 的档案名称可以使用预设值。

6. openssl.cnf 档可以在 opensslshare 目录底下找到,也可以点选「Download an OpenSSL.cnf template file」,下载范本档,我这边选择后者。下载范本档后,存到 Working Path 的目录。

7. 点选「将必要的项目复制到剪贴板」,此时剪贴簿会含有 openssl.cnf 所需的参数,接者打开刚刚的 openssl.cnf,在最后一行「贴上」。

 

8. 修改刚刚贴上的 subjectAltName 参数,将后面的网址改成 *.abc.com。

 

9. 回 GetHttpsForFree-UI.exe 工具,切换到「Step 1 and 2」页面,按下「Create Account Key」,此时会产生 Let’s Encrypt 所需的邮件帐号的 Public key 内容,并自动复制到剪贴簿。另外 Working Path 资料夹会产生一个 account.key 的私钥档。

 

10. 到「免费获取HTTPS!」网站,于 Step 1 输入 Email 及贴上刚刚的 Public key,并按下「Validate Account Info」。

 

11. 回 GetHttpsForFree-UI.exe 工具,点击「建立网域金钥并提出要求」,此时会产生 CSR 内容并自动复制到剪贴簿。另外 Working Path 资料夹会产生一个 domain.key 的私钥档。

 

12. 到「免费获得HTTPS!」网站,于 Step 2 贴上刚刚复制的 CSR 内容,并按下「Validate CSR」。

 

13. 同样在「Get HTTPS for free!」网站,将 Step 3「Accept the Let’s Encrypt terms and condition」下的指令复制起来。

 

14. 回 GetHttpsForFree-UI.exe 工具,切换到「Step 3 and 4」页面,贴到「Data」栏位,并点击「Excute OpenSSL」,此时会自动将「Result」栏位的资料复制到剪贴簿。

 

15. 再回到「Get HTTPS for free!」网站,将刚刚的值贴到指令下方的栏位,并按下「Accept Terms」。

 

16. 重复上面步骤,完成「免费获得HTTPS!」网站上 Step 3 的其他栏位。

 

17. 在「免费取得HTTPS!」网站的 Step 4,重复前面步骤,在产生验证值后,按下「Load Challenges」。

 

18. 接着下方会产生要在 DNS Server 新增的 TXT 资讯,完成新增后,点选「我可以看到abc.com的TXT记录」。

 

19. 将「免费获得HTTPS!」网站的 Step 4 剩下的指令栏位,都比照前述步骤,贴到 GetHttpsForFree-UI.exe 执行完再贴回网站,并按下对应按钮。

 

20. 在「免费取得HTTPS!」网站的 Step 5 (最后一步),复制「Signed Certificate Chain」的内容。

 

21. 回 GetHttpsForFree-UI.exe 工具,切换到「Step 5」页面,在「Signed Certificate」贴上刚刚复制的值,并按下下方的「Create Certificate」,便会在 Working Path 资料夹会产生 .crt 的伺服器凭证档案。

 

  到这边就已经完成 Let’s Encrypt 的 wildcard 凭证申请,深深觉得 GetHttpsForFree-UI.exe 这工具真的很方便,很感谢作者,另外作者也有录制 教学影片,其实看完影片,就会大概知道怎么进行了,建议可以先看过一遍。

 

【番外篇】

  如果要将 crt 伺服器凭证档转成 PFX 档,可以参考 保哥的这篇,里面有很详尽的说明。

 

◎ 透过下面指令,将 「crt 伺服器凭证档」与「domain.key 私钥」合并成 PFX 档。

openssl pkcs12 -in abc.com.crt -inkey domain.key -export -out abc.com.pfx -password pass:1234
# 1234 是匯入密碼,請自行修改。

 

【2020/08/04 补充】
上述程序所产生的档案说明如下:

【openssl.cnf】
# 讓 OpenSSL 產生憑證的範本檔。

【account.key】
# Let's Encrypt 郵件帳號的私鑰檔。

===============================

【domain.key】
# 產生 CSR 時的私鑰檔。

【abc.com_cert.crt】
# 主要憑證檔。

【abc.com_chain.crt】
# 根憑證 (root)。

【abc.com.pfx】
# 使用 openssl 將「abc.com_cert.crt (主憑證)」與
# 「domain.key (私鑰)」合併轉換而成。

 

【參考連結】

7 回应

  1. 透过 WIN-ACME 申请并自动更新 Windows Apache 上的 Let’s Encrypt 凭证 | 老森常譚 说: |

    […]   先前有写过一篇「在 Windows 申请 Let’s Encrypt wildcard 凭证」,该篇主要是透过 “免费获取HTTPS!” 网站以动手动方式申请或展延凭证。最近在架新的网站时,试着用 WIN-ACME 工具来申请,以方便之后使用其自动展延 (更新) 功能。 […]

  2. 慈悲树 说: |

    好棒的图文教学,好棒的图文教学。

    好棒的图文教学,好棒的图文教学
    好棒的图文教学

    好棒的图文教学、好棒的图文教学
    感谢您!

    很高興對你有幫助,不客氣~ :)

    陈方安生 回复 |
  3. 埃里克 说: |

    感谢分享!

    不客气 🙂

    陈方安生 回复 |
  4. Tenrivers 说: |

    请问透过此方式申请,也是3个月要更新一次吗?
    有点懒了…

    是的,要手动展延。
    如果要自动的话,可以考虑官方推荐的Certbot程式哦。

    陈方安生 回复 |

发表评论

请注意:: 评论审核已启用,可能会耽误您的评论. 有没有必要重新提交您的评论.