是否可以忽略Apache代理证书

Gwy*_*nie 19 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}
Run Code Online (Sandbox Code Playgroud)

这会将{REQUEST}发送到server1

https://PROXY_SERVER/SERVER2/{REQUEST}
Run Code Online (Sandbox Code Playgroud)

将{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/
Run Code Online (Sandbox Code Playgroud)

这是因为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 ()
Run Code Online (Sandbox Code Playgroud)

我不能使用/ 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/
Run Code Online (Sandbox Code Playgroud)

但许多服务器不会


那么,对于实际的问题:

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

感谢您的帮助!

Bru*_*uno 20

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

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

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

如果存在类型为dNSName的subjectAltName扩展名,则必须将其用作标识.否则,必须使用证书的Subject字段中的(最具体的)Common Name字段.尽管使用Common Name是现有做法,但不推荐使用它,并且鼓励证书颁发机构使用dNSName.

[...]

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