SSL für Tomcat

Analog zu SSL für Apache werden drei Schritte benötigt,

  1. Generieren eines privaten Keys
  2. Erzeugen eines Zertifizierungs-Request
  3. Erzeugen des Zertifikates

Um Unterschied zu Apache werden für Tomcat die Schlüssel auf Java-Art in einerm Datei-Container gespeichert, dem "Keystore". In der Tomcat-Konfiguration in der Datei ./conf/server.xml wird ein Connector für einen TCP-Port eingerichtet, in dem die SSL-Engine eingeschaltet und auf den erzeugten Keystore verwiesen wird.

Im Beispiel sieht das dann so aus:

Erzeugen des Keystores:



# Datei keystore_server1mit Private Key erzeugen
keytool -v -genkey -alias MeinServer1 -dname "CN=meinserver1.example.com,OU=IT,O=Meine Organisation,ST=Nordrhein-Westfalen,L=Detmold,C=DE" \
-keyalg rsa -keystore keystore_server1 -storepass Geheim123  -keysize 2048

# Zertifikat-Request erzeugen und als Datei keystore_server1.csr abspeichern
keytool -v -certreq -keystore keystore_server1 -storepass Geheim123 -file keystore_server1.csr -alias MeinServer1 -keyalg RSA

# Bei einer externen Zertifizierungsstelle das Zertifikat mit dem Request-File erzugen lassen.

# Im Notfall oder zum Test geht es auch selbst mit openssl:
openssl genrsa -des3 -out privatekey.pem 2048
openssl x509 -req -days 3650 -in keystore_server1.csr -signkey privatekey.pem -out certificate-server1.pem

# Das erzeugte Zertifikat in den Keystore importieren:
keytool -v -import -alias root -keystore keystore_sserver1 -storepass Geheim123 -trustcacerts -file certificate-server1.pem



In der Konfigurationsdatei des Tomcat wurd dann in folgender Weise der Connector eingerichtet:



<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxHttpHeaderSize="8192" SSLEnabled="true"
maxThreads="150" minSpareThreads="25"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
keystoreFile="/opt/ssl/keystore_server1" keystorePass="Geheim123"
clientAuth="false" sslProtocol="TLS" useBodyEncodingForURI="true"/>


Beim Start des Tomcat sollte auf die Ausgabe der catalina.out geachtet werden, um eventuelle Fehler erkennen zu können. Wenn alles stimmt, kann der Tomcat Server unter der URL "https://meinserver1.example.com:8443" zu erreichen sein.