2017-06-21 8 views
0

私は、パブリックIPを介してアクセス可能ないくつかのApache仮想ホストが、Webアプリケーションとサービス(Apacheは逆プロキシとして機能する)を使用してさまざまな内部サーバーに渡すように構成しています。内部サーバーの1つでは、letsencryptを使用してHTTPSを構成したいと考えています。Apacheをリバースプロキシとして使用して内部サーバーからSSL/TLS証明書を提供することは可能ですか?

私は内部サーバー上で動作証明書とサーバー構成を取得できましたが、このHTTPSトラフィックをトンネリングしたくないリバースプロキシ(Apache)の問題があります。

編集:証明書を使用してリバースプロキシを設定する方が簡単だが、Let's EncryptにはWindows用の自動化されたオプションがないため、60日ごとに手動で証明書を変更するのは面倒です。

はApache 2.4での仮想ホストの設定(Windowsの)次のようになります。letsencryptからcertbotを使用して10.3.1.83(Ubuntuの/ nginxの)オン

<VirtualHost *:443> 
    ServerName somesubdomain.mydomain.com 
    DocumentRoot "E:/Apache2/htdocs" 
    DirectoryIndex index.html 

    ProxyRequests Off 
    <Proxy *> 
     Order deny,allow 
     Allow from all 
    </Proxy> 

    ProxyPreserveHost On 

    ProxyPass/https://10.3.1.83/ 
    ProxyPassReverse/ https://10.3.1.83/ 
</VirtualHost> 

、私は有効な証明書を生成して提供するためにnginxのを設定しHTTPSと証明書。

LANの中からUbuntu/Nginx Serverにアクセスすると、すべてがエキサイトとして機能します。 Chrome DevToolsを使用して、正しいLetsEncrypt証明書がサーバーに送信されていることを確認できます。

外部(インターネット)から対応するサブドメインにアクセスすることが内部サーバーエラーページを返し、ログにApacheは次のように私に告げる:

AH00961: HTTPS: failed to enable ssl support for 10.3.1.83:443 (10.3.1.83) 

編集:最後に、私はいくつかの答えを見つけた: はSNIのように思えますproxingはApacheでは実装されず、「SNI仮想ホスティング」のみが実装されています。しかし、HAProxyや他のプロジェクトを使うこともできます。

Apache HTTPS reverse proxy with SNI without key on the proxy https://serverfault.com/questions/614806/apache-mod-proxy-with-https-without-key-material-using-sni https://serverfault.com/questions/625362/can-a-reverse-proxy-use-sni-with-ssl-pass-through/625364

答えて

0

私はあなたがプロキシで暗号化を設定することにより、クライアントにリバースプロキシからのトラフィックを暗号化しなければならないと思います。

内部のWebサーバーとプロキシは、内部(編集されていない).lサーバーでSSLを設定することで、SSL通信を共有することもできます。

しかし、それらの証明書をすべて1つ(つまり、複数のサーバーで同じ秘密鍵/公開証明書を使用することを意味する)できません。

なぜそうですか?トラフィックがクライアントとバックエンドサーバーの間で暗号化されている場合、プロキシは「ホスト」ヘッダーやその他のHTTPリクエストの有用なヘッダーを読み取ることができないため、要求をリレーしたり理解したりすることさえできません。

したがって、証明書を複製しない限り、私の答えは...いいえ。 :-)

あなたの証明書がプロキシに集中するのは悪いことではありません...セキュリティの観点からは、リスクは集中しますが(リスクの集中)、管理上の観点からは、 。

EDIT:私が想定していた古いブラウザや開発ライブラリを含む多数のユーザーにアプローチしたい場合、答えはNOです(他の場合はYESです、以下の会話を参照してください)。

+0

<< "プロキシは"ホスト "ヘッダー>>を読み取ることができません。新しいApacheがSNIを実装していて、このようなことが許されていることは私の理解であった。 – NicoEpp

+0

SNIの機能(https://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI)は、SSLプロトコルの拡張機能です。多くの古いアプリケーションがまだ互換性がないため、大規模なユーザーを対象とする場合は、その機能を利用できません。私が与えたURLは互換性のあるブラウザを示していますが、それは最近のものです。 (例:「Internet Explorer 7.0以降(VistaではXPではありません)」) – Fabien

+0

私のアプリケーションは、特定の地域のユーザーのみに適用されます。さらに、新しいブラウザには何年もSNIが実装されています。 ApacheでSNIをどのようにアクティブにできますか? – NicoEpp

関連する問題