切换主题
如何使用 Acme.sh 自动更新 Nginx 网站证书
1. acme.sh 安装
bash
# 将 my@example.com 换成您自己的邮箱地址
curl https://get.acme.sh | sh -s email=my@example.com小贴士
安装完成后,程序安装在/root/.acme.sh/下,且可在任何地方使用acme.sh命令

2. 使用 CloudFlare DNS api 验证
2.1. 添加您的域名到 CloudFlare
账户主页-添加域:按照页面指示添加您的个人域名
选择计划:选择下方的free计划,点击继续
dns记录:会自动导入已有的 dns 记录,检查没什么问题,点击继续
更新名称服务器:根据指引,在您域名之前网站,修改 ns 记录。主要删除原来的 dns 锁定和删除并添加新的 ns 记录
验证:修改完成后,检查添加状态是否正常,如不正常,可手动最下方立即检查或手动检查添加过程是否正确
2.2. 创建 API 令牌

- 点击创建令牌

- 选择使用模版
编辑区域dns
- 权限配置

- 确定创建令牌

- 复制生成的 Token,并保存到密码管理器或其他受控位置;请勿将真实 Token 写入文档或提交到仓库。
2.3. 区域 ID 和账户 ID

2.4. 申请 SSL 域名证书
bash
# API令牌:上述步骤获取的令牌token值
export CF_Token="YOUR_CLOUDFLARE_API_TOKEN"
# 以下二选一
# 单个域名:上述区域ID值
export CF_Zone_ID="YOUR_CLOUDFLARE_ZONE_ID"
# 多个域名:上述账户ID值
# export CF_Account_ID="YOUR_CLOUDFLARE_ACCOUNT_ID"- 配置以上环境变量后,手动执行申请
bash
# 以下申请ssl通配证书,根据提示操作
acme.sh --issue --dns dns_cf -d example.com -d '*.example.com'小贴士
设置和使用的任何环境变量都将保存在 ~/.acme.sh/account.conf
检查脚本执行日志,是否获取证书正常,提示证书文件保存在何地 
- 后续定期更新,是由计划任务 cron 里的定期检查和自动更新

3. nginx 等程序配置 ssl
在nginx.conf配置文件,添加 ssl 相关配置并重启服务,浏览器检查 https 访问是否正常。以下供参考:
bash
ssl_certificate /opt/ssl_cert.pem;
ssl_certificate_key /opt/ssl_key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305;
ssl_ecdh_curve secp521r1:secp384r1:secp256r1:x25519;