通过 DNS 验证申请 Let’s Encrypt ECC 证书
适合:Debian / Ubuntu 系统,Nginx HTTPS 配置,无法使用 HTTP 验证的场景。本文提供完整教程、常见问题解答。
简介
在 Nginx 环境中,想要启用 HTTPS,必须申请 SSL/TLS 证书。
本文演示如何使用 acme.sh 通过 DNS 手动验证方式申请 Let’s Encrypt ECC 证书,并在 Nginx 上配置。
项目开源地址:https://github.com/acmesh-official/acme.sh
适合场景:
- 没有公网 80 端口或无法使用 HTTP 验证
- 想使用 ECC 证书提升性能
- Debian / Ubuntu 系统
- 配置 Nginx HTTPS 服务
1.安装 acme.sh
curl https://get.acme.sh | sh
ln -s /root/.acme.sh/acme.sh /usr/local/bin/acme.sh
acme.sh --version2.切换到 Let’s Encrypt 证书
acme.sh --set-default-ca --server letsencrypt
acme.sh --info3.申请 ECC 证书(DNS 手动验证)
acme.sh --issue -d example.com \
--dns \
--ecc \
--yes-I-know-dns-manual-mode-enough-go-ahead-please把示例 example.com 域名换成你自己的
记下返回的 TXT 值,用于 DNS 验证。
4.添加 DNS TXT 记录
| 类型 | 主机记录 | 记录值 |
|---|---|---|
| TXT | _acme-challenge.example.com | 返回的 TXT 值 |
注意不同 DNS 服务商可能要求写完整域名或只写子域名。
点击下方:链接到 DNS 解析或 Cloudflare 配置教程:
5.验证 DNS 是否生效
nslookup -type=TXT _acme-challenge.example.com 1.1.1.1返回 TXT 值即生效,否则等待 DNS 同步。
如果提示NXDOMAIN错误
原因:
- TXT 记录未添加
- DNS 未生效
- 主机记录写错
6.签发 ECC 证书
acme.sh --renew -d example.com \
--yes-I-know-dns-manual-mode-enough-go-ahead-please \
--ecc
证书路径:
~/.acme.sh/example.com_ecc/
├─ fullchain.cer
├─ example.com.key
└─ ca.cer7.Nginx 配置 SSL 证书
复制证书:
mkdir -p /root/nginx/ssl
cp ~/.acme.sh/example.com_ecc/fullchain.cer /root/nginx/ssl/example.com.cer
cp ~/.acme.sh/example.com_ecc/example.com.key /root/nginx/ssl/git.example.com.key以你的nginx 证书实际路径为准
8.最后
如果想签发新的证书按照以下方法:
1.强制签发新证书
acme.sh --renew -d example.com \
--yes-I-know-dns-manual-mode-enough-go-ahead-please \
--ecc --force
每次使用 --force 会生成新的 TXT 验证值,需要重新添加 DNS。2.验证DNS生效
nslookup -type=TXT _acme-challenge.example.com 1.1.1.1返回 TXT 值即生效,否则等待 DNS 同步。
3.下发证书
acme.sh --renew -d example.com \
--yes-I-know-dns-manual-mode-enough-go-ahead-please \
--ecc以上就是本文全部内容
评论