反向代理Apache - 在哪个设备上需要哪些SSL证书?

时间:2016-02-03 12:33:35

标签: apache ssl reverse-proxy

我正在开发一个需要对源服务器进行受控访问的系统。由于使用方案,证书和客户端证书身份验证是验证客户端的最佳方式。

由于多种原因,无法为每个客户提供自己的证书。相反,他们通过与反向代理1在同一本地网络上进行访问。例如:

Client(s) -- [http] --> Reverse Proxy 1 (RP1) [Apache] -- [https, internet] --> Reverse Proxy 2 (RP2) [Apache] -- [http] --> Content Origin Server

此处,RP1位于客户端网络上。它将所有请求传递到Origin网络上的RP2。

只允许从RP2使用与原始服务器的连接,RP2使用SSL证书对自己的连接进行身份验证。我有这个链在整个HTTP中使用,但是一旦启用SSL我就无法连接。我认为这是由于我设置了Apache和各种SSL证书。

我的问题是:

  1. 这种类型的'双'反向代理需要哪些SSL设置/代理设置才能与Apache一起使用(即在RP1和RP2上)?
  2. 需要生成哪些SSL证书以及应在每台服务器上放置哪些证书(在这种情况下为RP1 / RP2)?
  3. 我希望使用自己的证书颁发机构对证书进行自签名。

    我当前的Apache设置如下(我将限制监听端口的数量等...一旦我有一个工作系统):

    RP1:

    <VirtualHost *:*>
        #ProxyPreserveHost On
        SSLEngine On
        SSLProxyEngine on
        SSLProxyCACertificateFile /etc/apache2/ca.pem
        SSLProxyMachineCertificateFile /etc/apache2/proxy-client.pem
    
    #   RequestHeader set SSL_CLIENT_CERT ""
        <Location />
    #           RequestHeader set SSL_CLIENT_CERT "%{SSL_CLIENT_CERT}s"
                ProxyPass https://x.x.x.x:yyyy/
                ProxyPassReverse https://x.x.x.x:yyyy/
        </Location>
    </VirtualHost>
    

    RP2(x.x.x.x):

    Listen yyyy https
    <VirtualHost *:*>
    
    SSLEngine On
    
    # Set the path to SSL certificate
    # Usage: SSLCertificateFile /path/to/cert.pem
    SSLCertificateFile /etc/apache2/server.cer
    SSLCertificateKeyFile /etc/apache2/server.key
    SSLVerifyClient require
    SSLVerifyDepth 2
    SSLCACertificateFile /etc/apache2/ssl/ca.cer
    
    
    # Servers to proxy the connection, or;
    # List of application servers:
    
    ProxyPass / http://a.a.a.a:zzzz/
    ProxyPassReverse / http://a.a.a.a:zzzz/
    
    # Or, balance the load:
    # ProxyPass / balancer://balancer_cluster_name
    
    </VirtualHost>
    

    证书的名称是唯一的。所以在这种情况下,RP1上的ca.pem是来自RP2上的ca.cer的.pem。

0 个答案:

没有答案