두 개의 아파치 서버 앞에서로드 밸런서로 구성된 아파치 (2.4) 서버를 사용하고 있습니다. 로드 밸런서와 백엔드 사이에 http 연결을 사용하면 정상적으로 작동하지만 https를 사용하면 작동하지 않습니다. 로드 밸런서의 구성 :
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
<Proxy balancer://testcluster>
BalancerMember https://[Backend1]:443/test
BalancerMember https://[Backend2]:443/test
</Proxy>
ProxyPass /test balancer://testcluster
백엔드에는 지금 자체 서명 된 인증서 만 있으므로 인증서 확인이 비활성화됩니다.
로드 밸런서의 오류 로그에는 다음이 포함됩니다.
[proxy:error] [pid 31202:tid 140325875570432] (502)Unknown error 502: [client ...] AH01084: pass request body failed to [Backend1]:443 ([Backend1])
[proxy:error] [pid 31202:tid 140325875570432] [client ...] AH00898: Error during SSL Handshake with remote server returned by /test/test.jsp
[proxy_http:error] [pid 31202:tid 140325875570432] [client ...] AH01097: pass request body failed to [Backend1]:443 ([Backend1]) from [...] ()
브라우저의 오류 페이지에는 다음이 포함됩니다.
Proxy Error
The proxy server could not handle the request GET /test/test.jsp.
Reason: Error during SSL Handshake with remote server
위에서 이미 언급했듯이 구성을 http 프로토콜 및 포트 80으로 변경하면 작동합니다. 또한 클라이언트와로드 밸런서 사이의 https 연결이 작동하므로로드 밸런서의 SSL 모듈이 올바르게 설정된 것 같습니다. https를 통해 백엔드에 직접 연결해도 오류가 발생하지 않습니다.
시간 내 주셔서 감사합니다
편집 : 알아 냈습니다. 문제는 내 인증서 공통 이름이 서버 이름과 일치하지 않는다는 것입니다. SSLProxyVerify는 아무도이 불일치를 무시 하지 않을 것이라고 생각 했지만 그렇지 않습니다. 아파치 2.4.5 이전에는 SSLProxyCheckPeerCN off를 사용 하여이 검사를 비활성화 할 수 있지만 상위 버전 (2.4.7을 사용 중)에서는 SSLProxyCheckPeerName off 도 지정해야합니다.
sslproxycheckpeername에 대한 Apache 문서
작동하는 구성은 다음과 같습니다.
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
<Proxy balancer://testcluster>
BalancerMember https://[backend1]:443/test
BalancerMember https://[backend1]:443/test
</Proxy>
ProxyPass /test balancer://testcluster
불행히도 평판이 부족하여 내 자신의 질문에 대답 할 수 없으므로 내 질문을 편집했습니다. 이는 비슷한 문제가 발생하는 사람에게 도움이되기를 바랍니다.