Fork me on GitHub

let's encrypt自动续期

原创文章,未经允许,请勿转载

2018年4月更新:推荐使用acme.sh,比certbot好用,纯shell没有依赖

Certbot 是let's encrypt在Linux的客户端,let's encrypt生成的证书默认有效期是三个月,certbot提供了一个自动续期的脚本。

certbot 安装包是在 EPEL 仓库里的,如果你的系统没有安装 EPEL 仓库,记得先安装它:

yum -y install yum-utils
yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional

然后安装 certbot,这里以nginx为例:

yum install certbot-nginx

安装完毕,现在运行 certbot ,给你需要的域名安装lets encrypt证书(如果此处遇到错误请看文章结尾部分解决方案)

certbot --nginx

上面的命令会直接更改你的 nginx 配置文件,如果你只想生成证书,自己来配置 ngixn 配置文件的证书信息,可以执行下面的命令:

certbot --nginx certonly

测试一下是否能更新:

certbot renew --dry-run --agree-tos

好了,一切准备完毕,如果你以后有新增的域名,可以随时执行 certbot --nginx 继续添加。 你可以通过 crontab 来定时调用下面的命令来续期

certbot renew

我给一个crontab配置参考,每个月1号执行一次续期:

#分钟   小时    日      月      星期(0~6)       命令

0        0       1       *       *            certbot renew

1、如果遇到No module named 'requests.packages.urllib3'的错误,则执行下面的命令:

pip install requests urllib3 pyOpenSSL --force --upgrade

2、如果遇到 ImportError: 'pyOpenSSL' module missing required functionality的错误,可能需要重新安装一个更新版本的 certbot 。(参考来源

rpm --query centos-release  # centos-release-7-3.1611.el7.centos.x86_64
wget ftp://mirror.switch.ch/pool/4/mirror/centos/7.4.1708/cloud/x86_64/openstack-ocata/common/pyOpenSSL-0.15.1-1.el7.noarch.rpm
sudo rpm -Uvh pyOpenSSL-0.15.1-1.el7.noarch.rpm
sudo yum remove certbot -y
sudo yum install certbot-nginx -y
certbot renew  # OK

3、如果遇到 AttributeError: 'module' object has no attribute 'rand' 报错,则执行(参考来源

pip install 'pyopenssl==17.2.0'

4、如果遇到 AttributeError: 'module' object has no attribute 'SSL_ST_INIT' 报错,则执行:

sudo python -m easy_install --upgrade pyOpenSSL

官网参考:https://certbot.eff.org/#centosrhel7-nginx

来源:悠游悠游,2017-10-24,原文地址:https://yymmss.com/p/lets-encrypt-auto-renew.html