CentOS7免费SSL证书及自动展期

2020-06-14 作者:

This post shows you how to obtain a wildcard SSL certificate for free (which values at least $50) from Let’s Encrypt on CentOS 7.x Linux, and get it setup to renew by itself with an automated script.

至于什么是SSL证书,有什么用,这里不赘述了。大致上,一个泛域名(通配符)DV证书,价值怎么也在CNY 2000/年开外,注意是按年缴费;企业型(OV)证书则更贵,年费肯定不下万。因此别嫌命令行操作不好搞,有免费午餐已然相当给力,还要啥自行车。

按规矩,周知一下,证书发行方是Let’s Encrypt。之所以能送免(bai)费(piao)证书,据说主要是全自动。证书生成、发放、展期等操作,都经shell脚本完全自动化 —— 无人工就成本低,蛮好理解;至于抢了那几家拦路收费的生意,咱也捧个人场,起码希望他们能一直坚持做下去。

证书自动获取

来一台阿里云上的CentOS7,以非root(但具备sudo权限)用户连接,先下载certbot-auto脚本,并授以执行权限。

然后以手工完成“挑战”(challenge)的方式,获取泛域名(通配符)DV证书,其中挑战选择DNS,也即按脚本要求,手工在域名解析中增加TXT记录 —— 以此证明此域名归属于申请者。

那么证书如何将http通信升级为https,不同的后端有不同的代码实现方式。但就目前主流做法,大家倾向于让https通信脱离开发范畴,直接配置在httpd中,比如nginx config(或者apache之类均可):

证书自动展期

想必刚才你留意到了,锃光瓦亮的免费证书到手,https可以正常工作。然而证书有效期只有三个月,那到期后怎么玩呢?将原证书文件移除,然后重新申请?

其实不必,初次申请证书我们已经填写了必要的信息,续期时大可依例而为。唯一的问题是,域名TXT记录还是需要手工添加,未免过于繁琐 —— 那么域名解析记录如何实现自动增删呢?

现在就需要国人ywdblog开发的,对接let’s encrypt钩子的,自动增删DNS解析的python脚本

有人可能会问,你自己github repo里那套阿里云ddns脚本不是改改就能用么?其实不然,ywdblog老兄的repo虽然提供的是类似功能,但胜在不依赖任何第三方包,也就是部署相比我那套更容易。现成的python 2.7环境,clone结束即运行,没有任何拖泥带水,在下何苦Reinventing the wheel呢?

然后……就没有然后了,离证书过期20天以内就可以运行续期命令,来自动完成DNS解析变更,从而获得新的SSL数字证书。

此外,在第一次申请证书完成后,建议把 certbot-auto 移动到 /etc/letsencrypt/,当然这一步是可选的。

  • renew代表是续期,而不是新申请,那么用户身份信息,及上次执行成功后所用配置会自动获得。
  • –preferred-challenges dns指希望使用dns来完成“挑战”。感兴趣其他挑战形式的,参考let’s encrypt官方文档。
  • –deploy-hook “/bin/systemctl restart nginx” 如果成功续期,则重启nginx服务。
  • –manual-auth-hook “/home/py27/certbot-letencrypt-wildcardcertificates-alydns-au/au.sh python aly add” 收到DNS挑战时,使用auth钩子启动第三方脚本来完成挑战。
  • –manual-cleanup-hook “/home/py27/certbot-letencrypt-wildcardcertificates-alydns-au/au.sh python aly clean” 完成DNS挑战后,使用cleanup钩子清理挑战。
  • 如果还不到续期时间窗口,而想要测试续期,可以加上–dry-run来模拟。

现在证书就续期成功了,可以检查一下自动DNS解析脚本留下的操作日志。

也可以看下更新后的证书详细信息。

后记

还有几件琐事,

  • 至于有打算做成免人工全自动定时展期的情况,利用linux crontab就好,这里不多BB了。
  • 泛域名(通配符)证书通常是多站共用,至于自动续期后如何同步到其他服务器,这个可以见仁见智,比如定时rsync,比如共享存储,都是手段,随便怎么玩。
  • 希望大家都能珍惜免费版泛域名证书,and enjoy your secured https web services。

原创文章,转载请注明: 转载自渔人小径

本文链接地址: CentOS7免费SSL证书及自动展期

打赏 PayPal

文章的脚注信息由WordPress的wp-posturl插件自动生成

打赏 赞(0)
微信
支付宝
微信二维码图片

微信扫描二维码打赏

支付宝二维码图片

支付宝扫描二维码打赏

最近文章

分享

发表评论

电子邮件地址不会被公开。 必填项已用*标注