acme.sh 是一个HTTS SSL 证书自动获取、更新工具,本文记录了该工具的部分命令使用方式。
官方文档
GitHub - acmesh-official/acme.sh: A pure Unix shell script implementing ACME client protocol
安装
1 | apt install git -y |
生成证书
直接生成
1 | apt install socat |
强制更新证书
1 | /root/.acme.sh/acme.sh --issue -d example.com -d www.example.com --standalone --force |
nginx 安装证书
生成证书
1 | acme.sh --issue -d example.com --nginx |
安装证书(acme.sh不建议直接使用 .acme.sh 文件夹里的证书)
1 | mkdir /root/example.com |
修改 nginx 配置
1 | http { |
更换证书 Server
https://github.com/acmesh-official/acme.sh/wiki/Server
默认使用 zerossl
1 | acme.sh --set-default-ca --server zerossl |
使用 letsencrypt
1 | acme.sh --set-default-ca --server letsencrypt |
使用计划任务自动更新
仅需要配置定时任务即可,acme.sh 会自动记录执行过的命令。
1 | crontab -l |
升级
1 | acme.sh --upgrade |
其他命令
查看证书列表 acme.sh --list
停止自动更新 acme.sh --remove -d example.com [--ecc]
查看、测试nginx 配置 nginx -t
查看nginx进程 ps -ef | grep nginx
kill nginx进程 kill -9 <pid>
问题
1 Please install socat tools first.
安装 socat
1 | apt install socat |
2 timeout 超时
设置超时时间 export MAX_RETRY_TIMES=9999
3 Can not find conf file for domain example.com
修改nginx配置,添加 server_name example.com;
1 | http { |
after
1 | http { |
原因是如果没配置 80 端口,nginx 访问的不是 location root 中的文件夹
debug 模式不会自动删除 .well-known/acme-challenge/ 中的文件,可以将复制链接到浏览器里试试能不能正常访问