简单了解
- 纯
Shell语言编写的ACME协议客户端. - 一个脚本即可自动颁发,续订和安装证书.
- 支持在
Docker内使用,且支持IPv6.
安装脚本
curl https://get.acme.sh | sh -s email=<你的邮箱> |

PS: 这里不使用--standalone模式生成证书, 直接忽略警告即可.
PPS: -s email=<你的邮箱> 不用加也可以运行, 但推荐加会更好.
测试命令
重新进入下终端(输入bash或zsh)刷新下环境变量, 然后输入acme.sh命令测试, 正常输出即可.

PS: 如提示无相应命令则进入 ~/.acme.sh 目录下, 使用路径执行./acme.sh
下文使用
memos.owq.world域名进行演示, 配置时注意替换成自己的域名.
配置Nginx转发
相关资料 -> Nginx 安装升级教程
使用nginx模式生成证书, 添加域名的80端口配置, 示例配置如下:
server { |
Nginx模式生成证书
acme.sh --issue --nginx -d memos.owq.world |

最后会出现证书的私钥和认证文件输出.
使用 SSL.com 生成证书
适用证书认证失败的情况, 默认的服务商生成的证书会有些第三方服务认证不通过, 这时候换一个服务商生成一般就解决了.
进入 https://www.ssl.com/ 注册账户
进入API管理页面
![]()
获取对应
ACME Key和HMAC Key![]()
设置登录
acme.sh --register-account --server ssl.com -m me@email.com \
--eab-kid <ACME Key> --eab-hmac-key <HMAC Key>生成证书
acme.sh --server ssl.com --issue --nginx -d memos.owq.world
查看证书信息
acme.sh --info -d memos.owq.world |
修改CA
如果生成失败, 类似下图, 可以尝试修改CA发布机构后重试.

acme.sh --set-default-ca --server letsencrypt |

自动续期证书
创建存放证书目录, 注意Nginx根目录要对应上.
mkdir -p /usr/local/nginx/certs/memos.owq.world |
配置Nginx SSL转发, 替换证书中memos.owq.world域名即可.
# HTTPS server |
然后配置acme.sh, 注意--reloadcmd为nginx重启命令, 每次续期证书后都会重启更新配置.
acme.sh --install-cert -d memos.owq.world \ |
或者使用变量, 快速修改运行命令.
export domain_name='memos.owq.world' certs_dir=/usr/local/nginx/certs && acme.sh --install-cert -d $domain_name \ |

这时候看看证书存放目录, acme.sh已经把文件移动过来并重命名了.
查看计划任务
crontab -l |
acme.sh会创建了一条续期任务, 每次执行会续期配置中的证书, 默认是每30天续期一次, 每一次是续期3个月.
30 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null |
PS: 注意检查crontab服务是否正常运行哦
疑难杂症
- 重新生成新的证书时, 要先删除
/root/.acme.sh/域名证书文件夹. - 生成失败时, 注意检查
Nginx配置是否正确, 确保只有80端口的配置, 再去运行生成. - 一般问题都能谷歌到, 谷歌不到的 -> 删除
~/.acme.sh目录, 重新安装一下, 邮箱注意变换, 这能解决大多数问题.
https://github.com/acmesh-official/acme.sh/wiki
https://github.com/acmesh-official/acme.sh/wiki/SSL.com-CA

