web-dev-qa-db-ja.com

Tomcatでは、httpsへのhttp接続を強制します

http://localhost:8443からhttps://localhost:8443への接続を強制しようとしています。 https://localhost:8443に移動すると、サイトは正しく機能します。ユーザーがhttpsでsを忘れた場合に備えて、Tomcatに修正してもらいたいと思います。

Https用のコネクタは1つだけで、次のように定義されています。

<Connector port="8443" rediretPort="8443"
    protocol="HTTP/1.1" 
    connectionTimeout="20000" 
    SSLEnabled="true"
    maxThreads="150" 
    scheme="https" 
    secure="true"
    clientAuth="false" 
    sslProtocol="TLS" 
    keyAlias="alias"
    keystoreFile="keystore.jks"
    keypass="PASSWORD"
/>

これはWindowsサーバー上にあります。 Tomcat 6はスタンドアロンサーバーです(IISに接続されていません)。

以下を含めるようにweb.xmlを変更しようとしました。

<security-constraint>
 <web-resource-collection>
    <web-resource-name>Protected Context</web-resource-name>
      <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <user-data-constraint>
      <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>

これは私にはうまくいきません。私が読んだところによると、これはユーザーをhttp://localhost:8080からhttps://localhost:8443にリダイレクトします(コネクタ8080がredirectPortを8443として定義した場合)。

これがスタンドアロンのTomcatサーバーでも可能かどうかはわかりません。これはApachemod_rewriteまたは他の同様のソリューションで可能であることは知っていますが、Windowsマシンに他のサービスをインストールしたくありません。

3
Tao Zhyn

最初の文がタイプミスでない場合は、ポート8080にhttpのコネクタを追加し、説明したようにリダイレクトを追加します。 httpとhttpsを同じポートでリッスンさせることはできません。したがって、httpをポート8080でリッスンさせ、httpsをポート8443でリッスンさせます。

0
Christian