当前位置: 首页 > 知识库问答 >
问题:

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

姜羽
2023-03-14

我有一个可以通过公共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>

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

当我从LAN内部访问Ubuntu/Nginx服务器时,一切都像excpect一样工作。使用Chrome DevTools,我可以验证它服务器是否有正确的LetsEncrypt证书。

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

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

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

在代理HTTPS://serverfault.com/questions/614806/apache-mod-proxy-with-https-with-key-material-using-sni HTTPS://serverfault.com/questions/625362/can-a-reverse-proxy-use-sni-with-ssl-pass-through/625364

共有1个答案

巩衡
2023-03-14

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

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

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

 类似资料:
  • 我使用Undertow服务器启用了WebSockets。当我直接运行Undertow服务器时,WebSockets运行良好。我使用HTTPS提供我的页面,并使用javascript中的“”测试endpoint:它可以工作。 但是现在,我尝试使用Apache作为反向代理,我希望它让WebSocket连接到达Undertow服务器。这是我当前的虚拟主机: 在这里,Undertow作为HTTP服务器(不

  • 使用nginx作为前端的反向代理将请求传递给应用是可行的。然而,只有nginx 1.4版本以上才支持WebSocket协议。下面是nginx代理HTTP和WebSocket请求的一个最基本的配置: server { listen 80; server_name _; location / { include proxy_params; pro

  • 我有一个apache服务器在运行,在这个服务器上我也有一个mongo数据库在运行,监听标准端口27017。 我试过这个,但似乎一点也不起作用:

  • 问题内容: 我当前的nginx配置是这样的: 我对nginx非常陌生,但是至少我知道nginx在提供静态文件方面比node / express好。如何配置服务器,以便Nginx提供静态文件? 问题答案: 我使用以下新配置解决了该问题: 感谢以下Stack Overflow帖子:

  • 我希望使用Apache HTTP服务器作为OpenShift或Kubernetes中托管的一组微服务的反向代理。我想在Kubernetes路线上使用TLS passthrough。也就是说,需要在Apache(出站)创建TLS连接,并在POD终止。为了实现这一点,OpenShift需要在不解密有效负载的情况下识别目标主机,以便将每个请求转发给正确的微服务。TLS中的服务器名称指示(SNI)将具有主

  • 我有一个Apache-Server在端口80上运行我的PHP应用程序。PHP应用程序通过端口3000与NodeJS-Server(socket.io)通信。