Tomcatのリダイレクトポートは何ですか?


13

Tomcatのドキュメントを理解するのは難しく、server.xmlを見ると、ドキュメントで実際に適切に、または広範に説明されていないため、理解しにくいポートのサラダが見つかります。

たとえば、設定ファイルの次の行 server.xml

<Connector port="8345" protocol="AJP/1.3" redirectPort="9875" />

そして、ここでさらに別のリダイレクトポートを見つけることができます。

<Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" /> 

コネクタポートの機能を理解しています。最初のケースでは、それを使用してApacheでワーカーを作成し、そこに送信します。2つ目のケースでは、ポートを開いてTomcatに直接アクセスします。ただし、リダイレクトポートに関しては、あいまいになります。

これは、Tomcatのドキュメントのajpポートに関する説明です。

このコネクターが非SSL要求をサポートしており、一致にSSLトランスポートが必要な要求を受信した場合、Catalinaはここで指定されたポート番号に要求を自動的にリダイレクトします。

私は常に1024を超えるランダムリダイレクトポートを選択しますが、それは機能します。

しかし、これはいつ実施されるのでしょうか?リクエストがSSLトランスポートを必要とすることをどのように知るのですか?

Tomcatモジュールを実行しているサテライトサーバーがあります。このモジュールは、メインサーバーからapacheを使用してトラフィックをajpコネクタにリダイレクトしたり、その逆を行ったりすることで有効になります。

メインサーバーでは、httpsがApacheで強制されます。これは、すべてのリクエストが暗号化された、またはプレーンテキストでサテライトサーバーに送信されるということですか?私は、ポート8080を介してサテライトサーバーにアクセスする場合、暗号化されていないことを知っていますが、これがメインサーバーにリダイレクトされるトラフィックにも当てはまるかどうか、このリダイレクトポートはどこで有効になるのでしょうか?

回答:


5

ドキュメントで定義されているように、SSLリクエストがサーバーに届くとリダイレクトポートが現れ、httpコネクタポートはSSLリクエストを処理できないため、定義されたポートにリダイレクトされます。ただし、それらはserver.xmlファイルで定義された別のセクションである必要があります。このセクションでは、定義されたリダイレクトポートがSSL要求を処理するためのコネクタポートとして機能します。たとえば、http要求をポート80で処理し、https要求をポート443で処理する場合、server.xmlは次のようになります。

<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />

<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true" scheme="https" secure="true" sslProtocol="TLS" keystoreFile="/path/to/kestorefile" keystorePass="my_keystore_password"/>

Keystorefileは、WebサイトのSSL証明書です。

コネクタポートとしてリダイレクトポートを使用して他のセクションを構成しない場合、リクエストはそのポートにリダイレクトされません。たとえば、Webサイトがsslリクエストをサポートしていない場合、そのWebサイトにhttpsリクエストを送信しようとすると、ブラウザにSecure Connection Failedなどのエラーが表示されます。


けっこうだ。httpではなくajpの設定はどうですか?また、あなたが言及したように1024未満のポートを使用することは良い考えですか?これは、Tomcatをルートとして実行することを意味しますが、それは良くありません。
ウルカイ

1
私はajpについてあまり知りませんが、リダイレクトはhttpと同じように機能しなければなりません。1024未満のポートの使用については、完全にあなた次第です。80および443はhttpsおよびhttpsプロトコルのデフォルトポートであり、URLで明示的に指定する必要はありません。非標準ポートを使用する場合は、あなた次第です。また、rootでTomcatを実行すると、デプロイされたアプリケーションに依存します。セキュリティの観点からアプリケーションを信頼しない場合は、rootでtomcatを実行しないでください。他の方法としては、apacheまたはnginxをプロキシとして使用してポート80および443で実行し、リクエストをTomcatにリダイレクトできます。
ガウラフプンディール

iptablesまた、他のアプローチの中でも特に、トラフィックをTomcatにリダイレクトする場合にもうまく機能することに注意してください。
SeldomNeedy 16

この説明は不完全です。非SSLからSSLポートにリダイレクトする場合、server.xmlにターゲットコネクタを含めるだけでは不十分です。web.xmlの<security-constraint>セクションを構成することも必要です。stackoverflow.com/questions/9526425/を
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.