HTTPS für Tomcat
Ich zeige euch wie man HTTPS für Tomcat aktiviert. Normalerweise sind die Applikationen des Tomcat Webservers nur über den normalen HTTP Port aufzurufen. Will man eine sichere Verbindung mit SSL beziehungsweise heute als TLS bezeichnet (HTTPS), dann muss man dies extra einstellen. Dieser Artikel zeigt kurz und knapp wie das geht.
HTTPS für Tomcat
Folgende Dinge werden hier vorausgesetzt:
- JDK 1.6 oder größer
- Tomcat 6 oder besser
Keystore Datei anlegen
Zuerst müssen wir in den bin Ordner des Java SDKs wechseln:
cd $JAVA_HOME/bin
In diesem Verzeichnis sollte es eine keytool Datei geben. Mit der erzeugen wir und eine Keystore Datei:
keytool -genkey -alias ziegelwanger-edv -keypass zzadmin -keystore ziegelwanger-edv.bin -storepass zzadmin
Wichtig ist hier, dass bei keypass und storepass das selbe eingetragen wird. Nun werden etliche Dinge abgefragt die man beantworten muss. Für mein Beispiel wäre das folgendes:
What is your first and last name? [Unknown]: werner ziegelwanger What is the name of your organizational unit? [Unknown]: home What is the name of your organization? [Unknown]: ziegelwanger-edv What is the name of your City or Locality? [Unknown]: melk What is the name of your State or Province? [Unknown]: niederösterreich What is the two-letter country code for this unit? [Unknown]: AT Is CN=nitin pai, OU=home, O=techtracer, L=mumbai, ST=maharashtra, C=IN correct? [no]: yes
Wenn die Erstellung der Keystore Datei erfolgreich war, dann findet man nun in meinem Fall die ziegelwanger-edv.bin Datei im Ordner. Diese kopieren wir in den webapps Ordner von Tomcat.
Tomcat mit Keystore Datei konfigurieren
Tomcat lässt sich über die server.xml Datei konfigurieren. Diese ist im Konfigurationsordner von Tomcat zu finden. Bei Linux ist das üblicherweise /etc/tomcat7/. In dieser Datei müssen wir den Connector für den Port 8443 editieren. Dieser ist üblicherweise auskommentiert. Geändert werden sollte er folgendermaßen:
<Connector port=”8443″ maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″ enableLookups=”true” disableUploadTimeout=”true” acceptCount=”100″ debug=”0″ scheme=”https” secure=”true” clientAuth=”false” sslProtocol=”TLS” keystoreFile=”../webapps/ziegelwanger-edv.bin” keystorePass=”zzadmin” />
Die beiden letzten Zeilen sind hier wichtig. Die Applikation sollte man nun bereits über HTTPS aufrufen können:
https://localhost:8443/
Webapplikation für SSL konfigurieren
Derzeit kann die Applikation sowohl mit HTTP als auch mit HTTPS aufgerufen werden. Um nur noch HTTPS zuzulassen müssen wir die Wabapplikation konfigurieren. Dafür fügen wir in der web.xml Datei folgendes ein:
<security-constraint> <web-resource-collection> <web-resource-name>securedapp</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
Dies muss vor dem Ende der Datei mit eingefügt werden.
Fertig! Jetzt ist die Applikation auch mit dem Tomcat durch SSL geschützt.
Fazit
HTTPS für Tomcat ist recht einfach einzustellen. Mit nur wenig Konfigurationsaufwand erhöht sich die Sicherheit der Applikation radikal. Von nun an wird die gesammte Kommunikation verschlüsselt und ist vor Angreifern sicher, die den Netzwerkverkehr abhorchen.