是否可以忽略Apache代理证书

时间:2013-10-10 11:40:27

标签: apache ssl proxy mod-proxy mod-ssl

背景资料:(底部问题)

我正在尝试连接到拥有8台服务器的客户端,所有服务器都具有唯一的IP地址。客户端在所有服务器上使用相同的SSL证书(例如,cert name == www.all_servers.com)。客户端仅允许通过https传入请求。

我正在尝试使用mod_proxy创建一个apache代理,该代理将不同的URI映射映射到不同的服务器。例如:

https://PROXY_SERVER/SERVER1/{REQUEST}

这会将{REQUEST}发送到server1

https://PROXY_SERVER/SERVER2/{REQUEST}

会将{REQUEST}发送到server2。 到目前为止,非常简单。

在Apache 2.2中,这可以通过使用如下所示的IP地址来实现:

SSLProxyEngine On

ProxyPass /server1 https://1.1.1.1/
ProxyPassReverse /server1 https://1.1.1.1/

ProxyPass /server2 https://1.1.1.2/
ProxyPassReverse /server2 https://1.1.1.2/

这是因为Apache 2.2没有检查证书是否匹配(1.1.1.1!= www.all_servers.com)

然而,在Apache 2.4中,我现在正在获得证书问题(这是正确的)。 (这个确切的代码适用于apache 2.2框)

[Thu Oct 10 12:01:48.571246 2013] [proxy:error] [pid 13282:tid 140475667224320] (502)Unknown error 502: [client 192.168.1.1:48967] AH01084: pass request body failed to 1.1.1.1:443 (1.1.1.1)
[Thu Oct 10 12:01:48.571341 2013] [proxy:error] [pid 13282:tid 140475667224320] [client 192.168.1.1:48967] AH00898: Error during SSL Handshake with remote server returned by /server1/asd
[Thu Oct 10 12:01:48.571354 2013] [proxy_http:error] [pid 13282:tid 140475667224320] [client 192.168.1.1:48967] AH01097: pass request body failed to 1.1.1.1:443 (1.1.1.1) from 192.168.1.1 ()

我无法使用/ etc / hosts,因为一台服务器可以使用:

1.1.1.1 www.all_servers.com

SSLProxyEngine On
ProxyPass /server1 https://www.all_servers.com/
ProxyPassReverse /server1 https://www.all_servers.com/

但许多服务器不会


所以,对于实际问题:

有没有办法强制mod_proxy忽略错过匹配证书。或者,有没有更好的方法来做到这一点。

感谢您对此提供任何帮助!

1 个答案:

答案 0 :(得分:20)

您可以在Apache服务器上设置SSLProxy*选项(就反向代理连接而言,这是一个客户端)。

这是使用SSLProxyCheckPeerCN完成的(默认情况下在2.2中关闭,但默认情况下在2.4中关闭),但我不确定这将如何与IP地址一起使用(因为在CN中具有IP地址)不标准)。 Apache Httpd 2.4中有一个用于检查SAN的新选项(SSLProxyCheckPeerName),但我不确定它对IP地址的影响。

DNS SAN扩展或CN中拥有IP地址不符合HTTPS标准:

  

如果存在类型为dNSName的subjectAltName扩展名,则必须将其用作标识。否则,(最具体)共同   必须使用证书的“主题”字段中的名称字段。   虽然使用通用名称是现有的做法,但确实如此   不推荐使用,并鼓励认证机构使用   而是dNSName。

     

[...]

     

在某些情况下,URI被指定为IP地址而不是主机名。在这种情况下,必须存在iPAddress subjectAltName   在证书中,必须与URI中的IP完全匹配。