HTTPS auf Ihren Servern aktivieren

Chris Palmer
Chris Palmer
Matt Gaunt

Diese Seite enthält Anleitungen zum Einrichten von HTTPS auf Ihren Servern, einschließlich der folgenden Schritten:

  • 2048-Bit-RSA-Schlüsselpaar mit öffentlichem und privatem Schlüssel erstellen
  • Anfrage zur Signierung des Zertifikats (Certificate Signing Request, CSR) generieren, die Ihren öffentlichen Schlüssel einbettet
  • Weitergabe Ihrer CSR an Ihre Zertifizierungsstelle, um eine abschließende Zertifikat oder eine Zertifikatskette.
  • Installieren Sie Ihr endgültiges Zertifikat an einem Ort, der nicht über das Internet zugänglich ist, z. B. /etc/ssl (Linux und Unix) oder wo immer IIS dies erfordert (Windows).

Schlüssel und Anfragen zur Zertifikatssignierung generieren

In diesem Abschnitt wird das openssl-Befehlszeilentool verwendet, das in den meisten Linux-, BSD- und Mac OS X-Systeme, um private und öffentliche Schlüssel sowie eine CSR zu generieren.

Paar aus öffentlichem/privatem Schlüssel generieren

Generieren Sie zuerst ein 2.048-Bit-RSA-Schlüsselpaar. Ein kürzerer Schlüssel kann kaputtgehen, Brute-Force-Rate-Angriffe und längere Schlüssel nutzen unnötige Ressourcen.

Verwenden Sie den folgenden Befehl, um ein RSA-Schlüsselpaar zu generieren:

openssl genrsa -out www.example.com.key 2048

Dies ergibt die folgende Ausgabe:

Generating RSA private key, 2048 bit long modulus
.+++
.......................................................................................+++
e is 65537 (0x10001)

Anfrage zur Zertifikatssignierung generieren

In diesem Schritt betten Sie Ihren öffentlichen Schlüssel und Informationen zu Ihrer Organisation ein und Ihre Website in eine Anfrage für die Signierung des Zertifikats (Certificate Signing Request, CSR) umwandeln. Das openssl werden Sie nach den erforderlichen Metadaten gefragt.

Führen Sie folgenden Befehl aus:

openssl req -new -sha256 -key www.example.com.key -out www.example.com.csr

Gibt Folgendes aus:

You are about to be asked to enter information that will be incorporated
into your certificate request

What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CA
State or Province Name (full name) [Some-State]:California
Locality Name (for example, city) []:Mountain View
Organization Name (for example, company) [Internet Widgits Pty Ltd]:Example, Inc.
Organizational Unit Name (for example, section) []:Webmaster Help Center Example
Team
Common Name (e.g. server FQDN or YOUR name) []:www.example.com
Email Address []:webmaster@example.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Führen Sie den folgenden Befehl aus, um die Gültigkeit der CSR zu überprüfen:

openssl req -text -in www.example.com.csr -noout

Die Antwort sollte in etwa so aussehen:

Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=CA, ST=California, L=Mountain View, O=Google, Inc.,
OU=Webmaster Help Center Example Team,
CN=www.example.com/emailAddress=webmaster@example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:ad:fc:58:e0:da:f2:0b:73:51:93:29:a5:d3:9e:
                    f8:f1:14:13:64:cc:e0:bc:be:26:5d:04:e1:58:dc:
                    ...
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: sha256WithRSAEncryption
         5f:05:f3:71:d5:f7:b7:b6:dc:17:cc:88:03:b8:87:29:f6:87:
         2f:7f:00:49:08:0a:20:41:0b:70:03:04:7d:94:af:69:3d:f4:
         ...

CSR an eine Zertifizierungsstelle senden

Bei verschiedenen Zertifizierungsstellen (Certificate Authorities, CAs) müssen Sie Ihre CSRs bei ihnen einreichen auf unterschiedliche Weise nutzen. Sie können z. B. ein Formular auf der Website verwenden oder dem Kundendienstmitarbeiter per E-Mail mitteilen. Einige Zertifizierungsstellen bzw. deren Reseller automatisieren möglicherweise sogar einige oder alle des Prozesses, in einigen Fällen auch die Erstellung von Schlüsselpaaren und CSR.

Senden Sie den CSR an Ihre Zertifizierungsstelle und folgen Sie deren Anweisungen, um Ihre endgültige Zertifikat oder Zertifikatskette.

