Let's Encrypt 泛域名配置证书
本文主要拿阿里云dns举例
安装acme.sh
curl https://get.acme.sh | sh
2021-01-10更新:(直接拉会报如下错误)
1. Failed connect to raw.githubusercontent.com:443; 2. Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 7 #通过修改host解析 sudo vim /etc/hosts 添加如下内容 140.82.114.4 github.com 185.199.108.153 github.github.io 199.232.69.194 github.global.ssl.fastly.net 199.232.28.133 raw.githubusercontent.com
通过修改之后,上述可以成功
不行的就拿下面这个地址
wget -O - https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh
获取阿里云Accesskey

申请地址:https://ak-console.aliyun.com/#/accesskey
设置为环境变量
export Ali_Key="对应Access Key ID" export Ali_Secret="对应Access Key Secret"
签发
acme.sh --issue -d xx.com -d *.xx.com --dns dns_ali
2021-01-10遇到的问题
-bash: acme.sh: command not found,通过如下即可
/root/.acme.sh/acme.sh --issue -d xx.com -d *.xx.com --dns dns_ali/root/.acme.sh/acme.sh --renew --force --issue --dns dns_ali -d *.suanliutudousi.com --yes-I-know-dns-manual-mode-enough-go-ahead-please
如果你不使用阿里云的dns,则需要替换dns_ali
支持的dns可以参考: https://github.com/acmesh-official/acme.sh/tree/master/dnsapi
只需要更换dns_ali即可
/.acme.sh/域名 会生成对应的证书 ,需要.acme.sh为默认隐藏文件
nginx配置ssl(部分)
listen 443 ssl; # 1.1版本后这样写ssl_certificate /.acme.sh/xx/xx.com.cer; # 指定证书的位置,绝对路径ssl_certificate_key /.acme.sh/ xx/xx.com.key; # 绝对路径,同上ssl_certificate /root/.acme.sh/*.suanliutudousi.com/*.suanliutudousi.com.cer; ssl_certificate_key /root/.acme.sh/*.suanliutudousi.com/*.suanliutudousi.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置 ssl_prefer_server_ciphers on;
2021-07-01证书更新失败
不使用默认的acme的更新脚本,写一个定时任务自动更新证书并重启Nginx服务
updateSSl.sh
#!/bin/sh /root/.acme.sh/acme.sh --renew --force --issue --dns dns_ali -d *.suanliutudousi.com --yes-I-know-dns-manual-mode-enough-go-ahead-please /etc/init.d/nginx reload # 重启nginx服务
通过crontab设置定时任务 0 0 15 * * /usr/bin/sh /root/updateSSl.sh
转载请注明出处: https://www.suanliutudousi.com/