<br />
<br />
在启动DDNS之后,自定义域名通过https访问时,总会提示证书不可信,需要自己导入对应的域名证书才能避免浏览器报错。但是免费的域名有效期非常短,只有90天,需要频繁更换。
因此,我们可以利用acme.sh实现对证书的自动更新。
- 开启SSH登录,并通过SSH登录到服务器
- 安装acme.sh
# email是用来接收证书过期通知的邮箱
curl https://get.acme.sh | sh -s email=my@example.com
# 配置acme.sh执行路径
export PATH=$PATH:$HOME/.acme.sh
# [可选]默认CA切换为Let's Encrypt
acme.sh --set-default-ca --server letsencrypt
- 申请证书
由于ACME HTTP方式需要监听80端口,一般家庭宽带并不开放80端口,因此我们需要通过DNS方式验证域名所有权。根据自己域名的权威服务器设置对应的环境变量,这里以dnspod为例。
全部dnsapi可以参考这里:
export DP_Id=xxxx
export DP_Key=xxxxxxxx
acme.sh --issue --dns dns_dp -d example.com
- 查看证书安装位置
需要先在设置-安全性中上传新的证书,上传完成后,可以通过以下命令查看证书存放目录
cat /usr/trim/etc/network_gateway_cert.conf | jq .
- 配置免密sudo
因为部署证书需要重启nginx,需要root权限,因此需要配置免密sudo
sudo visudo
在文件最后一行增加以下内容,需要将username替换成自己的用户名
username ALL=(ALL) NOPASSWD: NOPASSWD: ALL
- 部署证书&重启nginx
需要将
/cert/path 和 /key/path 替换成第四步查到的对应文件路径
acme.sh --install-cert -d example.com \
--fullchain-file /cert/path --key-file /key/path \
--reloadcmd "sudo systemctl reload trim_nginx.service"
|