基于certbot+nginx
生成证书
参考网站:certbot官网
总结就是如下几条命令:
wget https://dl.eff.org/certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto
sudo chown root /usr/local/bin/certbot-auto
sudo chmod 0755 /usr/local/bin/certbot-auto
sudo /usr/local/bin/certbot-auto --nginx
在执行最后一条命令时有可能会一直卡在
“Installing python package…"
这是由于下载python的镜像源访问限速,换成阿里云的
编辑certbot-auto中的下载链接
vim certbot-auto
输入:/DEFAULT_INDEX_BASE查询,或则直接往后翻到1607行,可以看到一行信息:DEFAULT_INDEX_BASE ‘https://pypi.python.org’
直接将DEFAULT_INDEX_BASE = ‘https://pypi.python.org’ 修改为DEFAULT_INDEX_BASE = ‘https://mirrors.aliyun.com/pypi’,然后:/wq!保存。
执行成功后会让你输入你想要进行https连接的域名
报错如下:
这里是由于我没有开启防火墙的443端口
开启之后又出现如下错误:
这里需要配置nginx能够接收80端口的访问,并且防火墙开启80端口,也有可能是域名本身的问题,需要换个域名
之后执行成功。
过期更新
证书有效期三个月,到期前一个月左右会收到邮件,所以前面生成证书的时候有一步需要填邮箱地址,一定要填自己能够登陆的邮箱
执行命令
certbot-auto renew --no-self-upgrade
,
不加–no-self-upgrade可能会由于网络原因导致更新失败的问题
可以在host文件添加域名
这样就可以更新成功了。
在更新证书的时候certbot会自动进行你的域名的挑战,是http形式的请求,所以需要配置nginx允许http访问,这里就需要将http请求转发到https上
黄线部分就是你的域名,下面的listen 80就可以支持http访问直接转发到https上,这样certbot在进行域名挑战的时候就可以顺利通过了。
配置自动更新计划
0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto renew