Tomcat und SSL


Tomcat mit SSL Verschlüsselung betreiben.
Wenn man Tomcat installiert, ist erstmal kein verschlüsselter Zugriff möglich.Um Tomcat mit SSL Verschlüsselung zu betreiben, benötigt man erst ein Zertifikat.

Dies kann ein selbst-signiertes oder ein offizielles Zertifikat sein.

Das Zertifikat liegt dann vor als 3 Dateien

 

  1. Das Zertifikat File mit der Endung .crt
  2. Das Key File mit der Endung .key
  3. Das CA File der austellenden Stelle mit der Endung .pem

Diese Dateien kann man nun auf 2 Wegen in Tomcat importieren

  1. PKCS12 Zertifikate
  2. Java Keystore
Die Zertifikate erzeugen.
1. PKCS12 Zertifikat
openssl pkcs12 -export -out tomcat.pfx -inkey domian.irgendwas.key -in domian.irgendwas.crt -certfile ROOT_CA.pem
Hierbei wird ein Passwort erfragt, welches später in der server.xml von Tomcat eingetragen werden muss.
2. Java Keystore
Dieser Weg ist etwas komplizierter und man benötigt die genauen Informationen, die bei dem „certificate signing request“ angegeben wurden.
keytool -genkey -alias domain.irgendwas -keyalg RSA -keystore tomcat.jks -keysize 2048
Bei diesem Schritt werden Informationen abgefragt, die identisch sein müssen zu denen, die bei dem CSR angegeben worden sind.Ebenfalls wird ein Passwort erfragt, welches später in der server.xml von Tomcat eingetragen werden muss.
keytool -import -trustcacerts -alias root -file ROOT_CA.crt -keystore tomcat.jks
ROOT_CA.crt ist das Zertifikat der Firma, die unser eigenes Zertifikat erstellt hat.

Wenn man ein selbst signiertes Zertifikat hat, ist es jenes, welches im ersten Schritt mit openssl erzeugt wurde.
keytool -import -trustcacerts -alias domain.irgendwas -file domain.irgendwas.crt -keystore tomcat.jks
Wenn alles gut gegangen ist, habt ihr jetzt einen Java Keystore, in dem das Zertifikat importiert ist.

Dies kann man testen mit:
keytool -list -keystore tomcat.jks

Die Zertifikate in Tomcat einrichten.
Jetzt hat man entweder ein Java Keystore File oder ein PKCS12 File.Das entsprechende File kopiert man nun, wenn man will, in den Tomcat conf Ordner. Es kann aber liegen, wo ihr wollt, dann muss aber der komplette Pfad eingetragen werden.

Als nächstes öffnet ihr die Datei server.xml unter %TOMCAT_HOME%/conf. Bzw. am besten erstmal ein backup dieser Datei machen.

Ich beschreibe hier die Konfiguration, um den Standard Port 8080 auf HTTPS umzustellen. Aus meiner Sicht sollte gerade Tomcat, auf dem Webapplicationen laufen, an denen man sich normalerweise anmelden sollte, nicht unverschlüsselt laufen.

Wenn man beide Möglichkeiten benötigt, einfach einen neuen Connector anlegen. Dazu sollte google euch genügend Hilfestellung bieten.

server.xml für das PKCS12 Zertifikat
<Connector port=“8080″ protocol=“HTTP/1.1″ connectionTimeout=“20000″ redirectPort=“8443″
SSLEnabled=“true“
maxThreads=“150″
scheme=“https“
secure=“true“
clientAuth=“false“
sslProtocol=“TLS“
keystoreType=“PKCS12″
keystoreFile=“/pfad/zur/tomcat.pfx“
keypass=“********“ />
server.xml für den Java Keystore
<Connector port=“8080″ protocol=“HTTP/1.1″ connectionTimeout=“20000″ redirectPort=“8443″
SSLEnabled=“true“
maxThreads=“150″
scheme=“https“
secure=“true“
clientAuth=“false“
sslProtocol=“TLS“
keyAlias=“domain.irgendwas“
keystoreFile=“/pfad/zur/tomcat.jks“
keypass=“********“ />
Jetzt muss man Tomcat noch neu starten und dann klappt der Zugriff über https://domain.irgendwas:8080/WebApp.