首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用cookiecutter-django修复ACME证书挑战中的“连接拒绝”错误

如何用cookiecutter-django修复ACME证书挑战中的“连接拒绝”错误
EN

Stack Overflow用户
提问于 2019-03-29 22:11:39
回答 1查看 2.6K关注 0票数 1

我已经创建了一个简单的网站使用炊具-django(使用最新的主人克隆今天)。运行停靠-组合设置在本地工作。现在我想把这个网站部署到数字海洋上。为此,我运行以下命令:

$ docker-machine create -d digitalocean --digitalocean-access-token=secret instancename

$ eval "$(docker-machine env instancename)"

$ sudo docker-compose -f production.yml build

$ sudo docker-compose -f production.yml up

在炊具-django 文档中,我读到

如果没有在项目中使用域名集的子域,请记住在部署网站之前将暂存/生产IP地址放在DJANGO_ALLOWED_HOSTS环境变量(请参见设置)中。如果不这样做,您将无法通过HTTP协议访问您的网站。

因此,在文件.envs/.production/.django中,我用DJANGO_ALLOWED_HOSTS更改了行

DJANGO_ALLOWED_HOSTS=.example.com (而不是example.com,而是使用我的实际域)

DJANGO_ALLOWED_HOSTS=XXX.XXX.XXX.XX (XXX.XX是我的数字水滴的IP;我也尝试了DJANGO_ALLOWED_HOSTS=.example.comDJANGO_ALLOWED_HOSTS=.example.com,XXX.XXX.XXX.XX,结果相同)

此外,我登录到我注册域名的地方,并确保将A-记录指向我的数字海洋液滴的IP。

使用此设置,部署将无法工作。我收到以下错误消息:

traefik_1 time="2019-03-29T21:32:20Z“level=error msg=”无法获得因规则\“”Host:example.com\“检测到的ACME证书\"example.com\”:无法为域生成证书example.com: acme: Error ->一个或多个域有一个或多个problem:\nexample.com顶点:错误: 400 :urn:ietf:params: acme:错误:连接:获取http://example.com/.well-known/acme-challenge/example-key-here:连接被拒绝,url:\n“

不幸的是,我未能找到解决这个问题的办法。任何帮助都是非常感谢的!

更新

当我按照注释中的建议在服务器上运行netstat -antp时,会得到以下输出(用占位符替换I):

代码语言:javascript
复制
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1590/sshd       
tcp        0      0 XXX.XXX.XXX.XX:22       YYY.YY.Y.YYY:48923      SYN_RECV    -               
tcp        0    332 XXX.XXX.XXX.XX:22       ZZ.ZZZ.ZZ.ZZZ:49726     ESTABLISHED 16959/0         
tcp        0      1 XXX.XXX.XXX.XX:22       YYY.YY.Y.YYY:17195      FIN_WAIT1   -               
tcp        0      0 XXX.XXX.XXX.XX:22       YYY.YY.Y.YYY:57909      ESTABLISHED 16958/sshd: [accept
tcp6       0      0 :::2376                 :::*                    LISTEN      5120/dockerd    
tcp6       0      0 :::22                   :::*                    LISTEN      1590/sshd

当我以前运行$ sudo docker-compose -f production.yml up时,netstat -antp返回以下内容:

代码语言:javascript
复制
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1590/sshd       
tcp        0    332 XXX.XXX.XXX.XX:22       ZZ.ZZZ.ZZ.ZZZ:49726     ESTABLISHED 16959/0         
tcp        0      0 XXX.XXX.XXX.XX:22       AA.AAA.AAA.A:50098      ESTABLISHED 17046/sshd: [accept
tcp        0      0 XXX.XXX.XXX.XX:22       YYY.YY.Y.YYY:55652      SYN_RECV    -               
tcp        0      0 XXX.XXX.XXX.XX:22       YYY.YY.Y.YYY:16750      SYN_RECV    -               
tcp        0      0 XXX.XXX.XXX.XX:22       YYY.YY.Y.YYY:31541      SYN_RECV    -               
tcp        0      1 XXX.XXX.XXX.XX:22       YYY.YY.Y.YYY:57909      FIN_WAIT1   -               
tcp6       0      0 :::2376                 :::*                    LISTEN      5120/dockerd    
tcp6       0      0 :::22                   :::*                    LISTEN      1590/sshd  
EN

回答 1

Stack Overflow用户

发布于 2019-03-30 16:25:05

在我的经验中,水滴是根据需要配置的-django,端口是正确打开的,所以除非您关闭它们,否则您不应该做任何事情。

通常,当发生此错误时,这是由于DNS配置问题造成的。基本上,让我们使用域example.com加密无法到达您的服务器。不幸的是,您并没有给我们您使用的实际域,所以我将尝试猜测。

你说你已经配置了一个A记录来指向你的液滴,这就是你应该做的。但是,这个配置需要在大多数名称服务器上传播,这可能需要时间。它可能是为您传播的,但是如果“让我们加密”使用的名称服务器不是,那么您的TLS证书将失败。

您可以使用在线工具检查它的传播情况,该工具同时检查多个名称服务器,比如https://dnschecker.org/

在您的机器上,您可以使用dig (对于感兴趣的人,我建议使用这段视频):

代码语言:javascript
复制
# Using your default name server
dig example.com

# Using 1.1.1.1 as name server
dig @1.1.1.1 example.com

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55426084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档