Bereitstellung über HTTPS
Konfigurieren des HTTPS Connectors
Um den Apache Tomcat über HTTPS bereitzustellen, sind Anpassungen an der Datei server.xml des Tomcats notwendig.
- Öffnen Sie die Datei server.xml (Pfad = /Pfad/Zum/Tomcat/conf/server.xml) mit einem entsprechenden Texteditor
Navigieren Sie zu der u.g. Zeile bzw. dem gesamten Eintrag/Block
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
type="RSA" ></Certificate>
</SSLHostConfig>
</Connector>Sollte der entsprechende Block kommentiert sein, so kommentieren Sie diesen aus!
Passen Sie den Inhalt an Ihre Gegebenheiten (Pfade/Zertifikate/Port) an.
<Connector port="443" protocol="HTTP/1.1" maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
URIEncoding="UTF-8"
maxHttpHeaderSize="65536"
maxPostSize="10485760"
relaxedQueryChars="[ \ ] ^ ` { | }">
<SSLHostConfig hostName="XX.XXXX.XX">
<Certificate certificateKeyFile="conf/private.key"
certificateFile="conf/zertifikat.crt"
certificateChainFile="conf/CHAIN.pem"
type="RSA" ></Certificate>
</SSLHostConfig>
</Connector>Weiterführende Informationen zur Konfiguration von der Eigenschaft SSLHostConfig: https://tomcat.apache.org/tomcat-8.5-doc/config/http.html#SSL_Support_-_SSLHostConfig
Eine Zusammenfassung der wichtigsten Optionen
Attribut | Wert | Beschreibung |
---|---|---|
certificateChainFile | *.* | Das übergeordnete Zertifikat (Certificate Authority (CA)), wenn nötig. |
certificateFile | *.crt | Das eigentliche Zertifikat. |
certificateKeyFile | *.key | Der private Schlüssel des Zertifikats. |
hostName | * | Name oder IP Adresse des Hosts. |
maxHttpHeaderSize | 65536 | Dieser Wert sollte nicht verändert werden. |
maxPostSize | 1100715200 | Maximale Größe der Posts (Formulardaten inkl. Datei-Uploads) in Bytes. Der Wert in dem Beispiel ist 1GB. |
port | 443 (Standard) | Über diesen Port wird die Verbindung aufgebaut. |
URIEncoding | UTF-8 | UTF-8 ist wichtig für eine durchgängig sauberes Encoding. |
Weitere Möglichkeiten ein Zertifikat im Tomcat am Connector zu konfigurieren
Einbindung mittels KeyStore:
URIEncoding="UTF-8"
maxHttpHeaderSize="65536"
maxPostSize="10485760"
relaxedQueryChars="[ \ ] ^ ` { | }">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/file.keystore"
certificateKeystorePassword="mypwd" ></Certificate>
</SSLHostConfig>
</Connector>
Ist man im Besitz einer KeyPair-Datei (*.pfx, *.p12) kann man diese auch direkt einbinden:
URIEncoding="UTF-8"
maxHttpHeaderSize="65536"
maxPostSize="10485760"
relaxedQueryChars="[ \ ] ^ ` { | }">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/file.pfx"
certificateKeystorePassword="mypwd"
certificateKeystoreType="PKCS12" ></Certificate>
</SSLHostConfig>
</Connector>
Erzwingen von HTTPS
Sollte der komplette Server ausschließlich über HTTPS betrieben werden empfiehlt es sich den Standard HTTP-Connector zu entfernen bzw. auszukommentieren. Sollte dies keine Option sein gibt es zusätzlich die Möglichkeit sowohl für den ganzen Server, als auch für einzelne Anwendungen eine Kommunikation über HTTPS zu erzwingen. Hierfür kann in die Datei web.xml des Servers (/Pfad/Zum/Tomcat/conf/web.xml) oder der Anwendung (/Pfad/Zum/Tomcat/webapps/formcycle/WEB-INF/web.xml) innerhalb des Knotens web-app folgendes eingefügt werden:
<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>