我有一个服务器,它运行两个不同的web服务器(Apache和Nginx)。Apache服务器负责处理指向Wordpress站点的所有通信量,而Nginx服务器则为我的Python提供服务,并响应Web应用程序。
由于与Apache的端口冲突,我不得不将API设置为在端口88上运行,将React应用程序设置为在90上运行。我用这种方法测试了它,它起了作用。所有的请求都会被转发到443,所以我想不安全的端口是什么并不重要。
当我最后运行命令添加证书时:
sudo certbot --nginx -d a.domain.com
这给了我一个错误。经过进一步检查,我发现它试图在端口80而不是88上打开域。我做了一些研究,发现了--http-01-port
规则,并将其设置为88,但它又给了我同样的错误:
sudo certbot --nginx --http-01-port 88 -d a.domain.com
在尝试了这么多次之后,我担心certbot可能会很快阻止我几个小时或几天,因为我怀疑垃圾邮件,而且我已经没有可能的解决方案了。
以前有人处理过这个问题吗?你怎么解决的?
发布于 2021-11-19 13:13:51
无法指定与默认值(80/443)不同的端口。
我建议您使用acme验证。我用它,它工作的很好。这里有更多详细信息:https://www.digitalocean.com/community/tutorials/how-to-acquire-a-let-s-encrypt-certificate-using-dns-validation-with-acme-dns-certbot-on-ubuntu-18-04
同样,acme-dns对于为具有公共域的intranet加密证书非常有用。
发布于 2022-11-13 16:04:57
@tero-kilkanen的建议使我想到使用端口80上的默认捕获所有VHost进行验证,并将其webroot交给certbot命令用于任何域:
certbot certonly --webroot -w /var/www -d www.example.com
当然,这只有在默认的catch有一个webroot的情况下才能工作。但如果没有,仍然可以使用重写规则来执行重新定位(f.e.)如果对等方不是certbot,则路由到具有用于certbot验证请求的webroot的内部VHost (您可以通过查找.well-known
路径来识别它,f.e。-见https://eff-certbot.readthedocs.io/en/stable/using.html#webroot)。对于证书更新,您必须重写最终的VHost才能定位到默认的catch-all VHost。
如果目标域A记录已经指向请求服务器IP地址(这已经是一种DNS验证),那么最好能绕过这个验证。只是为了创建/更新一个证书副本而停止/启动一个the服务器,在那里重新加载就足够了,这是太多而且很难接受的。但也许我只是不明白他们为什么这么做的原因。
发布于 2022-07-18 13:50:20
certbot certonly --独立的-d myapp.domainexample.com --非交互式的--同意-tos-电子邮件email@domainexample.com --http-01-port=9090
https://serverfault.com/questions/1084029
复制相似问题