Apache에서 역방향 프록시를 사용하여 AWS APIGateway URL을 앞두고 싶습니다. 그 이유는 엄격한 방화벽 뒤에 서비스를 프로비저닝하기 위해 고정 IP가 필요한 프로세스와 현재 인프라 스트럭처에 mod_proxy가 이미 있기 때문입니다. 내가 구현하고자하는 솔루션은 단순히 mod_proxy를 통해 https-> https (apiGateway)를 라우팅하는 것입니다.Apache ProxyPass SNI가있는 HTTPS 및 원격 서버
하지만 AWS는 SNI를 사용하므로 핸드 셰이크에 mod_proxy를 사용할 수 없습니다.
나는 다음과 같은 설정이<IfModule mod_ssl.c>
<VirtualHost *:443>
ProxyPreserveHost On
SSLProxyEngine On
ProxyPass /api/1_0/ https://xxx.execute-api.eu-west-1.amazonaws.com/1_0/
ProxyPassReverse /api/1_0/ https://xxx.execute-api.eu-west-1.amazonaws.com/1_0/
다음 로그가 내가있는 OpenSSL을 사용하여 연결하는 경우
proxy_util.c(2020): AH00942: HTTPS: has acquired connection for (xxx.execute-api.eu-west-1.amazonaws.com)
proxy_util.c(2610): AH00962: HTTPS: connection complete to 52.x.x.x:443 (xxx.execute-api.eu-west-1.amazonaws.com)
AH01964: Connection to child 0 established (server domain.com:443)
AH02003: SSL Proxy connect failed
SSL Library Error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
AH01998: Connection closed to child 0 with abortive shutdown (server domain.com:443)
AH01997: SSL handshake failed: sending 502
, 나는 비슷한 오류
openssl s_client -tls1_2 -connect xxx.execute-api.eu-west-
1.amazonaws.com:443
CONNECTED(00000003)
140735866254216:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert
handshake failure:s3_pkt.c:1494:SSL alert number 40
140735866254216:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:s3_pkt.c:659:
을 보여줄 수 디버그 모드에서 사용할 수있는 활성화
SNI에 대해 -servername을 추가하면 유효한 연결이됩니다.
SSL handshake has read 3601 bytes and written 489 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
...
그러므로 mod_proxy와 mod_ssl은 서버 이름을 원격 https 서버로 보내지 않고 버그가 될 수 있다고 생각합니다.
내가 서버 버전의 우분투 14.04를 실행하고 있습니다 : 아파치/2.4.7 (우분투) 서버 내장 : I가 시도 2017년 9월 18일 16시 37분 54초 OpenSSL을 1.0.1f 2014년 1월 6일
을 SSLProxyProtocol
을 TLS1_2로 제한하고 암호 목록도 제한하지만 sslv3 경고 핸드 셰이크 실패 로그는 계속 존재합니다.
아무도이 문제가 발생하지 않았으며 SNI 값이 전송되고 있는지 또는 아파치 모듈에서이 제한 사항을 확인하는 방법을 알고 있습니까?