【问题标题】:Handle acme-challenge Letsencrypt requests处理 acme-challenge Letsencrypt 请求
【发布时间】:2017-10-04 19:43:54
【问题描述】:

我有一个 NodeJs 应用,使用 ProxyPassApache 配置之后 运行。 HTTPS 是使用 Letsencrypt 设置的。

您可能知道,要验证 Letsencrypt 证书,我们必须处理由 Letsencrypt 服务器发送的如下请求。

http://sub.afakedomain.com/.well-known/acme-challenge/some-random-stringhere

目前,该请求导致 404 Not Found,因为 ProxyPass 将请求直接重定向到我的未处理此请求的 NodeJs 应用。

  • 解决方案是在我的 NodeJs 应用程序中定义一个路由来处理请求
  • 另一种解决方案是在 Apache 中检测请求,而不是将请求路由到 NodeJs 应用程序,而是将其直接路由到包含 .well-known 目录的文件夹。

我想使用 Apache 解决方案,但找不到正确的方法。

已知目录的路径

/var/www/html/.well-known/

我的虚拟主机设置

<VirtualHost *:80>
             DocumentRoot /var/www/html/fail
             ServerName sub.afakedomain.com
             RewriteEngine on
             RewriteCond %{SERVER_PORT} !^443$
             RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]
</VirtualHost>

<VirtualHost *:443>
             ProxyPreserveHost On
             ProxyRequests Off
             ServerName sub.afakedomain.com
             Proxypass / http://localhost:5555/
             ProxyPassReverse / http://localhost:5555/

             SSLEngine On
             SSLCertificateFile /etc/letsencrypt/live/afakedomain.com/cert.pem
             SSLCertificateKeyFile /etc/letsencrypt/live/afakedomain.com/privkey.pem
             SSLCertificateChainFile /etc/letsencrypt/live/afakedomain.com/chain.pem
             SSLCACertificateFile /etc/letsencrypt/live/afakedomain.com/fullchain.pem
             Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

如果您有任何建议,请随时提出!谢谢!

【问题讨论】:

    标签: node.js apache lets-encrypt


    【解决方案1】:

    如果你想排除.well-known目录被代理,你只需要添加一个排除。在现有的ProxyPass 行之前添加以下内容:

    ProxyPass /.well-known/ !
    

    你应该准备好了。有关详细信息,请参阅 ProxyPass 文档。

    【讨论】:

      猜你喜欢
      • 2016-04-18
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 2018-11-09
      • 2016-11-17
      • 2021-07-25
      • 2017-07-26
      相关资源
      最近更新 更多