HTTPS unter Tomcat erzwingen

12. Mai 2010


 

Normalerweise ist mir ja die Benutzung eines HTTP-Servers(im Speziellen Apache) fuer die Behandlung von Zertifikaten und Weiterleitungen am liebsten. Dennoch kann es Momente geben, wo es doch vllt. etwas zu viel des Guten ist, eine zusaetzliche Anwendung wie den genannten HTTP-Server in der Funktion eines Proxies zusaetzlich zu starten.

Hat man es denn nach einigem Ringen geschafft, ein verifiziertes Keystore mit dem Connector eines Tomcats zu verknuepfen, so ist es haeufig auch der Wunsch, http zu unterbinden und sofort saemtliche Anfragen nach https weiterzuleiten.

Dazu hat sich folgender 3-Stufenplan bewaehrt:

Stufe 1: HTTP-Connector um HTTPS-Weiterleitungsport erweitern

Im HTTP-Connector-Teil der server.xml muss der sichere https-Port angegeben werden:

conf/server.xml



Im Normalfall sollte das 443 sein. In diesem Zuge sollte man auch beachten, das eventuell der SSL-Port des Tomcats (Standard:8443) nicht mit dem dann tatsaechlich unter der Domain erreichbaren uebereinstimmt(z.Bsp. 443). Es sollte der von aussen zugaengliche Port eingetragen werden und nur wenn kein Port-Mapping vorliegt der des im Tomcat eingetragenen Connectors fuer HTTPS.

Stufe 2: web.xml der Anwendung um „Security-Zwang“ erweitern

Im zweiten Schritt muss der Anwendung erlaeutert werden, dass es doch wichtig fuer sie ist, von diesem Port auch tatsaechlich Gebrauch zu machen. Dazu einfach folgenden Absatz der web.xml hinzufuegen:

WEB-INF/web.xml


   
       
    Sichere URLs
    /
     
       
    CONFIDENTIAL
   

Stufe 3: Tomcat neu starten

… und hoffentlich erfreut dreingucken.

Weiterfuehrend auch zur Erstellung eines Keystores kann es sich lohnen, auch dies hier zu lesen:
http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html