使用Apache配置具有多个证书的反向代理https

使用Apache配置具有多个证书的反向代理https,apache,ssl,proxy,Apache,Ssl,Proxy,我有以下设置: 一个公共IP 2个指向上述相同IP的不同域名:domain1.com和domain2.com 2个不同的ssl证书:一个用于domain1.com,另一个用于domain2.com 同一LAN(192.168.1.10和192.168.1.20)上运行Apache2和debian 8.5的两台物理机器 我测试了两台服务器,它们独立地将443端口流量转发给其中一台机器。它们工作得很好 现在,我将所有到达公共IP的端口443请求转发到192.168.1.10的第一台服务器,我希望

我有以下设置:

  • 一个公共IP
  • 2个指向上述相同IP的不同域名:domain1.com和domain2.com
  • 2个不同的ssl证书:一个用于domain1.com,另一个用于domain2.com
  • 同一LAN(192.168.1.10和192.168.1.20)上运行Apache2和debian 8.5的两台物理机器
我测试了两台服务器,它们独立地将443端口流量转发给其中一台机器。它们工作得很好

现在,我将所有到达公共IP的端口443请求转发到192.168.1.10的第一台服务器,我希望此服务器充当的https服务器,并将的请求重定向到地址192.168.1.20

我已尝试在第一台计算机中配置反向代理。它确实将对domain2的请求重定向到位于192.168.1.20的机器,但它为domain1提供证书。 如何将反向代理配置为为为我的每个服务器提供正确的证书

先谢谢你。
julia

最简单的“解决方案”(嗯,解决方法)是使用一个包含两个主机名的证书。如果您不能做到这一点,那么您需要配置ApacheSNI,就像这样:

正如一些人建议的那样,我尝试使用Apache2反向代理。 这在某种程度上是可行的,但是您必须在运行Apache2的机器上安装所有证书。因此,局域网上的流量不再是https,这不符合我的要求

解决方法是使用haproxy。此包可以设置为https的传递。互联网上有许多这样的应用程序。它完全符合我的要求:我可以在一个nat路由器后面的局域网上用一个公共IP托管多个https服务器。haproxy通过https将流量发送到LAN上指定的服务器。如果有人感兴趣,我很乐意与大家分享我的配置文件,以精确解决我在问题中提出的问题。

致Robert M:
以下是要添加到默认haproxy.cfg文件末尾的配置:

    frontend ft_https
    mode tcp
    option tcplog
    bind *:443

    tcp-request inspect-delay 5s
    tcp-request content accept if { req.ssl_hello_type 1 }

    acl domain1_com req.ssl_sni -m end  domain1.com # all url ending with domain1.com   
    acl domain2_com req.ssl_sni -i www.domain2.com # exactly www.domain2.com

    use_backend b_domain1_com if domain1_com
    use_backend b_domain2_com if domain2_com
    default_backend b_default

    backend b_default
    mode tcp
    option tcplog
    server srv_default 127.0.0.1:1443

    backend b_domain1_com
    mode tcp
    option tcplog
    server srv_domain1 192.168.1.10:1443

    backend b_domain2_com
    mode tcp
    option tcplog
    server srv_domain2 192.168.1.20:443

我不得不将第一台服务器上apache的https端口更改为1443,因为haproxy和apache都无法绑定到同一台机器上的同一443端口,但这对用户是透明的。

服务器需要根据SNI扩展选择要使用的证书(服务器名称指示)。看看Apache中的SNI支持,它可能支持它。谢谢。我确实调查了SNI,但无法使其发挥作用。我是linux的新手:(你能为代理机器发布你的服务器块吗?这不能回答我的问题,因为所有证书都必须安装在运行apache的机器上。因此,从该机器到我局域网上其他服务器的流量不再是https,而是http。因为你在第一台服务器上拥有domain2的证书,你局域网上的流量将减少未更改,它仍然是https,并被转发到第二台服务器的端口443。是的,请共享,我想看看您如何避免在nat路由器上使用domain2证书。以下是我要添加到默认haproxy.cfg文件末尾的配置: