ThingWorx Modelldefinition in Composer > Sicherheit > HSTS in Apache Tomcat aktivieren
HSTS in Apache Tomcat aktivieren
Zum Aktivieren von HTTP Strict-Transport-Security (HSTS) in Apache Tomcat empfiehlt PTC die Nutzung der unten bereitgestellten Informationen.
Einführung
HTTP HSTS ist ein Mechanismus, der es Websites ermöglicht, zu deklarieren, dass auf sie nur über eine sichere Verbindung (HTTPS) zugegriffen werden kann. Der Mechanismus wird von der RFC6797 spezifiziert und verwendet Strict-Transport-Security im Antwort-Header, um User Agents (UAs) über die sichere Richtlinie zu informieren, die von der Website gefordert wird.
HSTS richtet sich gegen die folgenden Bedrohungen:
Der Benutzer versieht http://myDomain.com mit einem Lesezeichen oder gibt die URL manuell ein und wird Opfer eines Man-in-the-Middle-Angriffs.
HSTS leitet HTTP-Anforderungen automatisch an HTTPS für die Zieldomäne um.
Eine Web-Anwendung, die ausschließlich HTTPS verwenden soll, enthält unbeabsichtigt HTTP-Links oder stellt Inhalte über HTTP bereit.
HSTS leitet HTTP-Anforderungen automatisch an HTTPS für die Zieldomäne um.
Ein Man-in-the-Middle-Angreifer versucht, Datenverkehr mithilfe eines ungültigen Zertifikats von einem Benutzer abzufangen und hofft, dass sein Opfer das falsche Zertifikat akzeptiert.
HSTS lässt nicht zu, dass ein Benutzer die Meldung über ein ungültiges Zertifikat übergeht.
HSTS verhindert außerdem die Umleitung von HTTPS zu HTTP und verringert Zugriffslatenzen.
Für den Strict-Transport-Security-Header gilt Folgendes:
Er wird nur erkannt, wenn er über eine HTTPS-Verbindung gesendet wird. Websites können Benutzern trotzdem die Interaktion mit der Website über HTTP erlauben, um Kompatibilität mit Nicht-HTTPS-Benutzer-Agents sicherzustellen.
Er muss eine Anweisung zum maximalen Alter enthalten. Der Wert gibt die Anzahl von Sekunden an, die der UA den Host als bekannten HSTS-Host behandelt (der Wert 0 bedeutet, dass die Behandlung eingestellt wird).
Er kann eine includeSubdomain-Anweisung enthalten, die – sofern vorhanden – dem UA anzeigt, dass die HSTS-Richtlinie für den HSTS-Host und alle untergeordneten Domänen des Host-Domänennamens gilt.
Das preload-Flag, das die Zustimmung des Website-Besitzers zum Vorabladen seiner Domäne anzeigt. Wenn die Domäne vorab geladen wird, ist dem Browser bereits bekannt, dass der Host die Verwendung von SSL/TLS erfordert; dadurch wird das kleine Fenster entfernt, in dem noch Angriffe auftreten können: die anfängliche Umleitung von HTTP zu HTTPS. Der Website-Besitzer muss die Domäne an die Liste senden (hier).
HSTS in Tomcat
Apache Tomcat v8.0.23 bietet den neuen HttpHeaderSecurityFilter, der die HTTP-Header Strict-Transport-Security, X-Frame-Options und X-Content-Type-Options zur Antwort hinzufügt. Der Filter kann wie jeder andere Filter über die Datei web.xml hinzugefügt und konfiguriert werden. Die Beschreibung des Filters steht hier zur Verfügung, und die Tomcat-Installation wird mit einem Beispiel in conf/web.xml bereitgestellt. Das Beispiel unten ist ein Ausschnitt aus der Datei web.xml, mit dem Sie HSTS in Tomcat aktivieren können:
<!-- ================== Built In Filter Definitions ===================== -->

<!-- A filter that sets various security related HTTP Response headers. -->
<!-- This filter supports the following initialization parameters -->
<!-- (default values are in square brackets): -->
<!-- -->
<!-- hstsEnabled Should the HTTP Strict Transport Security -->
<!-- (HSTS) header be added to the response? See -->
<!-- RFC 6797 for more information on HSTS. [true] -->
<!-- -->
<!-- hstsMaxAgeSeconds The max age value that should be used in the -->
<!-- HSTS header. Negative values will be treated -->
<!-- as zero. [0] -->
<!-- -->
<!-- hstsIncludeSubDomains -->
<!-- Should the includeSubDomains parameter be -->
<!-- included in the HSTS header. -->
<!-- -->
<!-- antiClickJackingEnabled -->
<!-- Should the anti click-jacking header -->
<!-- X-Frame-Options be added to every response? -->
<!-- [true] -->
<!-- -->
<!-- antiClickJackingOption -->
<!-- What value should be used for the header. Must -->
<!-- be one of DENY, SAMEORIGIN, ALLOW-FROM -->
<!-- (case-insensitive). [DENY] -->
<!-- -->
<!-- antiClickJackingUri IF ALLOW-FROM is used, what URI should be -->
<!-- allowed? [] -->
<!-- -->
<!-- blockContentTypeSniffingEnabled -->
<!-- Should the header that blocks content type -->
<!-- sniffing be added to every response? [true] -->
<filter>
<filter-name>httpHeaderSecurity</filter-name>
<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>hstsEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>hstsMaxAgeSeconds</param-name>
<param-value>31536000</param-value>
</init-param>
<init-param>
<param-name>hstsIncludeSubDomains</param-name>
<param-value>true</param-value>
</init-param>
</filter>

<!-- The mapping for the HTTP header security Filter -->
<filter-mapping>
<filter-name>httpHeaderSecurity</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
Der Strict-Transport-Security-Header wird nur zurückgegeben, wenn der UA über HTTPS auf die Website zugreift. Daher muss Tomcat mit SSL/TLS konfiguriert werden. (Das sichere Tomcat-Setup finden Sie hier.) Da Strict-Transport-Security nur zurückgegeben wird, wenn die Verbindung sicher ist, muss der Besitzer der Website Folgendes festlegen:
Ob die Website aus Gründen der Abwärtskompatibilität auch über unsichere Verbindungen bereitgestellt wird
Ob unsichere Verbindungen zu sicheren Verbindungen umgeleitet werden (empfehlenswert)
Im zweiten Fall ist es möglich, die Umleitung in Tomcat einzurichten, indem eine Sicherheitsbeschränkung in der Datei web.xml und die Umleitung in der Datei server.xml hinzugefügt wird. Beispiel:
<security-constraint>
<web-resource-collection>
<web-resource-name>twx-portal</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Umleitung von HTTP zu HTTPS einrichten (optional)
Um die Umleitung von HTTP-Datenverkehr zu einer sicheren Verbindung zu erzwingen, stellen Sie sicher, dass für den in server.xml definierten HTTP-Konnektor das Attribut redirectPort so konfiguriert ist, dass es auf den richtigen Port verweist. Wenn der Konnektor nicht definiert ist, fügen Sie ihn hinzu. Er sollte wie folgt aussehen:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Fügen Sie in der Datei WEB-INF/web.xml die Sicherheitsbeschränkung hinzu:
<security-constraint>
<web-resource-collection>
<web-resource-name>twx-portal</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
War dies hilfreich?