使用Certbot申请免费泛域名证书
环境
- 可操作web容器的服务器;
- certbot客户端;
- web容器(Nginx);
- 可修改DNS解析记录的域名;
过程
1. 安装certbot和阿里云DNS插件
安装步骤在certbot的官网上有,而且很详细。但最大的问题是,官网上的安装方法要求使用snapd,而七牛云服务器(实际上是阿里云服务器)并不支持snapd,所以需要使用yum安装。
1.1 安装手动申请证书所需工具
shell
yum install certbot
1.2 安装自动续期证书所需工具
shell
yum install certbot python3-certbot-nginx
pip3 install certbot-dns-aliyun
pip3 install certbot-nginx
2. 申请证书
2.1 手动申请证书
shell
certbot -d *.sunxiaolong.net -d sunxiaolong.net --manual certonly
这个--manual
参数很重要,如果没有这个参数,就必须得用dns插件了~
随后会有提示,给域名添加一个TXT解析,按照提示去域名解析控制台添加对应记录。这里一定要注意这个解析记录不要区分大陆还是海外线路,否则可能会失败。
解析记录添加完成后,回到命令行按下回车键。
证书和私钥文件会保存到/etc/letsenctypt/live
下,命令行上有回显。
2.2 自动申请证书
- 将阿里云DNS的key写到本地,格式如下:
properties
dns_aliyun_access_key=*******
dns_aliyun_access_key_secret=******
随后保存到服务器上,如/opt/cert/aliyun-dns.conf
。access_key和access_key_secret是阿里云的多用户访问控制中相应用户的key和secret。 2. 签发证书
shell
certbot certonly --authenticator=dns-aliyun --dns-aliyun-credentials='/opt/cert/aliyun-dns.conf' -d "*.sunxiaolong.net,sunxiaolong.net"
然后就签发成功了~证书位置可以看回显,确认配置没错之后,reload一下nginx就可以了。
3. 修改nginx配置
将nginx配置中对应域名的证书和私钥文件路径指定到certbot回显的路径上。
4. reload nginx
重新加载nginx即可生效
shell
$NGINX_HOME/sbin/nginx -s reload
5. 验证是否生效
重新打开对应的HTTPS站点,不再提示证书不安全,且证书过期时间和certbot命令行回显能对应上即为成功。
6. 配置自动续期
6.1 手动续期
待证书要过期,执行certbot renew
,再reload nginx即可。
6.2 自动续期
- 编辑crontab
shell
crontab -e
添加此记录,0 0 1 * * /root/renew-cert.sh
,表示每月1日0点执行续期脚本。
2. 编写续期脚本 /root/renew-cert.sh
的内容如下:
shell
#!/bin/bash
certbot certonly -n --authenticator=dns-aliyun --dns-aliyun-credentials='/opt/cert/aliyun-dns.conf' -d "*.sunxiaolong.net,sunxiaolong.net"
nginx -s reload
- 重新加载crond服务。
shell
service crond reload
完结~