openEuler基于certbot申请内网ssl泛域名证书
·
一、安装 Certbot
pip3 install certbot certbot-nginx
二、申请证书
单域名申请:
certbot certonly --manual --preferred-challenges dns -d jk.xxx.cn
泛域名申请:
certbot certonly --manual --preferred-challenges dns -d '*.xxx.cn' -d xxx.cn
命令详解:
--manual:使用手动交互模式获取证书,不依赖 Web 服务或 DNS 插件。--preferred-challenges=dns:指定 DNS 方式验证,使用 DNS TXT 记录进行验证。-d '*.xxx.cn':泛域名,覆盖所有子域名(如 wiki.xxx.cn、jk.xxx.cn 等)。-d xxx.cn:主域名。
三、添加 DNS TXT 验证记录
执行申请命令后,Certbot 会暂停并提示你需要添加的 DNS TXT 记录值。此时请前往你的域名 DNS 管理后台,添加对应的主机记录(通常为 _acme-challenge)及 TXT 记录值。
四、验证 DNS 生效
添加记录后,不要立即按回车,先在终端验证 DNS 是否已生效:
dig _acme-challenge.xxx.cn TXT
注意: 一定要等到命令返回的 TXT 记录值与 Certbot 提示的一致,再按回车继续。DNS 传播时间通常需要 1-5 分钟,也可能更长时间。
验证通过后,Certbot 将成功签发证书:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/xxx.cn/fullchain.pem
Key is saved at: /etc/letsencrypt/live/xxx.cn/privkey.pem
This certificate expires on 2026-09-08.
These files will be updated when the certificate renews.
五、配置 Nginx
手动配置 Nginx 以应用申请到的证书:
server {
listen 443 ssl;
server_name xxx.cn *.xxx.cn;
ssl_certificate /etc/letsencrypt/live/xxx.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/xxx.cn/privkey.pem;
# 其他配置...
}
附录:为什么 DNS-01 适合内网环境?
- 不依赖 80 端口:DNS-01 验证只需要在 DNS 管理后台添加 TXT 记录,Let’s Encrypt 服务器会通过 DNS 查询来验证域名所有权,完全绕过了 HTTP 请求。
- 适用于内网 IP:即使你的服务器只有内网 IP,只要域名能正常提供 DNS 服务(解析记录可查),就能成功申请证书。
- 支持泛域名:如果你想申请
*.xxx.cn这样的泛域名证书,DNS-01 是唯一支持的方式。
附录:自动续期问题
由于使用 --manual 模式,Certbot 无法自动续期证书,需要你每 90 天手动重复上述步骤(Let’s Encrypt 证书有效期为 90 天)。
如果你需要自动化续期,可以考虑以下方案:
- 使用 acme.sh 脚本:它支持多种 DNS API 的自动验证,可以完全自动化。
- 使用 Nginx Proxy Manager:它内置了 Let’s Encrypt 集成,支持 DNS 挑战方式,可以自动续期。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)