🛜 使用 acme.sh 自动生成免费 SSL 证书
使用 acme.sh 自动生成和安装免费 SSL 证书
acme.sh
是一个实现了 ACME 协议的脚本工具,可以通过 Let’s Encrypt 免费生成 SSL 证书。本文介绍如何使用 acme.sh
安装证书。
主要步骤:
- 安装
acme.sh
- 生成证书
- 安装证书到 Nginx、Apache 或其他服务
1. 安装 acme.sh
安装非常简单,只需运行以下命令即可:
注意:将 email
替换为你自己的邮箱
1
curl https://get.acme.sh | sh -s email=[email protected]
若网络不佳,可以使用代理安装:
1
curl https://get.acme.sh | sed 's/github.com/mirror.ghproxy.com\/https:\/\/github.com/g' | sed 's/raw.githubusercontent.com/mirror.ghproxy.com\/https:\/\/raw.githubusercontent.com/g' | sh -s email=[email protected]
2. 生成证书
2.1 手动 DNS 验证方式
手动在 DNS 中添加 TXT
记录进行域名所有权验证,不需要服务器或公网 IP。
1
acme.sh --issue --dns -d mangzhexuexi.com --yes-I-know-dns-manual-mode-enough-go-ahead-please
根据 acme.sh
提示,在域名管理面板中添加相应的 TXT
记录。然后使用以下命令重新生成证书:
1
acme.sh --renew -d mangzhexuexi.com --yes-I-know-dns-manual-mode-enough-go-ahead-please
2.2 使用 API 自动验证
如果使用 DNS 提供商的 API,acme.sh
可以自动管理 TXT
记录。例如使用 DNSPod 的 API:
- 登录 DNSPod 账号 并生成
API ID
和API Key
- 配置环境变量并生成证书:
1
2
3
4
export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"
acme.sh --issue --dns dns_dp -d mangzhexuexi.com
此后,证书生成过程可以自动化:
1
acme.sh --issue -d mydomain2.com --dns dns_dp
3. 安装证书
生成证书后,需要将证书安装到 Nginx 或 Apache 等服务中。使用 --install-cert
命令将证书复制到合适的位置:
1
2
3
4
acme.sh --install-cert -d mangzhexuexi.com \
--key-file /etc/nginx/mangzhexuexi.com.key \
--fullchain-file /etc/nginx/mangzhexuexi.com.cert \
--reloadcmd "sudo systemctl restart nginx"
默认情况下,acme.sh
将证书存放在 ~/.acme.sh/
目录下,不要直接使用该目录下的文件。
4. 参考资料
本文由作者按照
CC BY 4.0
进行授权