2013-10-10 6 views
15

을 무시하는 것입니다. 클라이언트는 모든 서버에서 동일한 SSL 인증서를 사용합니다 (이 예에서는 cert name == www.all_servers.com). 클라이언트는 https를 통해 들어오는 요청 만 허용합니다.은 가능한 배경 정보 아파치 proxy'd 인증서

다른 URI 매핑을 다른 서버에 매핑하는 mod_proxy를 사용하여 아파치 프록시를 만들려고합니다. 예를 들어 :

https://PROXY_SERVER/SERVER1/{REQUEST} 

이 서버 2에 {요청}을 보낼 것

https://PROXY_SERVER/SERVER2/{REQUEST} 

을 SERVER1하기 {요청}을 보낼 것입니다. 지금까지 꽤 간단합니다.

는 아파치 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/ 

이 아파치 2.2 때문 인증서와 일치하는지 확인하지 (1.1.1.1 = www.all_servers.com)

그러나 Apache 2.4에서는 이제 인증서 문제가 발생합니다 (올바르게). (이 정확한 코드는 아파치 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() 
내가 사용할 수 없습니다

/등/호스트는 하나 개의 서버를 사용하여 작업하는 것처럼 :

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는 일치하지 않는 인증서를 무시합니다. 또는이 작업을 수행하는 더 좋은 방법이 있습니까?

감사합니다.

+0

그냥 혼란을 피하기 위해 서버에 관해서 이야기 할 때 "클라이언트"가 아닌 다른 클라이언트/고객에게 전화 할 수 있습니다. – Bruno

+0

ServerFault로 이동 투표. – Bruno

답변

15

Apache 서버 (역방향 프록시 연결에 관한 한 클라이언트)에 SSLProxy* 옵션을 설정할 수 있습니다.

이 작업은 SSLProxyCheckPeerCN (기본적으로 2.2에서 꺼져 있지만 2.4에서 기본적으로 사용됨)으로 수행되었지만 CN의 IP 주소가 표준이 아니므로 IP 주소와 함께 작동하는 방법을 잘 모르겠습니다.). SAN (SSLProxyCheckPeerName)을 검사하기위한 아파치 Httpd 2.4에는 새로운 옵션이 있지만, IP 주소에 대해서도 어떻게 동작하는지 모르겠습니다. DNS SAN 확장이나 CN에서

갖는 IP 주소는 HTTPS과 표준에 맞지 : 형 dNSName의 subjectaltname에 확장이 존재

경우, 즉 ID로 사용되어야한다. 그렇지 않으면 인증서의 제목 필드에있는 가장 일반적인 ( ) 이름 필드를 사용해야합니다. 일반 이름을 사용하는 것이 기존의 방법이지만, 대신 이며 인증 기관은 dNSName을 대신 사용하는 것이 좋습니다.

[...] 일부 경우

, 상기 URI는 IP 주소가 아닌 호스트 이름으로 지정된다. 이 경우 iPAddress subjectAltName은 인증서에 이어야하며 URI의 IP와 정확히 일치해야합니다.

+1

감사합니다. checkCN이 꺼졌습니다. checkName을 해제하면 마술처럼 작동하기 시작했습니다. – Gwynnie

+1

이 설정을 해제하면 잠재적으로 MITM 공격에 취약 할 수 있습니다. 단, SSLProxyCACertificate * '직접적으로 (그리고 그곳에는 오직 그 인증서가 있습니다). – Bruno