2017-12-08 20 views
0

Apacheで逆プロキシを使用してAWS APIGateway URLを前面に表示します。理由は、厳格なファイアウォールの背後にサービスをプロビジョニングするために静的IPを必要とするプロセスと、現在のインフラストラクチャにmod_proxyが既に存在するためです。私が実装しようとしている解決策は、単にhttps-> https(apiGateway)をmod_proxy経由でルーティングすることです。Apache ProxyPass HTTPSとSNIを使用したリモートサーバ

AWSはSNIを使用しており、mod_proxyをハンドシェイクすることはできません。

私は次の設定が次のログは、私はOpenSSLを使用して接続した場合、私は

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: 
同様のエラーを示すことができるデバッグモードで

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 

可能です

<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/ 

を有効にしています

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サーバーに送信しておらず、バグかもしれないと考えています。

私は ServerバージョンでのUbuntu 14.04を実行しています:Apacheの/ 2.4.7(Ubuntuの) Serverが構築された:私がしようとしてきた2017年9月18日午後四時37分54秒 のOpenSSL 1.0.1f 2014年1月6日

SSLProxyProtocolをTLS1_2に制限し、暗号リストも制限しますが、sslv3アラートハンドシェイクの失敗ログは依然として存在します。

誰もがこれを遭遇し、SNI値が送信されていることを確認する方法を知っていますか、これはApacheモジュールの制限ですか?

答えて

0

これはコンフィグレーションの初期にProxyPreserveHost Onが設定されているためです。予想通り、プロキシタグの下ProxyPreserveHost Offの設定 が完了します。ディレクティブに

<Proxy "https://xxx.execute-api.eu-west-1.amazonaws.com/1_0"> 
    ProxyAddHeaders off 
    ProxyPreserveHost off 
</Proxy> 

情報:有効にすると

、このオプションは、ホストを通過します:プロキシさホストへの着信 要求からライン、 ProxyPassラインの に指定されているホスト名の代わりに使用します。

このオプションは、通常オフにする必要があります。バックスラッシュ サーバによって元のホストヘッダーを評価する必要がある プロキシされた大量名ベースの仮想ホスト のような特別な構成では、ほとんど役に立ちます。

関連する問題