Eigentlich nicht kompliziert, wenn man weiß, wie es geht
Also hier als kurzes Kochrezept für Ubuntu:
- Erstmal die unbeschränkten Java Cryptography Extension Policy Files herunterladen.
- 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!
- Neuen Keystore mit einem privaten Schlüssel erzeugen, Keystore-Passwort merken:
keytool -genkey -alias tomcat -keysize 2048 -keyalg RSA \ -keystore /usr/share/tomcat6/.keystoreWichtig: 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!
- Certificate Signing Request (CSR) erzeugen:
keytool -certreq -alias tomcat -file tomcat.csr -keyalg RSA \ -keystore /usr/share/tomcat6/.keystore - 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
- Zertifikat importieren:
keytool -import -alias tomcat -file tomcat.crt -trustcacerts \ -keystore /usr/share/tomcat6/.keystore - Überprüfen, ob alles richtig drin ist:
keytool -list -v \ -keystore /usr/share/tomcat6/.keystore - 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