用acme_tiny自动获得Let's Encrypt的证书

用acme_tiny自动获得Let's Encrypt的证书

本站内容版权属于本人。转载须告知本人,写明出处,并在文首提供指向本站对应文章的链接。
本文链接:用acme_tiny自动获得Let's Encrypt的证书

从今年7月开始,Chrome会将所有HTTP网站标记为“不安全”。这对站长来说是件有点难过的事情,因为要费心去配置证书,不然在别人看来,你就是个不安全的网站(其实即使是HTTP明文也未必会不安全,网站还是能够做加密)。买证书是个肉疼的事情,又多了一笔开销。幸好还有免费的证书可以使,那就是Let's Encrypt,真是良心。可惜这个站申请的证书只有3个月的期限,要是手动更新还不得麻烦死。又幸好这个站支持ACME协议,可以使用REST API完成证书申请。所以只要找找脚本,就可以自动申请证书了。

Let's Enctypt的这个页面列出了许多可以使用的ACME客户端,我选用了acme_tiny,因为它是开源的,只有一个python文件,而且文档也比较简明。基本上看README就可以完成取得证书的方式了。

首先是生成一个account key,用来表示用户,可以为每个网站都生成一个,也可以共用同一个。这个文件很重要,最好有备份,因为必须通过个这account key才能访问和更改和你域名相关的证书:

然后要为网站生成密钥:

生成证书申请文件(将yoursite.com换成你的域名):

因为Let's Encrypt要验证你有这个网站,你需要在网站的特定目录下放置特定文件,放置文件这件事acme_tiny会帮你做,但你需要创建一个放置文件的目录,并且更改服务器的配置,这里以nginx为例。也可以直接将这个目录放置在网站目录之下,这样就不用更改服务器配置了

运行acme_tiny,得到证书:

更改服务器配置,启用证书,还是以nginx为例:

再打开网站,就会发现它能够跳转到HTTPS并且变成“安全”的了。

为了能自动更新证书,编写脚本renew.sh

然后使用crontab之类的工具设置计划任务:

这样就可以每两个月自动更新证书了,完美。

发表评论

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

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.