Problem

Ich möchte, dass auf das System nur via https zugegriffen werden kann. Anfragen auf http:// sollen automatisch auf https:// umgeleitet werden.

Solution

SSL-Zertifikat

Zunächst benötigen Sie ein SSL-Zertifikat samt Private Key für Ihren Server. Dies muss auf dem Tomcat Server im conf Verzeichnis abgelegt werden.

SSL-Connector erstellen in conf/server.xml

Als nächstes müssen Sie einen SSL-Connector erstellen. Fügen Sie im conf/server.xml den folgenden XML-Block nach den HTTP-Connector ein. Die Filenamen goco-key.pem, goco-cert.pem und (optional) goco-certchain.pem müssen auf ersetzt werden mit den Namen Ihrer Zertifikat Files. Ihre Zertifikat Fileendungen können anders sein (z.B. .crt, .key).

SSL Connector
<Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"
           maxThreads="150" SSLEnabled="true" >
    <SSLHostConfig>
        <Certificate certificateKeyFile="conf/goco-key.pem"
                     certificateFile="conf/goco-cert.pem"
                     certificateChainFile="conf/goco-certchain.pem" />
    </SSLHostConfig>
</Connector>

HTTP auf HTTPS umleiten in conf/web.xml

Um alle HTTP-Anfragen auf HTTPS umzuleiten, fügen Sie den folgenden XML-Block im conf/web.xml direkt nach dem ersten Element (<web-app ...> ein:

HTTPS-Umleitung in web.xml eintragen
  <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>


Starten Sie dann Tomcat neu und prüfen Sie den HTTPS-Zugang sowie die Umleitung von HTTP auf HTTPS.