最近收到Let's Encrypt的邮件,提醒我博客使用的SSL/TLS证书需要升级到ACMEv2协议,旧协议也就是ACMEv1 API将被逐步淘汰。本来打算趁最近有空就赶紧把这事搞定,但是后来发现事情并没有那么简单,脑子一热自己挖了个坑跳了进去。
先贴个邮件截图,我总结了下关键信息:从2020年6月1日开始,旧的ACMEv1协议就不允许新域名使用了,应当使用新版的v2协议。从表面情况来看这事情对于大部人来说是很简单的,只要升级原本使用的ACME客户端就可以了。
再贴个官方中文文档对ACMEv1 和 ACMEv2 协议的说明:
升级协议还是有很多有优点的,例如ACMEv2的DNS-01验证方式支持通配符域名,这是十分重要的功能。对比ACMEv1协议,由于不支持通配符域名,面对多个二级域名的情况下都需要全部再验证一次。
本来事情到这里应该就结束了,按理来说升级是件很简单的事情,我以前一直使用的ACME客户端是win-acme,正常情况下按照邮件说的下载最新的ACME客户端后,重新再走一边流程就完工。但现实是始终都下载失败,进度条总是卡住,仔细看了下发现下载地址用的是亚马逊Amazon S3 云存储-.-。
遇到我这种情况,解决方法很多,从效率上考虑,推荐以下几种:
- 修改下hosts文件或者使用一些网络加速器
- 也可以从GitHub直接下载win-acme的源码,然后自己重新编译再使用。
- 当然更换ACME客户端也是一种选择,Let's Encrypt官网有很多不错的ACME客户端。
总之尝试多次无法下载后,我并没有选择上面三种方法,而是突然想起了一个搁置/拖延很久的造轮子计划,就是自己开发ACME客户端。很久以前我就使用Topshelf搭配Quartz.Net作业调度框架开发了一个Windows服务,这么多年一直稳定的在服务器上奔跑,帮我进行自动化运维操作(每天执行定时任务,例如发送日志邮件,自动备份数据,统计数据等操作),现在终于也要把SSL证书更新这项功能添加到自动运维项目里。
最终折腾/拖拉了好多天才搞定这个问题,不过也算是完成多年前定下的一个小计划,挺有收获的。后续会写下开发SSL证书自动更新功能的文章,代码也会一并分享。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/99062.html