• 11Nov

    Eigentlich nicht kompliziert, wenn man weiß, wie es geht 🙂 Also hier als kurzes Kochrezept für Ubuntu:

    1. Erstmal die unbeschränkten Java Cryptography Extension Policy Files herunterladen.
    2. jce_policy.zip nach /usr/lib/jvm/java-6-sun/jre/lib/security entpacken, vorhandene Files ersetzen. Das muss auch nach jedem JRE-Update erneut gemacht werden!
    3. Neuen Keystore mit einem privaten Schlüssel erzeugen, Keystore-Passwort merken:
      keytool -genkey -alias tomcat -keysize 2048 -keyalg RSA \
              -keystore /usr/share/tomcat6/.keystore

      Wichtig: Der Alias muss „tomcat“ lauten, damit Tomcat das Zertifkat auch findet! Und: Bei der ersten Frage nach Vor- und Nachnamen muss der Servername in der Form www.example.com eingetragen werden!

    4. Certificate Signing Request (CSR) erzeugen:
      keytool -certreq -alias tomcat -file tomcat.csr -keyalg RSA \
              -keystore /usr/share/tomcat6/.keystore
    5. CSR-Datei bei der CA des Vertrauens einreichen, Zertifikat in Form einer CRT-Datei zurückerhalten. Ich nehme eigentlich immer www.rapidssl.com – zum Glück merkt man noch nicht, dass sie von Symantec aufgekauft wurden 😉
    6. Zertifikat importieren:
      keytool -import -alias tomcat -file tomcat.crt -trustcacerts \
              -keystore /usr/share/tomcat6/.keystore
    7. Überprüfen, ob alles richtig drin ist:
      keytool -list -v \
              -keystore /usr/share/tomcat6/.keystore
    8. In der Tomcat-Konfiguration den Eintrag für den SSL-Connector aktivieren und das gewählte Keystore-Passwort als weiteres Attribut einfügen:
      <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
       maxThreads="150" scheme="https" secure="true"
       clientAuth="false" sslProtocol="TLS" keystorePass="mypassword" />

    Nachtrag: Ein automatischer Redirect von HTTP zu HTTPS funktioniert mit Bordmitteln, jedoch etwas anders als vielleicht erwartet:

    • In die web.xml muss ein Eintrag innerhalb von <web-app> eingefügt werden, z.B. nach der Sektion <servlet-mapping>:
      <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> 
      
    • Der Redirect wird dann an den Port gemacht, der in der server.xml im HTTP-Connector als „redirectPort“ angegeben ist. Steht dort „8443“, wird der Browser an „http://www.example.com:8443“ weitergeleitet, was natürlich unschön aussieht. Hier hilft eine Firwall-Regel auf dem Server, die 443 an 8443 weiterleitet. Dann muss natürlich der Wert in der server.xml auch auf 443 geändert werden.
    iwev4EKB

    Permalink

    Posted by kbe @ 00:10

    Tags: , , , , ,

Schreibe einen Kommentar