安装
添加源
$ yum -y install yum-utils
$ yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
测试certbot是否安装成功
$ sudo certbot certonly
可能会出现报错,对比需求的版本与当前版本是否一致,不用关系pyopenssl的问题,主要是request版本的问题
$ pip list 2>/dev/null | grep requests
$ rpm -q python-requests --queryformat '%{VERSION}\n'
如果不一样,则修改requests的版本:
$ pip install --upgrade --force-reinstall 'requests==2.6.0'
使用
- webroot模式
该模式需要有网站的代理路径,他会在webroot的目录下创建/.well-known/acme-challenge来验证是否绑定该服务器
$ sudo certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com -w /var/www/thing -d thing.is -d m.thing.i
- standalone模式
该模式不会校验网站路径,而会绑定校验服务器的443端口,所以需要注意在生成前需要关闭占用443端口的服务,生成验证成功之后再启动即可。
之后证书失效时进行renew时也需要重复该步骤。
certbot certonly --standalone -d example.com -d www.example.com
更新证书
- 测试命令
certbot renew --dry-run
- cron任务
--pre-hook 这个参数表示执行更新操作之前要做的事情,因为我有 --standalone 模式的证书,所以需要 停止 nginx 服务,解除端口占用。
--post-hook 这个参数表示执行更新操作完成后要做的事情,这里就恢复 nginx 服务的启用
15 2 * */2 * certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"
最后我们用 crontab 来启动这个定时任务
crontab certbot-auto-renew-cron