SSL证书更新-acme.sh

Catalogue
  1. 1. 参考资料

突然发现域名的ssl证书过期了,而且重新申请只有3个月,找了一圈,决定按照这个方法申请 letsencrypt 的证书。

首先参考acme.sh 脚本这个地址的中文说明:https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E

登录 远程主机用root 用户安装脚本

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

生成证书的过程中,需要注意如下问题。一定要注意域名和nginx的域名要一致,添加 www.前缀。否则会一直提示验证失败。

1
acme.sh --issue -d www.mydomain.com --nginx

修改域名为Nginx 配置文件里面的域名后,又出现了如下的错误,我的这个问题是因为Nginx 的配置文件里面的把80端口从定向到443端口的配置语句导致的。注释掉这一句就好。rewrite ^(.*)$ https://${server_name}$1 permanent;

1
acme.sh Invalid status, :Verify error:"error":{

注释掉nginx配置文件里面的这一句:

1
2
3
4
5
6
7
8
9
server {
listen 80;
server_name reddwarf.life;
#rewrite ^(.*)$ https://${server_name}$1 permanent;

location / {
try_files $uri $uri/ /index.html;
}
}

如果脚本运行成功后会出现 sucessCert sucess 的提示

修改 /etc/nginx/conf.d/default.conf ,把证书名改为现在需要使用的证书目录和姓名。

1
2
ssl_certificate "cert/cert.pem";
ssl_certificate_key "cert/key.pem";

然后修改证书安装命令的目录。

1
2
3
4
acme.sh --install-cert -d www.qluoman.top \
--key-file /etc/nginx/cert/key.pem \
--fullchain-file /etc/nginx/cert/cert.pem \
--reloadcmd "service nginx force-reload"

到这一步,证书应该安装成功。

1
acme.sh --info -d www.qluoman.top #查看已经安装的证书

使用如下的命令查看自动更新是否正确安装

1
2
3
crontab  -l

56 * * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

开启 acme.sh 更新

升级 acme.sh 到最新版 :

1
acme.sh --upgrade

如果你不想手动升级, 可以开启自动升级:

1
acme.sh --upgrade --auto-upgrade

之后, acme.sh 就会自动保持更新了.

你也可以随时关闭自动更新:

1
acme.sh --upgrade --auto-upgrade  0

参考资料