Die verschiedenen Zertifizierungsstellen berechnen unterschiedliche Beträge für den Gutscheindienst für Ihren öffentlichen Schlüssel.

Es gibt auch Möglichkeiten, Ihren Schlüssel mehreren DNS-Namen zuzuordnen, z. B. unterschiedliche Namen (z.B. alle von beispiel.de, www.beispiel.de, beispiel.net, und www.beispiel.net) oder „Platzhalter“ Namen wie *.example.com.

Kopieren Sie die Zertifikate auf alle Frontend-Server in einem nicht über das Web zugänglichen wie z. B. /etc/ssl (Linux und Unix) oder überall dort, wo IIS (Windows) .

HTTPS auf Ihren Servern aktivieren

Die Aktivierung von HTTPS auf Ihren Servern ist ein wichtiger Schritt zur Gewährleistung der Sicherheit für Ihrer Webseiten.

  • Server mit dem Serverkonfigurations-Tool von Mozilla für HTTPS einrichten Support.
  • Testen Sie Ihre Website regelmäßig mit dem SSL-Server testen und sicherstellen erhalten Sie mindestens ein A oder A+.

An diesem Punkt müssen Sie eine wichtige operative Entscheidung treffen. Wählen Sie eine der Folgendes:

  • Jedem Hostnamen, den Ihr Webserver Inhalte bereitstellt, sollte eine eigene IP-Adresse zugewiesen werden. aus.
  • Namenbasiertes virtuelles Hosting verwenden

Wenn Sie für jeden Hostnamen unterschiedliche IP-Adressen verwendet haben, können Sie sowohl HTTP als auch HTTPS für alle Clients. Die meisten Website-Betreiber verwenden jedoch virtuelles Hosting, um IP-Adressen zu sparen, und weil es in allgemein.

