我有一个在私有子域上运行的服务器,server.internal.example.com
example.com
是公开的但internal.example.com
实际上不是。
我曾使用 CertBot 生成证书,*.example.com
但如果我尝试将其扩展为包含*.internal.example.com
DNS 质询,则会失败,因为 LetsEncrypt 无法访问此域。我尝试运行以下两个程序:
sudo certbot certonly --manual --preferred-challenges=dns -d *.example.com -d *.internal.example.com
sudo certbot certonly --manual --preferred-challenges=dns -d *.example.com -d server.internal.example.com
但这两者都要求我进行 LetsEncrypt 无法看到的 DNS 记录更改。有什么办法可以解决这个问题吗?
答案1
是什么阻止您简单地在公共 DNS 中创建 letsencrypt 所需的 DNS 记录?
如果是为了保密你的内部网络布局?
特定主机名的 TLS 证书存在且已创建的事实通常会成为公开信息(例如,参见https://crt.sh/)。如果您不想这样:请使用内部 CA 来获取内部 TLS 证书(以及所需的一切),从而避免整个问题。
由于证书的存在或多或少会验证主机名的存在,因此没有理由不允许在公共 DNS 中记录内部主机(如果仅在证书请求/续订期间必要的记录)...
除非你的公共 DNS 将你的内部 DNS 区域委托internal.example.com
给你的内部 IP 地址,否则没有任何技术原因可以阻止你简单地创建一个
_acme-challenge.server.internal.example.com. IN TXT 667drNmQL3vX6bu8YZlgy0wKNBlCny8yrjF1lSaUndc
在您的公共 DNS 区域中记录(具有正确的值)。
答案2
不,没有办法解决这个问题。您无法获得 Let's Encrypt 无法查看的域的 Let's Encrypt 证书。
考虑为您的内部证书创建自己的 CA。对于内部环境来说,这非常简单(例如,查看 easy-rsa)。