主持人:数字海洋
操作系统:CentOS
我有一个涵盖我的域名的现有 SSL 证书。
$ certbot certificates
产生此输出。
Found the following certs:
Certificate Name: example.com
Domains: example.com www.example.com
Expiry Date: 2020-04-12 21:20:31+00:00 (VALID: 86 days)
Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem
我安装了postfix
,我认为我需要添加mail.example.com我的证书。
我尝试添加mail.example.com使用此命令添加到我的证书
$ sudo certbot certonly --standalone -d mail.example.com
不幸的是它抛出了这个错误,
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for mail.example.com
Waiting for verification…
Challenge failed for domain mail.example.com
http-01 challenge for mail.example.com
Cleaning up challenges
Some challenges have failed.
IMPORTANT NOTES:
The following errors were reported by the server:
Domain: mail.example.com
Type: dns
Detail: DNS problem: NXDOMAIN looking up A for mail.example.com
certbot 似乎正在尝试安装mail.example.com使用 A 记录。在 Digital Ocean 的我的域名记录部分mail.example.com被创建为 MX 记录,而不是 A 记录。
答案1
您说得对,为了传递邮件,您需要一个 MX 条目。但是:mail.testsite.com 是一个完全合格的主机名。您需要告诉所有想要向您传递邮件的人这个主机名的 IP 地址是什么。因此,您还需要一个 A 记录,指向您想要接收邮件的服务器。
创建一条记录并指向您的邮件服务器,然后从该机器运行 certbot。确保 Web 服务器在端口 80 上响应 mail.testsite.com,验证才能成功。然后它就会正常工作。
答案2
像这样做:
$ sudo certbot -d mail.example.com --manual --preferred-challenges dns certonly
将打印 DNS TXT 记录(不要点击进入),将其发布到您的 DNS,并等到您确定 TXT 记录可以从 DNS 外部读取,然后单击进入并将得到验证。
答案3
如果 Ionos 是您的 DNS 提供商,并且您遵循将邮件服务器命名为 mail.example.com 的通用惯例,则创建 A 记录“mail”和 MX 记录“mail”是不够的。您的 TXT 记录不满足 certbot 的要求。
您必须创建一个子域名使用 Ionos UI 将其命名为“mail”。然后,您可以在 UI 中导航到该子域,创建 TXT 记录并将其命名为“_acme-challenge”。这将生成一个有效的“_acme-challenge.mail.example.com”TXT 记录。
最好将其留待以后查询
在我看来,每次运行 certbot 时,挑战中的值都会发生变化。因此,您可以保留 TXT 记录,但每次都必须对其进行编辑。