Wenn auf Ihren Servern noch kein HTTPS-Dienst verfügbar ist, aktivieren Sie ihn jetzt. (ohne HTTP-zu HTTPS-Weiterleitung weiterzuleiten. Siehe HTTP zu HTTPS weiterleiten . Konfigurieren Sie Ihren Webserver für die Verwendung der von Ihnen die Sie gekauft und installiert haben. Unter Umständen finden Sie die Konfiguration von Mozilla Generator nützlich sind.

Wenn Sie viele Hostnamen oder Sub-Domains haben, müssen alle die richtigen Zertifikat.

Überprüfen Sie jetzt und während der gesamten Lebensdauer Ihrer Website regelmäßig die HTTPS- mit Qualys SSL-Servertest aus. Ihre Website sollte die Bewertung A oder A+ erhalten. Alles, was eine niedrigere Note verursacht, wie Fehler beheben und Vorsicht walten lassen, da neue Angriffe auf Algorithmen und Protokolle ständig weiterentwickelt.

Websiteinterne URLs relativ darstellen

Da ihr eure Website jetzt sowohl über HTTP als auch über HTTPS bereitstellt, müssen die Dinge wie folgt funktionieren: so reibungslos wie möglich zu gestalten. Ein wichtiger Faktor ist die Verwendung relative URLs für Website-interne Links.

Stellen Sie sicher, dass websiteinterne und externe URLs nicht von einem bestimmten Protokoll abhängen. Verwenden Sie relative Pfade oder lassen Sie das Protokoll weg, wie in //example.com/something.js.

Seite mit HTTP-Ressourcen über HTTPS bereitstellen Probleme verursachen können. Wenn ein Browser auf eine einer ansonsten sicheren Seite, die unsichere Ressourcen nutzt, werden Nutzer gewarnt, nicht ganz sicher ist und manche Browser sich weigern, die HTTP- Ressourcen, wodurch die Seite unterbrochen wird. Sie können jedoch HTTPS Ressourcen auf einer HTTP-Seite. Weitere Informationen zur Behebung dieser Probleme finden Sie unter Probleme mit gemischten Inhalten beheben:

Wenn Sie HTTP-basierten Links zu anderen Seiten Ihrer Website folgen, können Sie von HTTPS zu HTTP. Um dieses Problem zu beheben, müssen Sie Ihre Website-URLs so relativ ähnlich wie möglich sein, indem sie entweder protokollrelativ (ohne Angabe eines Protokoll, beginnend mit //example.com) oder host-relative (beginnend mit Pfad, z. B. /jquery.js).

Do
<h1>Welcome To Example.com</h1>
<script src="/jquery.js"></script>
<link rel="stylesheet" href="/assets/style.css"/>
<img src="/images/logo.png"/>;
<p>A <a href="/2014/12/24">new post on cats!</a></p>
<ph type="x-smartling-placeholder"></ph> Verwenden Sie relative websiteinterne URLs.
Do
<h1>Welcome To Example.com</h1>
<script src="//example.com/jquery.js"></script>
<link rel="stylesheet" href="//assets.example.com/style.css"/>
<img src="//img.example.com/logo.png"/>;
<p>A <a href="//example.com/2014/12/24/">new post on cats!</a></p>
<ph type="x-smartling-placeholder"></ph> Alternativ können Sie protokollrelative URLs verwenden.
Do
<h1>Welcome To Example.com</h1>
<script src="/jquery.js"></script>
<link rel="stylesheet" href="/assets/style.css"/>
<img src="/images/logo.png"/>;
<p>A <a href="/2014/12/24">new post on cats!</a></p>
<p>Check out this <a href="https://foo.com/"><b>other cool site.</b></a></p>
<ph type="x-smartling-placeholder"></ph> Verwenden Sie nach Möglichkeit HTTPS-URLs für Links zu anderen Websites.

Aktualisieren Sie Ihre Links mit einem Skript, um Fehler zu vermeiden. Wenn Ihr sich der Inhalt der Website in einer Datenbank befindet, testen Sie Ihr Skript auf einer Entwicklungskopie der Datenbank. Falls der Inhalt Ihrer Website nur aus einfachen Dateien besteht, testen Sie Ihr Skript auf einer Entwicklungskopie der Dateien. Übertragen Sie die Änderungen erst nach dem Die Änderungen bestehen wie gewohnt die QA. Sie können das Skript von Bram van Damme verwenden. oder Ähnliches, um gemischten Content auf Ihrer Website zu erkennen.

Wenn Sie Links zu anderen Websites erstellen, anstatt Ressourcen von ihnen zu verwenden, das Protokoll nicht ändern. Sie haben keine Kontrolle über den Betrieb dieser Websites.

Um die Migration großer Websites reibungsloser zu gestalten, empfehlen wir protokollrelative URLs. Wenn Sie unsicher sind, ob Sie HTTPS vollständig bereitstellen können, Wenn Sie HTTPS für alle untergeordneten Ressourcen verwenden, kann das Backfire auslösen. Wahrscheinlich dauert es eine Weile, wann HTTPS neu und seltsam für Sie ist und die HTTP-Website trotzdem funktionieren muss. wie nie zuvor. Im Laufe der Zeit schließen Sie die Migration ab und verwenden HTTPS. (siehe die nächsten beiden Abschnitte).

Falls Ihre Website von Skripts, Bildern oder anderen Ressourcen abhängig ist, die von einem Drittanbieter bereitgestellt werden, wie CDN oder jquery.com, haben Sie zwei Möglichkeiten:

  • Verwenden Sie für diese Ressourcen protokollrelative URLs. Wenn der Drittanbieter sollte HTTPS verwendet werden. Die meisten tun es bereits, einschließlich jquery.com.
  • Die Ressourcen über einen von Ihnen kontrollierten Server bereitstellen, der sowohl HTTP- und HTTPS. Das ist sowieso oft eine gute Idee, denn dann ist es besser, Kontrolle über das Erscheinungsbild, die Leistung und die Sicherheit Ihrer Website haben und keine Drittanbieter an die Sicherheit Ihrer Website halten.

HTTP zu HTTPS weiterleiten

Um Suchmaschinen anzuweisen, für den Zugriff auf Ihre Website HTTPS zu verwenden, geben Sie einen kanonischen Link im Header jeder Seite mit <link rel="canonical" href="https://…"/>-Tags ein.

Strict Transport Security und sichere Cookies aktivieren

Jetzt sind Sie bereit, die Verwendung von HTTPS:

  • Verwenden Sie HTTP Strict Transport Security (HSTS), um die Kosten für 301-Weiterleitungen Weiterleitung.
  • Setzen Sie bei Cookies immer das Flag „Secure“.

Verwenden Sie zuerst Strict Transport Security. um Clients mitzuteilen, dass sie immer über HTTPS eine Verbindung zu Ihrem Server herstellen sollen, wenn Sie einer http://-Referenz folgen. Das bekämpft Angriffe wie SSL-Entfernung und vermeidet die Umlaufkosten für 301 redirect, die wir in HTTP zu HTTPS weiterleiten

Wenn du HSTS aktivieren möchtest, lege den Strict-Transport-Security-Header fest. HSTS-Seite von OWASP enthält Links zur Anleitung für verschiedene Arten von Serversoftware.

Die meisten Webserver bieten eine ähnliche Möglichkeit, benutzerdefinierte Header hinzuzufügen.

Wichtig ist auch, dass die Clients niemals Cookies senden (z. B. für Authentifizierung oder Website-Einstellungen) über HTTP übertragen. Wenn die Website eines Nutzers das Authentifizierungscookie im Nur-Text-Format offengelegt wurden, für die gesamte Sitzung gelöscht, auch wenn Sie richtig!

Um dies zu vermeiden, ändern Sie Ihre Webanwendung so, dass für Cookies immer das Flag „Secure“ gesetzt ist. festgelegt. Auf dieser OWASP-Seite wird erläutert, wie Sie das Flag „Secure“ festlegen in verschiedenen App-Frameworks an. Jedes Appl-Framework hat eine Möglichkeit, das Flag festzulegen.

Die meisten Webserver bieten eine einfache Weiterleitungsfunktion. 301 (Moved Permanently) verwenden um Suchmaschinen und Browsern darauf hinzuweisen, dass die HTTPS-Version kanonisch ist, und die Nutzer von HTTP zur HTTPS-Version Ihrer Website weiterleiten.

Suchranking

Google verwendet HTTPS als positive Suchqualität angezeigt. Google veröffentlicht auch einen Leitfaden zum Übertragen, Verschieben oder Migrieren Website unter Berücksichtigung der in den Suchergebnissen. Außerdem veröffentlicht Bing Richtlinien für Webmastern.

Leistung

Wenn die Inhalts- und Anwendungsschicht gut abgestimmt sind (siehe Steve Souders Bücher), um Tipps zu erhalten, Leistungsbedenken im Vergleich zu den Gesamtkosten des . Sie können diese Kosten auch reduzieren und amortisieren. Hinweise zu TLS erhalten Sie unter High Performance Browser Networking Ilya Grigorik und Ivan Ristics OpenSSL Cookbook und Aufzählungszeichen SSL und TLS

In einigen Fällen kann die Leistung mit TLS verbessert werden. Dies ist vor allem auf HTTP/2 möglich. Weitere Informationen finden Sie in der Chris Palmer's- über die HTTPS- und HTTP/2-Leistung Chrome Dev Summit 2014.

Referrer-Header

Wenn Nutzer Links von Ihrer HTTPS-Website zu anderen HTTP-Websites folgen, werden User-Agents nicht den Verweis-Header. Sollte dies ein Problem sein, gibt es mehrere Möglichkeiten, Lösung finden:

  • Die anderen Websites sollten zu HTTPS migriert werden. Wenn die teilnehmenden Websites im Abschnitt HTTPS auf Ihren Servern aktivieren von diesem Leitfaden können Sie auf Ihrer Website Links zu ihrer Website von http:// in https:// oder protokollrelative Links.
  • Um eine Vielzahl von Problemen mit Verweis-Headern zu umgehen, verwenden Sie die neue Standardrichtlinien für Verweis-URLs

Werbeeinnahmen

Betreiber von Websites, die ihre Website mit Anzeigen monetarisieren, möchten sicherstellen, Durch die Migration zu HTTPS werden die Anzeigenimpressionen nicht reduziert. Aufgrund der gemischten Bedenken hinsichtlich der Inhaltssicherheit haben, funktioniert ein HTTP-<iframe> nicht auf einer HTTPS-Seite. Solange Werbetreibende nicht über HTTPS veröffentlichen, können Websitebetreiber erst zu HTTPS migrieren. ohne Werbeumsatz zu verlieren. aber bis Websitebetreiber zu HTTPS migrieren, Werbetreibende haben wenig Motivation, HTTPS zu veröffentlichen.

Sie können damit beginnen, dieses Phänomen zu beseitigen, indem Sie Werbetreibende einsetzen, Anzeigendienste über HTTPS anbieten und Werbetreibende, die kein HTTPS verwenden, um es zumindest zur Option zu machen. Möglicherweise müssen Sie den Abschluss Nehmen Sie Website-URLs relativ auf, bis genügend Werbetreibende vorhanden sind. nicht ordnungsgemäß funktionieren.