/ リバースプロキシとしてApacheを使用して内部サーバーからSSL / TLS証明書を提供することは可能ですか? - apache、ssl、リバースプロキシ、lets-encrypt

リバースプロキシとしてApacheを使用している内部サーバーからSSL / TLS証明書を提供することは可能ですか? - apache、ssl、reverse-proxy、let-encrypt

Windows Serverにアクセス可能です。プロキシとして設定された一部のApache仮想ホストを持つパブリックIPは、Webアプリケーションおよびサービスを使用してさまざまな内部サーバーに転送されます(Apacheはリバースプロキシとして機能します)。内部サーバーの1つで、letsencryptを使用してHTTPSを構成したい。

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

編集する 証明書を使用してリバースプロキシを設定する方が簡単であることを私は知っていますが、Let's s EncryptにはまだWindows用の自動オプションはありません。

Apache 2.4(Windows)の仮想ホスト構成は次のようになっています。

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

letsencryptのcertbotを使った10.3.1.83(Ubuntu / Nginx)では、有効な証明書を生成し、HTTPSと証明書を処理するようにNginxを設定しました。

LANの内側からUbuntu / Nginx Serverにアクセスすると、すべてが順調に機能します。 Chrome DevToolsを使って、正しいLetsEncrypt証明書を提供していることを確認できます。

外部(インターネット)から対応するサブドメインにアクセスすると、Internal Server Error Pageが返され、ログにApacheから次のように表示されます。

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

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

プロキシのキーなしでSNIを使用するApache HTTPSリバースプロキシ 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

回答:

回答№1は0

プロキシに暗号化を設定して、リバースプロキシからクライアントへのトラフィックを暗号化する必要があると思います。

どちらかといえば、あなたの内部ウェブサーバーとプロキシは、内部NO(しかし編集された).lサーバー上にSSLをセットアップすることによって、SSL通信を共有することもできます。

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

どうしてこんなことに? トラフィックがクライアントとバックエンドサーバー間で暗号化されていると、プロキシはHTTPリクエストの "Host"ヘッダーやその他の有用なヘッダーを読み取ることができず、そのため、リクエストを中継したり理解したりすることもできません。 。

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

あなたの証明書がそれほど悪くないのですあなたの代理人に集中してください...セキュリティの見地からそれはもう少し危険(危険の集中)ですが、管理の見地からそれは簡単です(努力の集中)。

編集:あなたが私が仮定した時代遅れのブラウザや開発ライブラリを含む大勢の聴衆に到達したいのであれば、答えはNOです。