Sicherheitskonfiguration für Tomcat mit Secure Socket Layer (SSL)
Einführung
Secure Socket Layer (SSL) ist das Kryptographieprotokoll, um Nachrichtensicherheit über das Internet zu gewährleisten. Es basiert auf dem Prinzip von privaten und öffentlichen Schlüsseln, und Nachrichten werden verschlüsselt, bevor sie über das Netzwerk gesendet werden. Um SSL in Tomcat zu konfigurieren, benötigen wir ein digitales Zertifikat, das mit dem Java-Schlüsselwerkzeug für die Entwicklungsumgebung erstellt werden kann. Für die Produktionsumgebung sollten Sie das digitale Zertifikat von SSL-Zertifikatanbietern beziehen, zum Beispiel von Verisign, Entrust, Lets’ Encrypt.
Erstellen eines SSL-Zertifikats
Folgen Sie den untenstehenden Schritten, um Ihr eigenes digitales Zertifikat zu erstellen.
$ keytool -genkey -alias tomcat -keyalg RSA -keystore mycertificate.cert
Geben Sie das Keystore-Passwort ein:
Passwort erneut eingeben:
Wie lautet Ihr Vor- und Nachname?
[Unbekannt]: Pankaj Kumar
Wie lautet der Name Ihrer Organisationseinheit?
[Unbekannt]: Dev
Wie lautet der Name Ihrer Organisation?
[Unbekannt]: JournalDev
Wie lautet der Name Ihrer Stadt oder Ortschaft?
[Unbekannt]: Bangalore
Wie lautet der Name Ihres Bundesstaates oder Ihrer Provinz?
[Unbekannt]: Karnataka
Wie lautet der zweistellige Ländercode für diese Einheit?
[Unbekannt]: IN
Ist CN=Pankaj Kumar, OU=Dev, O=JournalDev, L=Bangalore, ST=Karnataka, C=IN korrekt?
[nein]: Ja
Geben Sie das Schlüsselpasswort für
(RETURN, wenn dasselbe wie das Keystore-Passwort):
Passwort erneut eingeben:
$ ls
mycertificate.cert
Ich habe für das Keystore und den Schlüssel das Passwort „changeit“ verwendet, aber Sie können jedes beliebige Passwort verwenden. Jetzt ist unser digitales Zertifikat fertig, und der nächste Schritt ist, den HTTPS-Kommunikationsport in Tomcat zu aktivieren und so einzustellen, dass er unser digitales Zertifikat für die SSL-Unterstützung verwendet.
Tomcat HTTPS-Konfiguration
Um SSL zu aktivieren, öffnen Sie die Datei Tomcat_Installation/conf/server.xml
und kommentieren Sie die folgende Zeile ein:
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
keystoreFile="/Users/Pankaj/tomcat/conf/mycertificate.cert"
clientAuth="false" sslProtocol="TLS" />
Um eine Fehlplatzierung des Zertifikats zu vermeiden, habe ich es im Tomcat-Konfigurationsverzeichnis abgelegt. Starten Sie nun Tomcat neu und versuchen Sie, auf eine Webanwendung über HTTPS mit Port 8443 zuzugreifen.
Tomcat HTTP auf HTTPS umleiten
So können wir auf jede Webanwendung über die HTTP- und HTTPS-Ports zugreifen. Wir können Tomcat so einrichten, dass alle HTTP-Anfragen an den HTTPS-Port umgeleitet werden, indem wir einige Konfigurationen vornehmen.
In TomcatInstallation/conf/server.xml
setzen Sie für den HTTP-Connector den Umleitungsport auf den HTTPS-Connector-Port. Das sieht dann ungefähr so aus:
<!-- Definieren Sie einen nicht-SSL HTTP/1.1 Connector auf Port 8080 -->
<Connector port="8090" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
In TomcatInstallation/conf/web.xml
, fügen Sie die folgende Konfiguration hinzu, aber achten Sie darauf, sie nach allen servlet-mapping-Tags hinzuzufügen:
<!-- hinzugefügt von Pankaj für automatische Weiterleitung von HTTP zu HTTPS -->
<security-constraint>
<web-resource-collection>
<web-resource-name>Gesamte Anwendung</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>VERTRAULICH</transport-guarantee>
</user-data-constraint>
</security-constraint>
Starten Sie Tomcat jetzt neu, und alle HTTP-Anfragen werden automatisch auf HTTPS umgeleitet, d.h., https://localhost:8080/axis2 wird automatisch auf https://localhost:8443/axis2 umgeleitet.
Hinweis: Wenn Sie keine Ports in den URLs angeben möchten, dann verwenden Sie 80 für HTTP und 443 für HTTPS. In diesem Fall können Sie den ersten Schritt zur automatischen Weiterleitung von HTTP-Anfragen auf HTTPS überspringen, da automatisch der Standardport 443 ausgewählt wird. Das war’s! Ich hoffe, dieser Leitfaden zur Sicherheitskonfiguration für Tomcat mit Secure Socket Layer (SSL) war hilfreich für Sie.