前置工作

先安装socat

1
$ dnf install socat

安装acme.sh

1
$ curl https://get.acme.sh | sh -s email=my@example.com

acme.sh会自动安装到系统环境变量中,顺便会增加一个定时任务用于https证书的自动更新

1
2
$ crontab -l
0 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null

验证域名

签发证书之前要对域名进行验证,我选择的是通过DNSAPI的方式验证。

登陆阿里云后台,创建一个用户并勾选OpenAPI

记得添加AliyunDNSFullAccess / 管理云解析(DNS)的权限

KeySecret添加到.bashrc

1
2
3
$ vi .bashrc
export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"

签发证书

以我的短域名shixf.com为例

1
$ acme.sh --issue --dns dns_ali -d shixf.com -d www.shixf.com

如果需要泛域的话可以使用下面的命令

1
$ acme.sh --issue --dns dns_ali -d shixf.com -d '*.shixf.com'

等待差不多1分钟左右,证书就签发完毕了

安装证书

最后安装证书到Nginx并重新加载配置

1
2
3
4
$ acme.sh --install-cert -d shixf.com \
--key-file /usr/local/certs/shixf-com/secret.key \
--fullchain-file /usr/local/certs/shixf-com/secret.pem \
--reloadcmd "service nginx force-reload"