Как перенаправить HTTP-трафик на HTTPS при использовании виртуального хостинга в Tomcat

Мне нужно настроить сервер Tomcat 9 для перенаправления трафика с http на https.

Я пытался:

  1. Использование соединителя для порта http и наличие атрибута redirectPort, указывающего на защищенный соединитель.

  2. Включая ограничение безопасности ссылку в нижней части файла web.xml, которая работает для других серверов Tomcat, которые не используют виртуальный хостинг

Соединитель

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

<Connector 
        port="443"
        protocol="org.apache.coyote.http11.Http11AprProtocol"
        secure="true"
        scheme="https" 
        maxThreads="200" 
        SSLEnabled="true" 
        maxSpareThreads="75" 
        maxHttpHeaderSize="8192" 
        acceptCount="100"  
        enableLookups="false" 
        disableUploadTimeout="true"
        defaultSSLHostConfigName="example1.com">
                        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
                        <SSLHostConfig hostName="example1.com">
                                        <Certificate 
                                        certificateKeystoreFile="www_example1_com.jks"
                                        certificateKeystorePassword="…” />
                        </SSLHostConfig>
                        <SSLHostConfig hostName="example2.com">
                                        <Certificate 
                                        certificateKeystoreFile="www_example2_com.jks"
                                        certificateKeystorePassword="…” />
                        </SSLHostConfig>
        </Connector>

Ограничение безопасности

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

Конфигурация хоста в server.xml

      <!-- example1.com -->
      <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" 
               directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>

      <!-- example2.com -->
      <Host name="example2.com" appBase="website-webapps" unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" 
               directory="website-logs"
               prefix="website_access_log." 
               suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>

person scanlex    schedule 25.04.2019    source источник


Ответы (1)


Порт 80 не был открыт для внешнего трафика на моем сервере, поэтому перенаправление никогда не могло произойти. HTTP-трафик не доходил до сервера.

Это было решено путем добавления входящего правила, позволяющего запросам достигать порта 80.

person scanlex    schedule 08.05.2019