web-dev-qa-db-ja.com

リバースプロキシSNIの不一致に対するApacheリモートプロキシ

Apache-2.2と、別のデバイスを介してプロキシされるリバースプロキシのセットアップに問題があります。

フローは次のとおりです。ApacheA-> proxy.abc.net-> Apache B

ApacheBで発生するエラーは

SNIを介して提供されるホスト名proxy.abc.netとHTTPを介して提供されるホスト名backend.abc.netは異なります

現在の構成

    <VirtualHost frontend.abc.com:80>

    ServerName frontend.abc.com

    SSLEngine on
    SSLOptions +StrictRequire
    SSLProtocol -all +TLSv1
    SSLHonorCipherOrder On
    SSLCipherSuite RC4-SHA:HIGH:!ADH:!MD5
    SSLCertificateFile conf/certs/cert.cer
    SSLProxyCACertificateFile certs/proxy.cer
    SSLCertificateKeyFile conf/certs/cert.pem
    SSLCertificateChainFile conf/certs/chain.cer


    DocumentRoot /foo/bar

    SSLProxyEngine On
    ProxyRequests Off
    ProxyPreserveHost off
    ProxyErrorOverride On
    SetEnv proxy-sendchunked 1

    ProxyRemote "*"  https://proxy.abc.net:8080
    ProxyPass  /foo  https://backend.abc.net:8888/foo  disablereuse=on

</Virtual Host>

追加

SSLProxyProtocol SSLv3

sNIチェックを行わないため機能しますが、SSLv3は、TLSv1以降を使用するために必要なオプションではありません。

6
greyhathero

Apache 2.2には、このチェックがハードコードされています(SNIホスト名とホストホスト名を比較します)。

Apache 2.4はこの状態を緩和し、次の場合にのみ失敗します。

        * The request does not select the virtual Host that was
        * selected by the SNI and its SSL parameters are different

https://svn.Apache.org/viewvc/httpd/httpd/branches/2.4.x/modules/ssl/ssl_engine_kernel.c?view=annotate#l335

したがって、答えは2.4にアップグレードすることです。

1
arekm