简单了解
- 纯
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