gpt4 book ai didi

apache - 可以使用 Apache 作为反向代理从内部服务器提供 SSL/TLS 证书吗?

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:16 24 4
gpt4 key购买 nike

我有一个可通过公共(public) IP 访问的 Windows 服务器,其中一些 Apache 虚拟主机配置为代理传递到具有 Web 应用程序和服务的各种内部服务器(Apache 作为反向代理)。在其中一台内部服务器上,我想使用 letsencrypt 配置 HTTPS。

我设法在内部服务器上获得了有效的证书和服务器配置,但问题是我的反向代理 (Apache) 不想通过隧道传输此 HTTPS 流量。

编辑:我知道用证书配置反向代理会更容易,但 Let's Encrypt 还没有适用于 Windows 的良好自动化选项,并且每 60 天左右手动更改证书会非常乏味。

Apache 2.4 (Windows) 中的虚拟主机配置如下所示:

<VirtualHost *:443>
ServerName somesubdomain.mydomain.com
DocumentRoot "E:/Apache2/htdocs"
DirectoryIndex index.html

ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPreserveHost On

ProxyPass / https://10.3.1.83/
ProxyPassReverse / https://10.3.1.83/
</VirtualHost>

在使用来自 letsencrypt 的 certbot 的 10.3.1.83 (Ubuntu/Nginx) 上,我生成了有效的证书并将 Nginx 配置为提供 HTTPS 和证书。

当我从 LAN 内部访问 Ubuntu/Nginx 服务器时,一切正常。使用 Chrome DevTools,我可以验证它是否为正确的 LetsEncrypt 证书提供服务。

从外部(Internet)访问相应的子域,它返回一个内部服务器错误页面,并且在日志中 Apache 告诉我以下内容:

AH00961: HTTPS: failed to enable ssl support for 10.3.1.83:443 (10.3.1.83)

编辑:最后我找到了一些答案:似乎 SNI 代理没有在 Apache 中实现,只有“SNI 虚拟主机”。不过,可以使用 HAProxy 或其他项目。

Apache HTTPS reverse proxy with SNI without key on the proxy https://serverfault.com/questions/614806/apache-mod-proxy-with-https-without-key-material-using-sni https://serverfault.com/questions/625362/can-a-reverse-proxy-use-sni-with-ssl-pass-through/625364

最佳答案

我认为您必须通过在代理上设置加密来加密从反向代理到客户端的流量。

如果有的话,您的内部网络服务器和代理也可以通过在内部 NO(但已编辑).l 服务器上设置 SSL 来共享 SSL 通信。

但是您不能为所有服务器拥有一个证书(或者这意味着您在多个服务器上使用相同的私钥/公共(public)证书...)。

为什么会这样?因为如果客户端和后端服务器之间的流量是加密的,那么代理将无法读取 HTTP 请求的“Host” header 和其他有用的 header ,因此将无法中继甚至理解请求。 .

因此,除非您复制证书,否则我的回答是……不。 :-)

您的证书集中在您的代理上并没有那么糟糕...从安全的角度来看,它的风险更大(风险集中),但从管理的角度来看,它更容易(集中精力)。

编辑:如果您想接触大量受众,包括我假设的过时浏览器或开发库,答案是否定的(在其他情况下是肯定的,请参见下面的对话)。

关于apache - 可以使用 Apache 作为反向代理从内部服务器提供 SSL/TLS 证书吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44680362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com