1

Apache仮想ホストの背後で実行されているTomcatサーバーがあります(同じサーバーで複数のドメインを使用できます)。apache が行うことは、ホスト名を取得して適切な tomcat サーバーにリクエストを転送することだけです。

ドメインの 1 つで SSL をセットアップしようとしています。その方法のプロセスは理解していますが、Tomcat がすべての SSL を処理できるようにするか、Apache を処理できるようにするかについて混乱しています。

違いはなんですか?tomcat が ssl を処理できるようにすることの欠点はありますか? Apache に ssl を処理させた場合でも、Tomcat アプリにアクセスしたときに緑色のバーや南京錠などを取得できますか? 私は全体の状況について少し混乱しています。

プロキシを使用して、適切な tomcat アプリへの apache2 転送を処理します。プロキシを次のようにセットアップした場合:

<VirtualHost 1.2.3.4:443>
    ServerName host.domain.org

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

    SSLEngine on
    SSLProxyEngine On
    SSLCertificateFile /etc/apache2/ssl/certificate.crt
    SSLCertificateKeyFile /etc/apache2/ssl/certificate.key

    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / https://localhost:8443/
    ProxyPassReverse / https://localhost:8443/
</VirtualHost>

https とポート 8443 を使用する必要がありますか? このようにすると、Tomcat で SSL をセットアップする必要もありませんか? または、Tomcat の server.xml のコネクタで次を使用できますか

secure = false
scheme = https
proxyName = www.mydomain.com
proxyPort = 443

tomcat を ssl キーに接続する心配はありませんか? これは、apache2 を介して SSL を使用して tomcat アプリを保護する適切な方法ですか?

4

1 に答える 1

0

指定した設定で述べた方法では、リクエストごとに 2 つの個別の https 接続があります。あらゆるクライアントからあなたのApacheへのナンバーワン。Apache はリクエストを解読し、それを転送するために、Tomcat との SSL 接続をネゴシエートします。この方法で、両方のマシンで https を設定する必要があります。

http で tomcat (通常はポート 8080) に転送するだけです。ただし、この方法で https を使用していることを tomcat が認識しない場合があります (試してみる必要があります)。Apache と Tomcat の間で http の代わりに mod_jk や mod_proxy_ajp などの ajp を使用すると、Tomcat は確実に https 接続も認識します。

何をすべきかは、Apache と tomcat の間の距離、および 2 つの間のネットワークに対する信頼のレベルによって異なります。通常、この接続を暗号化せずに実行しても問題はないと思いますが、マイレージは異なる場合があります.

Apache で https を処理することで得られるものは何ですか? まあ、私はApacheがセッションネゴシエーションと暗号化でもう少しうまくスケーリングするかもしれないと思います-少なくともそれは暗号化のものを別のサーバーにオフロードし、Tomcatが最も得意とすること(アプリケーションにサービスを提供する)を実行できるようにし、Apacheがすべての奇妙なことを処理できるようにしますクリプトのもの。

私はこの構成が気に入っています。通常、mod_rewrite、負荷分散などを使用していくつかの問題をすばやく修正できるため、追加の apache を使用すると、「単なる」Tomcat よりもはるかに柔軟になります。

于 2013-07-04T16:01:09.413 に答える