Let’s Encrypt自动续期脚本

在之前的文章中有对Let’s Encrypt进行介绍,这个开源项目提供的Free SSL Cert非常适合在小型站点上进行部署。部署过程稍微复杂但是十分可靠。

美中不足的是,Let’s Encrypt提供的SSL证书有效期仅为90天,也就是说,为了确保证书不过期,使用者尽量得在60天内就对证书有效期进行更新操作。

所谓的更新,最简单的方法就是重新生成,但重新生成证书会有两个问题:

  1. 生成证书时会占用80端口,也就是说在生成证书期间,网站将无法访问。
  2. 手动升级证书过程虽然简单,但能够自动化的操作最好还是机器执行比较容易。

看了许多国内的关于自动续期脚本的文章,大多是拿来主义,直接使用别人封装好的脚本。诚然这十分方便,但其实自己编写一个自动续期脚本也并不困难。在DO上有篇文章详细的说明了这个过程(文章链接),可供参考。这里放出我自己的版本。

自动更新命令配置

这里使用Let’s Encrypt自带的Webroot插件完成证书更新。使用这个插件的好处在于,它在执行更新操作的时候创建了一个虚拟的环境用于更新证书,这就避免了80端口的占用。于是乎,不关闭网站完成证书更新便成为了可能。

首先,需要将Webroot插件的工作目录加入到Nginx的server字段中,使得Let’s Encrypt的服务能够访问到这个目录以用来validate。

在”在Nginx上部署Let‘s Encrypt证书“一文中,有Nginx服务器配置,这里需要在443端口的server字段中加入下面几行:

以上修改的文件为

在我的Nginx配置文件中,网站root目录为

执行更新操作时,需要选定这个目录运行脚本。

下面执行更新操作

请将上述命令中的路径和域名改为自己的。

重载Nginx生效

上述命令似乎有点复杂,下面我们将上面的命令配置化。首先复制Let’s Encrypt的样例cli文件

去除以下字段前的注释并对配置文件进行修改:

现在,你可以用配置化的命令执行更新操作

创建自动更新脚本

于是我们可以创建一个脚本来自动执行上述操作

样例脚本如下:

赋予执行权限

加入crontab自动执行

暂无评论

发表评论

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