WordPress HTTPS, SSL & TLS – ein Leitfaden für Website-Administratoren
Veröffentlicht: 2021-02-01Wenn Sie eine Website besuchen, sendet Ihr Browser (auch Client genannt) eine HTTP- Anfrage an einen Webserver. Sobald der Webserver eine HTTP- Antwort sendet, kann der Browser die Seite auf Ihrem Bildschirm rendern. HTTP-Verkehr hat jedoch ein Problem; es ist ein Klartextprotokoll. Dies macht es anfällig für Schnüffeln und Einmischen.
Wenn sich ein Angreifer im selben Netzwerk wie Sie befindet, kann er Ihren HTTP-Datenverkehr abfangen und lesen. Sie können auch sowohl Ihre Anfragen an den Server als auch die Antworten des Servers an Sie ändern. Dies wird als Man-in-the-Middle (MitM)-Angriff bezeichnet. Dies kann leicht in öffentlichen WLANs passieren, wie z. B. in Hotellobbys und öffentlichen Räumen.
Deshalb sollte eine Website auf HTTPS laufen – damit der Datenverkehr nicht abgefangen werden kann. Dieser Artikel erklärt, was HTTPS, SSL und TLS sind. Es erklärt auch, wie Sie Ihre WordPress-Website so konfigurieren können, dass sie mit HTTPS funktioniert.
Inhaltsverzeichnis
- Was ist SSL und TLS?
- Was ist HTTPS?
- Wie funktioniert HTTPS?
- Der TLS-Handshake
- Der öffentliche und der private Schlüssel (das Schlüsselpaar)
- Wie funktioniert HTTPS?
- Brauche ich wirklich HTTPS auf meiner WordPress-Website?
- Abrufen eines HTTPS-TLS-Zertifikats (auch bekannt als SSL-Zertifikat)
- HTTPS auf gemeinsam genutztem und verwaltetem WordPress-Hosting
- Konfigurieren von WordPress HTTPS
- Konfiguration des Webservers
- Konfigurieren der WordPress-URL auf HTTPS
- Erzwingen von TLS auf dem WordPress-Dashboard (Bonus-Tipps)
- Hinzufügen von HTTP Strict Transport Security (HSTS)
- Konfigurieren von HSTS auf dem Webserver
- TLS-Chiffren
- Mein WordPress läuft auf HTTPS, ist es sicher?
Was ist SSL und TLS?
Als das Internet zu wachsen begann, wurde es offensichtlich, dass wir einen Mechanismus brauchten, um Informationen sicher zwischen einem Client und einem Server zu übertragen, ohne dass jemand den Datenverkehr abhören oder ändern kann – geben Sie SSL oder Secure Socket Layer ein. SSL ist ein Internet-Sicherheitsprotokoll, das erstmals 1995 von Netscape entwickelt wurde, um dieses Problem zu lösen.
Genauer gesagt soll SSL Folgendes erreichen:
- Verschlüsselung – um den Datenverkehr zu verschlüsseln, damit er nicht von unbefugten Dritten durch Abhören abgefangen werden kann,
- Authentifizierung – um sicherzustellen, dass der Server, mit dem der Client spricht, tatsächlich der Server ist, für den er sich ausgibt,
- Integrität – um sicherzustellen, dass die zwischen dem Client und dem Server gesendeten Daten unterwegs nicht von jemand anderem geändert werden.
Im Laufe der Zeit identifizierten Sicherheitsforscher jedoch eine Reihe von Sicherheitsproblemen in SSL. Daher wurde SSL durch TLS (Transport Layer Security Protocol) abgelöst. Während die Unterschiede unter der Haube zwischen SSL und TLS drastisch sind, bleibt der Zweck von TLS weitgehend gleich.
HINWEIS: Möglicherweise sehen Sie häufig, dass SSL verwendet wird, um auf TLS zu verweisen. SSL ist ein veraltetes Protokoll und kann nicht mehr sicher verwendet werden. Aufgrund seiner Popularität verwenden viele immer noch SSL als Akronym, aber sie meinen TLS .
Was ist HTTPS?
HTTPS oder Hypertext Transfer Protocol Secure ist eine sichere Version des HTTP-Protokolls. HTTPS basiert auf Transport Layer Security (TLS), einem verbesserten und sichereren Protokoll als das früher verwendete Secure Socket Layer (SSL). TLS bietet Verschlüsselung, Authentifizierung und Integrität für HTTPS-Anforderungen und -Antworten.
Sie können sich HTTPS als HTTP-Anfragen und -Antworten (das ist die Klartextversion des Protokolls) vorstellen, die durch einen TLS -Tunnel geleitet werden. Der Fachbegriff dafür ist Kapselung . Es ist wichtig zu beachten, dass TLS verwendet werden kann, um andere Protokolle zu kapseln, nicht nur HTTP.
Sie erkennen Websites, die HTTPS verwenden, entweder am Anfang der URL (beginnt mit HTTPS) in der Navigationsleiste des Browsers oder am grünen Vorhängeschloss. Wenn Sie eine Website über HTTP durchsuchen, wird sie vom Browser als nicht sicher gekennzeichnet.
Wie funktioniert HTTPS?
Wenn Sie eine Webseite über HTTPS anfordern, starten Ihr Browser und der Webserver einen Prozess namens TLS-Handshake . Der TLS-Handshake ist eine Möglichkeit für Client und Server zu entscheiden, ob und wie sie kommunizieren sollen. Während des TLS-Handshakes tun Client und Server Folgendes:
- Entscheidung über die zu verwendende Version des TLS-Protokolls (TLS 1.0, 1.2, 1.3…),
- vereinbaren, welche Verschlüsselungsalgorithmen (eine Reihe von Verschlüsselungsalgorithmen, die zum Aufbau sicherer Kommunikation verwendet werden) verwendet werden sollen,
- die Identität des Servers authentifizieren,
- Generieren Sie Verschlüsselungsschlüssel, die nach Abschluss des Handshakes verwendet werden, um sicher zu kommunizieren.
Der TLS-Handshake
Während des TLS-Handshakes sendet der Server dem Client sein Zertifikat, damit der Client überprüfen kann, ob er den Server authentifizieren kann. Ein Zertifikat ähnelt einem Reisepass – es wird von einer vertrauenswürdigen zentralen Stelle namens Certificate Authority (CA) ausgestellt, die unabhängig die Identität der Website feststellt, die Ihrem Browser nachgewiesen werden kann.
Der öffentliche und der private Schlüssel (das Schlüsselpaar)
Das TLS-Zertifikat (häufig als SSL-Zertifikat bezeichnet), das der Webserver an den Client sendet, enthält den öffentlichen Schlüssel . Der öffentliche Schlüssel ist einer von zwei speziellen Schlüsseln, die als Schlüsselpaar bezeichnet werden . Ein Schlüsselpaar besteht aus zwei Schlüsseln; der öffentliche Schlüssel und der private Schlüssel . Während der öffentliche Schlüssel mit den Clients geteilt wird, wird der private Schlüssel auf dem Server geheim gehalten und niemals offengelegt. Das Schlüsselpaar wird zusammen geschmiedet.
Das Paar aus öffentlichem und privatem Schlüssel hat eine besonders interessante Beziehung – ohne den privaten Schlüssel des Servers zu kennen (dieser ist geheim und nur der Server sollte ihn kennen), kann ein Client Daten mit dem öffentlichen Schlüssel des Servers verschlüsseln , die der Server mit seinem privaten Schlüssel entschlüsseln kann .
Wenn das verwirrend klingt, stellen Sie sich das so vor, als ob der „Server“ Ihrem „Browser“ einen offenen Koffer (öffentlicher Schlüssel) geschickt hat, der mit einem Vorhängeschloss geschützt ist – sobald Sie etwas in den Koffer legen und das Vorhängeschloss abschließen, nur der „Server“ mit dem Schlüssel zum Vorhängeschloss (privater Schlüssel) kann sehen, was sich darin befindet.
Brauche ich wirklich HTTPS auf meiner WordPress-Website?
Ja. Unabhängig davon, welche Art von Datenverkehr Ihre Website bedient (sei es personenbezogene Daten (PII), Karteninhaberdaten oder Katzenbilder), gibt es absolut keinen Grund , warum Sie Ihre Website nicht über HTTPS bereitstellen sollten.
Erstens, wenn Sie Ihre Website auf HTTP betreiben, können Hacker Ihre WordPress-Passwörter und Anmeldeinformationen leicht stehlen und sich in Ihre Website hacken. All dies können sie mit frei verfügbaren Tools tun.
Abgesehen von den Sicherheitsvorteilen und einer besseren Benutzererfahrung kann das neue HTTP/2-Protokoll, das mehrere Leistungsvorteile bietet, nicht ohne TLS in Webbrowsern verwendet werden. Darüber hinaus bietet HTTPS auch Vorteile für die Suchmaschinenoptimierung (SEO) und ist Teil des Suchranking-Algorithmus von Google.
Abrufen eines HTTPS-TLS-Zertifikats (auch bekannt als SSL-Zertifikat)
Um HTTPS einzurichten, benötigen Sie ein TLS-Zertifikat, wenn Sie alles selbst einstellen. Während Sie Dutzende von kostenpflichtigen Angeboten für TLS-Zertifikate sehen, können Sie ein kostenloses TLS-Zertifikat von einer gemeinnützigen Zertifizierungsstelle namens Let's Encrypt erhalten. Es gibt absolut keinen Unterschied zwischen einem Zertifikat, das Sie kostenlos von Let's Encrypt erhalten, und einem, für das Sie bezahlen.
HTTPS auf gemeinsam genutztem und verwaltetem WordPress-Hosting
Bitte beachten Sie, dass Ihr Hosting-Provider bei Managed- oder Shared-Hosting-Lösungen Gebühren für das Hinzufügen von HTTPS erheben kann oder auch nicht. Wenn dies der Fall ist, fragen Sie seinen Kundensupport, bevor Sie Geld für ein Zertifikat ausgeben, ob Sie ein Let's Encrypt-Zertifikat mit ihm verwenden können Dienst statt. Die Community-Foren von Let's Encrypt sind ebenfalls eine großartige Ressource, die Ihnen helfen kann.
Konfigurieren von WordPress HTTPS (Erzwingen von TLS auf Ihrer WordPress-Site)
Abhängig von Ihrer Einrichtung gibt es einige Möglichkeiten, TLS auf Ihrer WordPress-Website durchzusetzen. In den meisten Fällen würden Sie entweder Ihren Webserver so konfigurieren, dass er den gesamten HTTP-Verkehr auf HTTPS umleitet (siehe SSL-Konfigurationsgenerator von Mozilla.
Sie müssen WordPress auch so konfigurieren, dass es auf HTTPS lauscht. Sie können dies mit Plugins wie Really Simple SSL oder WP force SSL tun. In diesem Beispiel sehen wir, wie dies ohne zusätzliche Plugins funktioniert.
Konfiguration des Webservers
Kopf hoch
- Seien Sie beim Kopieren/Einfügen von Webserverkonfigurationen vorsichtig und stellen Sie sicher, dass Sie genau wissen, was sie tun, indem Sie die Dokumentation Ihres Webservers konsultieren
- Sie können online viele Beispiele finden, die entweder %{HTTP_HOST} (Apache HTTP Server) oder $http_host (Nginx) verwenden – beides könnte Ihre Website anfällig für HTTP-Host-Header-Angriffe machen – geben Sie stattdessen Ihren Hostnamen in Ihrer Konfiguration wie gezeigt ein unter.
Wenn Sie Nginx verwenden, können Sie Folgendes konfigurieren:
server { listen 80; server_name example.com www.example.com; return 301 https://example.com$request_uri; }
Wenn Sie Apache HTTP Server verwenden, können Sie alternativ Folgendes konfigurieren:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://www.example.com%{REQUEST_URI} [L,R=301] <IfModule>
Konfigurieren der WordPress-URL auf HTTPS
Sobald Sie HTTPS auf Ihrem Webserver aktiviert haben, müssen Sie auch WordPress einrichten. Theoretisch können Sie dies manuell tun: Ändern Sie einfach die WordPress-Adresse und die Site-Adresse in den allgemeinen WordPress-Einstellungen. Sie müssen auch in der Datenbank suchen und ersetzen, um alle Ihre Website-Links von HTTP auf HTTPS zu ändern.
[BILDSCHIRMFOTO]
Daher ist es höchstwahrscheinlich viel einfacher, ein Plugin zu verwenden, um Ihre WordPress-Website auf HTTPS umzustellen. Sie können ein beliebtes Plugin wie Really Simple SSL verwenden, um Ihnen durch den Prozess zu helfen.
Erzwingen von TLS auf dem WordPress-Dashboard
TLS ist nur sinnvoll, wenn es verwendet wird. Daher möchten Sie sicherstellen, dass Ihre WordPress-Site TLS nicht nur unterstützt, sondern auch erzwingt. Da auf das WordPress-Dashboard immer über HTTPS zugegriffen werden muss, enthält WordPress die spezielle Konfigurationsoption FORCE_SSL_ADMIN, die in wp-config.php auf true gesetzt werden kann.
define('FORCE_SSL_ADMIN', true);
Kopf hoch
- Abhängig von der Einrichtung und Konfiguration Ihrer Website (insbesondere wenn Sie einen Reverse-Proxy verwenden) kann dies dazu führen, dass Anfragen an Ihr WordPress-Dashboard in eine unendliche Umleitungsschleife geraten. Weitere Informationen zur Behebung dieses Problems finden Sie in der WordPress-Dokumentation und testen Sie Ihre Änderungen immer in einer Staging-Umgebung, bevor Sie sie in die Produktion einführen.
- Stellen Sie außerdem sicher, dass TLS bereits konfiguriert ist und ordnungsgemäß funktioniert, bevor Sie FORCE_SSL_ADMIN auf „true“ setzen.
BONUS-TIPP 1: Hinzufügen von HTTP Strict Transport Security (HSTS)
Das Umleiten Ihres gesamten Datenverkehrs auf HTTPS ist zwar ein großartiger Schachzug, aber Angreifer haben möglicherweise immer noch ein paar Tricks im Ärmel. Ein als SSL-Strip bekannter Angriff würde es einem Angreifer ermöglichen, den Browser dazu zu bringen, die Website in HTTP statt im sicheren HTTPS zu durchsuchen, wodurch Ihre harte Arbeit effektiv zunichte gemacht wird.
Weitere (sehr technische) Details zu SSL-Strip-Angriffen finden Sie im folgenden Vortrag von Moxie Marlinspike.
Infolgedessen implementieren Browser jetzt HTTP Strict Transport Security oder HSTS. HSTS ist nichts anderes als ein einfacher HTTP-Header, der dem Browser mitteilt, dass auf diese bestimmte Website niemals über HTTP zugegriffen werden sollte, wodurch alle SSL-Streifenangriffe abgewehrt werden.
Konfigurieren von HSTS auf dem Webserver
Kopf hoch
- Aktivieren Sie HSTS erst, wenn Sie mit HTTPS vertraut sind – alle Besucher, die diesen HTTP-Header erhalten, können Ihre Website nur über HTTPS anzeigen
- Legen Sie immer das Attribut „max-age“ fest – optional können Sie bei der ersten Bereitstellung von HSTS einen niedrigen Wert festlegen (um potenzielle Probleme zu begrenzen) und ihn erhöhen, wenn Sie sich bei der Verwendung von HSTS sicherer fühlen
Wenn Sie Nginx verwenden, können Sie Folgendes innerhalb des Serverblocks konfigurieren, der Port 443 überwacht:
# HSTS (ngx_http_headers_module is required) (63072000 seconds) add_header Strict-Transport-Security "max-age=63072000" always;
Wenn Sie Apache HTTP Server verwenden, können Sie alternativ Folgendes in Ihrem VirtualHost konfigurieren, der Port 443 überwacht:
# HTTP Strict Transport Security (mod_headers is required) (63072000 seconds) Header always set Strict-Transport-Security "max-age=63072000"
Bonus-Tipp 2: Konfigurieren von TLS-Chiffren
Um sicherzustellen, dass die Datenübertragung zwischen dem Browser und dem Server sicher ist, vereinbaren beide Parteien die Verwendung einer sogenannten Cipher Suite – einer Kombination aus Authentifizierungs-, Verschlüsselungs- und MAC-Algorithmen (Message Authentication Code) – zum Aushandeln von Sicherheitseinstellungen , sowie um Daten sicher zu übertragen.
Leider weisen viele Legacy-Chiffren Sicherheitslücken auf und sind nicht mehr besonders sicher in der Anwendung. Während die Entscheidung, welche Verschlüsselungen verwendet werden sollen, eine schwierige Angelegenheit ist, macht es der Mozilla SSL Configuration Generator zu einem Kinderspiel, eine TLS-Verschlüsselungssuite auszuwählen, die Ihren Anforderungen entspricht. Versuchen Sie nach Möglichkeit, mit den modernen oder mittleren Profilen zu arbeiten, aber je nach Anwendungsfall, insbesondere wenn Sie ältere Browser unterstützen oder regulatorische und Compliance-Anforderungen erfüllen müssen, müssen Sie möglicherweise etwas andere Cipher-Suite-Konfigurationen verwenden.
Wenn Sie Nginx verwenden, können Sie die folgenden TLS-Chiffren konfigurieren (basierend auf dem Zwischenprofil des Mozilla SSL Configuration Generator):
# intermediate configuration ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES25 6-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDH E-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off;
Wenn Sie Apache HTTP Server verwenden, konfigurieren Sie alternativ die folgenden TLS-Chiffren (basierend auf dem Zwischenprofil des Mozilla SSL Configuration Generator):
# intermediate configuration SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 SSLHonorCipherOrder off SSLSessionTickets off
Sie können den TLS-Konfigurationswert Ihrer Website auch mit einem kostenlosen Tool namens SSLabs testen, um noch mehr technische Einblicke zu erhalten.
Mein WordPress läuft auf HTTPS, ist es sicher?
Grüne Vorhängeschloss-Symbole und die Wörter „sicher“ neben der Adressleiste Ihres Browsers haben Sie vielleicht glauben lassen, dass HTTPS ein Zauberstab ist, der alle Sicherheitsprobleme von Websites löst. Leider nicht.
HTTPS ist nur ein kleiner Teil der WordPress-Sicherheit: Es ermöglicht Besuchern, Ihre Website über eine sichere Verbindung zu durchsuchen. Es schützt Ihre Website jedoch nicht wie eine WordPress-Firewall oder macht sie sicherer. Es bedeutet auch nicht, dass es sicherer ist als eine Website, die auf HTTP läuft. Wie jede andere Sicherheitsmaßnahme hilft HTTPS dabei, einen Teil des Problems zu lösen.
Mit anderen Worten, obwohl Sie HTTPS auf jeden Fall implementieren und durchsetzen sollten, bedeutet dies nicht, dass Sie sich beruhigt zurücklehnen und sich nie wieder Sorgen um die Sicherheit machen müssen. Sie sollten noch:
- Fügen Sie die Zwei-Faktor-Authentifizierung hinzu
- Installieren Sie ein Plugin zur Überwachung der Dateiintegrität
- Setzen Sie starke WordPress-Passwortrichtlinien durch
- Führen Sie ein WordPress-Aktivitätsprotokoll als Aufzeichnung aller Änderungen, die auf Ihrer Website vorgenommen werden
- Verwenden Sie eine gute Firewall.