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