Skip to main content

GitHub Pages-Website mit HTTPS schützen

HTTPS fügt eine Verschlüsselungsebene hinzu, die das Ausspionieren oder Manipulieren des Datenverkehrs zu Deiner Website durch Fremde verhindert. Du kannst HTTPS für deine GitHub Pages-Website erzwingen und so alle HTTP-Anforderungen transparent an HTTPS weiterleiten.

Wer kann dieses Feature verwenden?

GitHub Pages ist in öffentlichen Repositorys mit GitHub Free und GitHub Free für Organisationen sowie in öffentlichen und privaten Repositorys mit GitHub Pro, GitHub Team, GitHub Enterprise Cloud und GitHub Enterprise Server verfügbar. Weitere Informationen findest du unter GitHub-Pläne.

Personen mit Administratorberechtigungen für ein Repository können HTTPS für eine GitHub Pages-Website erzwingen.

Informationen zu HTTPS und GitHub Pages

Alle GitHub Pages-Websites, auch Websites, die korrekt mit einer benutzerdefinierten Domäne konfiguriert sind, unterstützen HTTPS und die Erzwingung von HTTPS. Weitere Informationen zu benutzerdefinierten Domänen findest du unter Informationen zu benutzerdefinierten Domains und GitHub Pages und Problembehandlung bei benutzerdefinierten Domänen und GitHub-Seiten.

GitHub Pages-Websites sollten nicht für Transaktionen sensibler Daten verwendet werden, also beispielsweise nicht für das Senden von Passwörtern oder Kreditkartennummern.

Warnung: GitHub Pages-Websites sind im Internet öffentlich zugänglich, auch wenn das Repository für die Website privat ist. Wenn das Repository deiner Website vertrauliche Daten enthält, solltest Du diese vor der Veröffentlichung entfernen. Weitere Informationen findest du unter Informationen zu Repositorys.

Hinweis: RFC3280 legt fest, dass die maximale Länge des allgemeinen Namens 64 Zeichen betragen sollte. Deshalb muss der gesamte Domänenname deiner GitHub Pages-Website weniger als 64 Zeichen lang sein, damit ein Zertifikat erfolgreich erstellt werden kann.

HTTPS für Deine GitHub Pages-Website erzwingen

  1. Navigiere in GitHub zum Repository Deiner Website.

  2. Wähle unter dem Namen deines Repositorys die Option Einstellungen aus. Wenn die Registerkarte „Einstellungen“ nicht angezeigt wird, wähle im Dropdownmenü die Option Einstellungen aus.

    Screenshot eines Repositoryheaders mit den Registerkarten. Die Registerkarte „Einstellungen“ ist dunkelorange umrandet.

  3. Klicke im Abschnitt „Code und Automatisierung“ der Seitenleiste auf Seiten.

  4. Wähle unter "GitHub Pages" die Option HTTPS erzwingen.

Problembehandlung bei der Zertifikatbereitstellung (Fehler „Zertifikat noch nicht erstellt“)

Wenn Du Deine benutzerdefinierte Domäne in den Seiteneinstellungen einstellst oder änderst, beginnt eine automatische DNS-Überprüfung. Mit dieser Überprüfung wird festgestellt, ob Deine DNS-Einstellungen so konfiguriert sind, dass GitHub automatisch ein Zertifikat abrufen kann. Wenn die Überprüfung erfolgreich ist, GitHub wird ein Auftrag zur Anforderung eines TLS-Zertifikats bei Let's Encrypt in die Warteschlange gestellt. Wenn Du ein gültiges Zertifikat erhältst, wird es von GitHub automatisch auf die Server hochgeladen, die die TLS-Abschluss für Seiten durchführen. Wenn dieser Vorgang erfolgreich abgeschlossen ist, wird neben Deinem benutzerdefinierten Domänennamen ein Häkchen angezeigt.

