私は、パブリック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
<< "プロキシは"ホスト "ヘッダー>>を読み取ることができません。新しいApacheがSNIを実装していて、このようなことが許されていることは私の理解であった。 – NicoEpp
SNIの機能(https://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI)は、SSLプロトコルの拡張機能です。多くの古いアプリケーションがまだ互換性がないため、大規模なユーザーを対象とする場合は、その機能を利用できません。私が与えたURLは互換性のあるブラウザを示していますが、それは最近のものです。 (例:「Internet Explorer 7.0以降(VistaではXPではありません)」) – Fabien
私のアプリケーションは、特定の地域のユーザーのみに適用されます。さらに、新しいブラウザには何年もSNIが実装されています。 ApacheでSNIをどのようにアクティブにできますか? – NicoEpp