无法使用 nginx 配置 certbot 以接受 https

Posted

技术标签:

【中文标题】无法使用 nginx 配置 certbot 以接受 https【英文标题】:unable to config certbot with nginx to accept https 【发布时间】:2019-07-28 18:12:28 【问题描述】:

当我尝试使用 this tutorial 和其他类似的 certboot 配置我的 nginx 应用程序时。我总是使用 certbot 的相同 amswer

将调试日志保存到 /var/log/letsencrypt/letsencrypt.log 插件 selected: Authenticator nginx, Installer nginx 获取新的 证书执行以下质询:http-01 质询 sicocme.enterpriserealdomain.com http-01 挑战 www.sicocme.enterpriserealdomain.com 正在等待验证... 清理挑战 授权程序失败。 sicocme.enterpriserealdomain.com (http-01): urn:ietf:params:acme:error:connection :: 服务器无法连接 到客户端验证域::dns::DNS问题:NXDOMAIN 查找 sicocme.enterpriserealdomain.com 的 A, www.sicocme.enterpriserealdomain.com (http-01): urn:ietf:params:acme:error:connection :: 服务器无法连接 到客户端验证域::dns::DNS问题:NXDOMAIN 为 www.sicocme.enterprisrealdomain.com 查找 A

重要提示: - 服务器报错如下:

域名:sicocme.enterprisrealdomain.com 类型:connection 详情:dns :: DNS 问题:NXDOMAIN 查找 A for sicocme.enterpriserealdomain.com

域名:www.sicocme.enterpriserealdomain.com 类型:连接 详情:dns :: DNS 问题:NXDOMAIN 查找 A for www.sicocme.enterpriserealdomain.com

要修复这些错误,请确保您的域名是 正确输入和该域的 DNS A/AAAA 记录 包含正确的 IP 地址。此外,请检查 您的计算机有一个可公开路由的 IP 地址,并且没有 防火墙阻止服务器与 客户。如果您使用的是 webroot 插件,您还应该验证 您正在从您提供的 webroot 路径提供文件。

当我检查我的域服务器时,具有正确 IP 地址的 www 和 no-www 都存在 A 记录。服务器可以上网,可以通过IP或域名访问或被访问,证明DNS域识别本机并存在

我也让舒尔允许使用 ufw 的正确端口

To                         Action      From
--                         ------      ----
443/tcp                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
22/tcp                     ALLOW       Anywhere
5432/tcp                   ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
443/tcp (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
22/tcp (v6)                ALLOW       Anywhere (v6)
5432/tcp (v6)              ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)

为什么会发生这种情况? 提前致谢!

【问题讨论】:

【参考方案1】:

问题是您的 DNS 记录尚未传播。请参阅下面的网址 - https://dnsmap.io/#A/sicocme.enterpriserealdomain.com

确保您的 DNS 记录得到传播,一切正常。

【讨论】:

我的网络是私人网络。无意在外部提供商中注册此 DNS 服务器。如何检查记录在我的网络上的传播情况?此网络未暴露在互联网上 certbot 部署letsencrypt 证书,这需要对域的所有者进行验证。目前它可以使用 DNS 记录验证或 http 质询来做到这一点。无论哪种情况,您都需要验证您是否拥有该域。 但我不知道为什么找不到我的 DNS。在这样的情况下我该怎么办?如何让letsencrypt在本地通过记录或http质询通过DNS验证? 您需要为您的域添加 DNS 记录以进行验证。 我已经添加了一条 A 和一条 CNAME 记录。在端口 80 中监听时,我可以像 http://sicocme.enterpriserealdomain.com 这样访问我的应用程序。这不是证明 DNS 配置正确吗?我是否需要添加另一种记录。主机文件也已更新以适应此配置【参考方案2】:

这是同样的问题,但与 Apache

检查服务器设置的A记录然后

 sudo certbot --apache -d DOMAIN_WOTHOUT_WWW -d DOMAIN_WITH_WWW

然后就可以正常使用了。

【讨论】:

【参考方案3】:

您应该为 www.yourdomain.com(对于 www)添加新的 DNS 记录。

我认为您只为“@”添加了 DNS 记录 请检查:

【讨论】:

以上是关于无法使用 nginx 配置 certbot 以接受 https的主要内容,如果未能解决你的问题,请参考以下文章

certbot在Centos7上配置合法签名证书,实现nginx的https访问

certbot在Centos7上配置合法签名证书,实现nginx的https访问

certbot在Centos7上配置合法签名证书,实现nginx的https访问

certbot在Centos7上配置合法签名证书,实现nginx的https访问

Certbot的使用

Nginx使用Certbot配置Let's Encrypt域名https解决方案