Hinweis: Deine GitHub Pages-Website muss öffentlich verfügbar sein, damit ein Let's Encrypt-Zertifikat ausgestellt wird. Sobald das Zertifikat ausgestellt wurde, kannst du die Website wieder als privat festlegen.

Dieser Vorgang kann eine Weile dauern. Wenn der Vorgang einige Minuten nach dem Klicken auf Speichern noch nicht abgeschlossen ist, klicke auf Entfernen neben Deinem benutzerdefinierten Domänennamen. Gib den Domänennamen erneut ein, und klicke erneut auf Speichern. Dadurch wird der Bereitstellungsprozess abgebrochen und neu gestartet.

Probleme bei gemischten Inhalten beheben

Wenn Du HTTPS für Deine GitHub Pages-Website aktivierst, der HTML-Code Deiner Website aber immer noch Bilder, CSS oder JavaScript über HTTP referenziert, dann stellt Deine Website gemischte Inhalte bereit. In diesem Fall ist Deine Website möglicherweise weniger sicher und das Laden dieser Objekte bereitet eventuell Probleme.

Sollen die gemischten Inhalte Deiner Website entfernt werden, stelle zunächst alle Objekte über HTTPS bereit. Ersetze hierzu http:// in der HTML Deiner Website durch https://.

Objekte befinden sich meist in den folgenden Speicherorten:

  • Wenn deine Website Jekyll verwendet, werden deine HTML-Dateien wahrscheinlich im Ordner _layouts gefunden.
  • CSS wird in der Regel im Abschnitt <head> Deiner HTML-Datei gefunden.
  • JavaScript wird in der Regel im Abschnitt <head> oder direkt vor dem schließenden </body> Tag gefunden.
  • Bilder werden häufig im <body> Abschnitt gefunden.

Tipp: Wenn Du die Ressourcen nicht in den Quelldateien Deiner Website findest, suche mit dem Text-Editor oder mit GitHub in den Quelldateien nach http.

Beispiele für referenzierte Objekte in einer HTML-Datei

RessourcentypHTTPHTTPS
CSS<link rel="stylesheet" href="http://example.com/css/main.css"><link rel="stylesheet" href="https://example.com/css/main.css">
JavaScript<script type="text/javascript" src="http://example.com/js/main.js"></script><script type="text/javascript" src="https://example.com/js/main.js"></script>
Abbildung<a href="http://www.somesite.com"><img src="http://www.example.com/logo.jpg" alt="Logo"></a><a href="https://www.somesite.com"><img src="https://www.example.com/logo.jpg" alt="Logo"></a>

Überprüfen der DNS-Konfiguration

In einigen Fällen kann ein HTTPS-Zertifikat aufgrund der DNS-Konfiguration Ihrer benutzerdefinierten Domäne nicht erstellt werden. Dies kann durch zusätzliche DNS-Einträge oder durch Einträge, die nicht auf die IP-Adressen für GitHub Pages verweisen, verursacht werden.

Um sicherzustellen, dass ein HTTPS-Zertifikat korrekt generiert wird, empfehlen wir die folgenden Konfigurationen. Alle zusätzlichen A-, AAAA-, ALIAS-, ANAME-Datensätze mit dem @-Host oder CNAME-Datensätze, die auf Ihre www-Unterdomäne oder eine andere benutzerdefinierte Unterdomäne verweisen, die Sie mit GitHub Pages verwenden möchten, können die Generierung des HTTPS-Zertifikats verhindern.

SzenarioDNS-EintragstypName des DNS-EintragsWert(e) des DNS-Eintrags
Apex-Domäne
(example.com)
A@185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
Apex-Domäne
(example.com)
AAAA@2606:50c0:8000::153
2606:50c0:8001::153
2606:50c0:8002::153
2606:50c0:8003::153
Apex-Domäne
(example.com)
ALIAS oder ANAME@USERNAME.github.io oder
ORGANIZATION.github.io
Unterdomäne
(www.example.com,
blog.example.com)
CNAMESUBDOMAIN.example.com.USERNAME.github.io oder
ORGANIZATION.github.io