宝塔

在宝塔网络管理,选择DNS验证,手动解析阿里云DNS,设置密钥后自动申请即可

阿里云平台

搜索:数字证书管理服务

在SSL证书管理中,可以申请免费的DigiCert证书,时效三个月,好处是对于部署在阿里云的cdn服务,在申请证书后,平台会自动更新cdn相关服务。

certbot自动

安装certbot和阿里云DNS插件

安装步骤在certbot (opens new window)的官网上有,而且很详细。但最大的问题是,官网上的安装方法要求使用snapd,而七牛云服务器(实际上是阿里云服务器)并不支持snapd,所以需要使用yum安装。

安装手动申请证书所需工具

1
apt install certbot

安装自动续期证书所需工具

1
2
3
apt install certbot python3-certbot-nginx
pip3 install certbot-dns-aliyun
pip3 install certbot-nginx

申请证书

手动申请证书

1
certbot -d *.sunxiaolong.net -d sunxiaolong.net --manual certonly

这个--manual参数很重要,如果没有这个参数,就必须得用dns插件了~
随后会有提示,给域名添加一个TXT解析,按照提示去域名解析控制台添加对应记录。这里一定要注意这个解析记录不要区分大陆还是海外线路,否则可能会失败。
解析记录添加完成后,回到命令行按下回车键。
证书和私钥文件会保存到/etc/letsenctypt/live下,命令行上有回显。

自动申请证书

将阿里云DNS的key写到本地,格式如下:

1
2
dns_aliyun_access_key=*******
dns_aliyun_access_key_secret=******

随后保存到服务器上,如/opt/cert/aliyun-dns.conf。access_key和access_key_secret是阿里云的多用户访问控制中相应用户的key和secret。

  1. 签发证书
1
certbot certonly --authenticator=dns-aliyun --dns-aliyun-credentials='/opt/cert/aliyun-dns.conf' -d "*.sunxiaolong.net,sunxiaolong.net"

然后就签发成功了~证书位置可以看回显,确认配置没错之后,reload一下nginx就可以了。

修改nginx配置

将nginx配置中对应域名的证书和私钥文件路径指定到certbot回显的路径上。

reload nginx

重新加载nginx即可生效

1
$NGINX_HOME/sbin/nginx -s reload

验证是否生效

重新打开对应的HTTPS站点,不再提示证书不安全,且证书过期时间和certbot命令行回显能对应上即为成功。

配置自动续期

手动续期

待证书要过期,执行certbot renew,再reload nginx即可。

自动续期

编辑crontab

1
crontab -e

添加记录,0 0 1 * * /root/renew-cert.sh,表示每月1日0点执行续期脚本。

编写续期脚本 /root/renew-cert.sh的内容如下:

1
2
3
#!/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服务。

1
service crond reload