文章目录
acme.sh管理 SSL/TLS 证书
acme.sh 是一个基于 ACME 协议的轻量级工具,用于自动化申请、续签和管理 SSL/TLS 证书(如 Let’s Encrypt 证书)。它使用 Shell 脚本编写,依赖简单,支持多种 DNS 服务和 Web 服务器
操作流程
安装 acme.sh
curl https://get.acme.sh | sh -s email=your_email@example.com
自动安装到 ~/.acme.sh/,并添加定时任务(通过 crontab -l 查看)。
建议使用真实邮箱,用于证书到期提醒。

签发证书
方式一:HTTP 验证(签发前,请确保域名解析已到服务器)
acme.sh --issue -d example.com -d www.example.com -w /var/www/html
# 或
acme.sh --issue -d example.com -d www.example.com --webroot /var/www/html
-w: 指定网站根目录,工具会在目录下创建 .well-known/acme-challenge/ 临时文件验证所有权。
方式二:DNS 验证(无需服务器,适合通配符证书)
acme.sh --issue --dns dns_cf -d example.com -d '*.example.com'
需提前配置 DNS API 凭据(如 Cloudflare、阿里云等)。
例如 Cloudflare:
export CF_Key="your_cloudflare_api_key"
export CF_Email="your_cloudflare_email"
未实操,请自行测试
安装证书
acme.sh --install-cert -d example.com \
--key-file /path/to/key.pem \
--fullchain-file /path/to/fullchain.pem \
--reloadcmd "systemctl reload nginx"
证书文件默认保存在 ~/.acme.sh/example.com/。
–reloadcmd 指定证书更新后重启服务的命令。
自动续签
acme.sh 自动创建定时任务,证书到期前会主动续签(Let’s Encrypt 证书有效期为 90 天)。
手动续签:
acme.sh --renew -d example.com --force
其他实用命令
查看已安装证书:
acme.sh --list
升级 acme.sh:
acme.sh --upgrade
切换 CA 机构(如 ZeroSSL):
acme.sh --set-default-ca --server zerossl
或在配置文件在同目录中的account.conf中配置
DEFAULT_ACME_SERVER='https://acme-v02.api.letsencrypt.org/directory'
常见问题
-
权限问题:确保证书目录可被 Web 服务器读取(如 Nginx 用户需访问 /path/to/key.pem)。
-
DNS API 配置:参考 acme.sh DNS API 文档 设置环境变量。
-
通配符证书:必须使用 DNS 验证方式。
实操演示
以下教程与自行编译nginx,mysql 和php组合的环境部署


992

被折叠的 条评论
为什么被折叠?



