https://www.jianshu.com/p/074e147b68b0
更新脚本:
https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au
前言
从去年一直用Let’s Encrypt觉得还挺不错的,毕竟是免费的,用着也挺方便,不过当时不是通配符的,只能申请www开头域名,直到今年3月份后,Let’s Encrypt开放了通配符证书,所以搞事情的我又申请了通配符证书,并且写了一篇从http网站快捷免费升级到https的文章,欢迎过来点个小心心❥(^_-)
但是通配符该如何升级呢?很多朋友现在使用了 *.yuming.com
却不能直接更新了,那么这篇文章就带大家来看看如何更新通配符证书。
先来个小广告,君哥的Java零基础初级学习全套视频已经推出啦
有弟弟妹妹的可以看过来 https://hledu.ke.qq.com
想做在线讲课的也可联系
一、证书常规操作
查看当前服务器所配置的证书
-- 查看证书可执行文件位置
find / -name certbot-auto
-- 找到位置后执行该命令查看证书
./certbot-auto certificates
输出证书状态如下,我这边有4个
直接更新证书
如果你申请了通配符证书,直接按正常流程直接执行./certbot-auto renew
更新,单域名的证书更新完成了,但通配符就蛋疼了,出现错误如下代码和图,这里我只贴出异常部分
Attempting to renew cert (51object.com-0001) from /etc/letsencrypt/renewal/51object.com-0001.conf
produced an unexpected error: The manual plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('An authentication script must be provided with --manual-auth-hook
when using the manual plugin non-interactively.',). Skipping.
重点是:--manual-auth-hook
,意思就是当我们自动使用插件的时候必须提供一个身份验证脚本,我们可以使用cerbot
提供的--manual-auth-hook
来进行证书的更新,因为要录入DNS记录,所以会失败(说到这里,是否还记得申请时需要走云服务器配置DNS记录的那一刻)
根据这个解决思路:
- 可以使用 certbot 插件,比如 certbot-dns-cloudflare 插件(还有其他的),就是自动更新 cloudflare 等 DNS 的记录。
- 手动编写脚本,cerbot 官方提供了 cloudflare 的样例。
这里呢我使用了
Github
上已有朋友编写的python脚本代码进行操作,其原理就是通过访问【阿里 or 腾讯】云接口生成DNS校验记录,大家先下载下来。
在这里感谢他们的付出与贡献,开源推动了互联网的进步,你们是优秀的程序员
代码地址如下:Let’s Encrypt 通配符证书如何续期代码
注意:使用python的朋友只需要2个文件即可(sslupdate.sh和27|36.py)
继续干,如何续期?
如下两行命令是需要先将github文件下载下来,替换掉py文件中的ACCESS_KEY_ID
和ACCESS_KEY_SECRET
,首先需要开放云控制台中的accesskeys
,如何开放可以去查阅其他资料,这里不做描述,
命令如下
1:对机器上所有证书 renew
$ ./certbot-auto renew --manual --preferred-challenges dns --manual-auth-hook /usr/local/ssltpfupdate/sslupdate.sh
2:对某一张证书进行续期
$ ./certbot-auto renew --cert-name 51object.com-0001 --manual-auth-hook /usr/local/ssltpfupdate/sslupdate.sh
小叉子,没问题的可以跳过这段
我CentOS上的python版本为自带的2.7.5,运行python脚本时,提示出错:No module named pytz.tzinfo
所以需要安装pytz模块才能接着做,pytz.whl模块下载地址
[root@iz2zeip7gvbiukof8kwdapz python]# pip install wheel
[root@iz2zeip7gvbiukof8kwdapz script]# pip install pytz-2018.5-py2.py3-none-any.whl
安装完成后执行sh文件,这次成功更新,执行的命令如下:
-- 检验过程是否无异常,成功后并不会生效(测试命令)
./certbot-auto renew --cert-name 51object.com-0001 --manual-auth-hook /usr/local/ssltpfupdate/sslupdate.sh --dry-run
-- 正式更新,此操作生效
./certbot-auto renew --cert-name 51object.com-0001 --manual-auth-hook /usr/local/ssltpfupdate/sslupdate.sh
下图为测试命令执行
正式更新命令我就不贴图了,和测试的输出基本一致,祝你好运啦。。。。
更新完成之后你会发现阿里云上多了一条TXT记录,就是py代码中通过接口新增的
本次更新操作到此结束,接下来我们可以加入到定时任务中
加入 crontab
编辑文件 /etc/crontab :
1 1 */1 * * root certbot-auto renew --manual --preferred-challenges dns --manual-auth-hook /脚本目录/sslupdate.sh
作者:君哥聊编程
链接:https://www.jianshu.com/p/074e147b68b0
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。