Skip to main content

TLS konfigurieren

Du kannst Transport Layer Security (TLS) auf Ihre GitHub Enterprise Server-Instance konfigurieren, damit du ein von einer vertrauenswürdigen Zertifizierungsstelle signiertes Zertifikat verwenden kannst.

Informationen zu Transport Layer Security

TLS, das SSL ersetzt hat, wird beim erstmaligen Start von GitHub Enterprise Server mit einem selbstsignierten Zertifikat aktiviert und konfiguriert. Da Webbrowser und Git-Clients selbstsignierten Zertifikaten nicht vertrauen, melden diese Clients Zertifikatswarnungen, bis du TLS deaktivierst oder ein von einer vertrauenswürdigen Zertifizierungsstelle wie Let's Encrypt signiertes Zertifikat hochlädst.

Die GitHub Enterprise Server-Appliance sendet HTTP Strict Transport Security-Header, wenn SSL aktiviert ist. Wenn TLS deaktiviert wird, verlieren die Benutzer den Zugriff auf die Appliance, da ihre Browser eine Protokollherabstufung auf HTTP nicht zulassen. Weitere Informationen findest du in Wikipedia unter HTTP Strict Transport Security (HSTS).

Warnung

Wenn HTTPS-Verbindungen in einem Lastenausgleich beendet werden, müssen die vom Lastenausgleich an GitHub Enterprise Server gesendeten Anforderungen ebenfalls HTTPS verwenden. Das Downgraden der Verbindung auf HTTP wird nicht unterstützt.

Damit Benutzer FIDO U2F für die Zwei-Faktor-Authentifizierung verwenden oder GitHub Pages-Websites mit GitHub Actions bereitstellen können, musst du TLS für deine Instanz aktivieren. Weitere Informationen finden Sie unter Zwei-Faktor-Authentifizierung konfigurieren.

Voraussetzungen

Um TLS in der Produktion zu verwenden, musst du über ein Zertifikat verfügen, das ein unverschlüsseltes PEM-Format aufweist und von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde. Um ein von einer internen Zertifizierungsstelle signiertes Zertifikat zu verwenden, musst du das Stammzertifikat und alle Zwischenzertifikate installieren. Weitere Informationen finden Sie unter Problembehandlung bei TLS-Fehlern.

Zudem erfordert das Zertifikat alternative Antragstellernamen (Subject Alternative Names), die für die unter Subdomain-Isolation aktivieren aufgeführten Unterdomänen konfiguriert sind, und das Zertifikat muss die vollständige Zertifikatskette einschließen, wenn es von einer Zwischenzertifizierungsstelle signiert wurde. Weitere Informationen finden Sie in Wikipedia unter Alternativer Antragstellername.

Du kannst mit dem Befehl ghe-ssl-generate-csr eine Zertifikatsignaturanforderung für deine Instanz erzeugen. Weitere Informationen finden Sie unter Befehlszeilenwerkzeuge.

Der Schlüssel muss ein RSA-Schlüssel sein und darf keine Passphrase aufweisen. Weitere Informationen finden Sie unter Problembehandlung bei TLS-Fehlern.

Benutzerdefiniertes TLS-Zertifikat hochladen

Warnung

Das Konfigurieren der TLS führt zu einer geringfügigen Downtime von Ihre GitHub Enterprise Server-Instance.

  1. Klicke in einem Verwaltungskonto für GitHub Enterprise Server in der rechten oberen Ecke einer beliebigen Seite auf .

  2. Wenn du dich nicht bereits auf der Seite „Websiteadministrator“ befindest, klicke in der oberen linken Ecke auf Websiteadministrator.

  3. Klicke in der Randleiste „ Site admin“ auf Verwaltungskonsole.

  4. Klicke auf der Randleiste „Settings“ auf Privacy, und deaktiviere die Option Private mode.

  5. Wähle Nur TLS (empfohlen) aus.

  6. Wähle unter „TLS Protocol support“ (TLS-Protokollunterstützung) die Protokolle aus, die zugelassen werden sollen.

  7. Klicke unter „Zertifikat“ auf Datei auswählen, und wähle dann ein TLS-Zertifikat oder eine Zertifikatskette (im PEM-Format) für die Installation aus. Diese Datei hat in der Regel die Erweiterung .pem, .crt oder .cer.

  8. Klicke unter „Unverschlüsselter Schlüssel“ auf Datei auswählen, und wähle dann den zu installierenden RSA-Schlüssel (im PEM-Format) aus. Diese Datei hat in der Regel die Erweiterung .key.

  9. Klicke auf der Randleiste unter „Einstellungen“ auf Einstellungen speichern.

    Hinweis

    Durch das Speichern von Einstellungen in der Verwaltungskonsole werden Systemdienste neu gestartet, was zu einer für den Benutzer feststellbaren Downtime führen könnte.

  10. Warten Sie auf den Abschluss der Konfigurationsausführung.

Informationen zur Let's Encrypt-Unterstützung

Let's Encrypt ist eine öffentliche Zertifizierungsstelle, die kostenlose, automatisierte TLS-Zertifikate ausstellt, denen Browser vertrauen. Diese Zertifikate verwenden das ACME-Protokoll. Du kannst Let's Encrypt-Zertifikate auf deiner Appliance automatisch abrufen und verlängern, ohne dass eine manuelle Wartung erforderlich ist.

Zum Verwenden der „Let's Encrypt"-Automatisierung muss Deine Appliance mit einem Hostnamen konfiguriert sein, auf den über HTTP öffentlich zugegriffen werden kann. Darüber hinaus muss festgelegt werden, dass die Appliance ausgehende HTTPS-Verbindungen herstellen kann.

Wenn du die Automatisierung der TLS-Zertifikatsverwaltung mit Let's Encrypt aktivierst, kontaktiert Ihre GitHub Enterprise Server-Instance die Let's Encrypt-Server, um ein Zertifikat abzurufen. Zum Verlängern eines Zertifikats müssen die Let's Encrypt-Server die Steuerung des konfigurierten Domain-Namens mit eingehenden HTTP-Anforderungen validieren.

Darüber hinaus kannst du das Befehlszeilenprogramm ghe-ssl-acme auf Ihre GitHub Enterprise Server-Instance verwenden, um ein Let's Encrypt-Zertifikat automatisch zu generieren. Weitere Informationen finden Sie unter Befehlszeilenwerkzeuge.

TLS mit Let's Encrypt konfigurieren

Zum Verwenden der „Let's Encrypt"-Automatisierung muss Deine Appliance mit einem Hostnamen konfiguriert sein, auf den über HTTP öffentlich zugegriffen werden kann. Darüber hinaus muss festgelegt werden, dass die Appliance ausgehende HTTPS-Verbindungen herstellen kann.

Warnung

Das Konfigurieren der TLS führt zu einer geringfügigen Downtime von Ihre GitHub Enterprise Server-Instance.

  1. Klicke in einem Verwaltungskonto für GitHub Enterprise Server in der rechten oberen Ecke einer beliebigen Seite auf .

  2. Wenn du dich nicht bereits auf der Seite „Websiteadministrator“ befindest, klicke in der oberen linken Ecke auf Websiteadministrator.

  3. Klicke in der Randleiste „ Site admin“ auf Verwaltungskonsole.

  4. Klicke auf der Randleiste „Settings“ auf Privacy, und deaktiviere die Option Private mode.

  5. Wähle Nur TLS (empfohlen) aus.

  6. Wähle Automatisierung der TLS-Zertifikatsverwaltung mit Let's Encrypt aktivieren aus.

  7. Klicke auf der Randleiste unter „Einstellungen“ auf Einstellungen speichern.

    Hinweis

    Durch das Speichern von Einstellungen in der Verwaltungskonsole werden Systemdienste neu gestartet, was zu einer für den Benutzer feststellbaren Downtime führen könnte.

  8. Warten Sie auf den Abschluss der Konfigurationsausführung.

  9. Klicke auf der Randleiste „Settings“ auf Privacy, und deaktiviere die Option Private mode.

  10. Klicke auf TLS-Zertifikat anfordern.

  11. Warte, bis sich der Status von „STARTED“ in „DONE“ ändert.

    Screenshot des Dialogfelds „TLS-Zertifikat anfordern“. Oben im Dialogfeld wird „STATUS: FERTIG“ mit einem orangefarbenen Rahmen hervorgehoben.

  12. Klicke auf Konfiguration speichern.

Behandlung von TLS-Problemen mit Let's Encrypt

Du kannst Probleme beheben, die sich auf dein TLS-Zertifikat von Let's Encrypt auswirken.

Fehler: „Sicherheitsfehler hat verhindert, dass die Ressource geladen wird“

In einigen Fällen melden Endbenutzer möglicherweise, dass Seiten für Dienste auf Ihre GitHub Enterprise Server-Instance mit dem folgenden Fehler in den Entwicklertools eines Browsers reagieren.

Security error prevented the resource from being loaded

Um diese Fehler zu beheben, musst du die alternativen Antragstellernamen (Subject Alternative Names, SANs) deines Let's Encrypt-Zertifikats aktualisieren, indem du das Zertifikat erneut erstellst. Die Ersetzung des Zertifikats einer Instanz erfordert benutzerseitige Ausfallzeiten.

  1. Informiere die Benutzer über die anstehenden Ausfallzeiten und ziehe in Betracht, den Wartungsmodus zu aktivieren. Weitere Informationen finden Sie in folgenden Artikeln.

    •      [AUTOTITLE](/admin/managing-accounts-and-repositories/communicating-information-to-users-in-your-enterprise/customizing-user-messages-for-your-enterprise#creating-a-mandatory-message)
      
    •      [AUTOTITLE](/admin/administering-your-instance/configuring-maintenance-mode/enabling-and-scheduling-maintenance-mode) 1. Melde dich über SSH bei Ihre GitHub Enterprise Server-Instance an. Wenn deine Instanz mehrere Knoten umfasst, wenn z. B. Hochverfügbarkeit oder Georeplikation konfiguriert ist, wird SSH im primären Knoten konfiguriert. Wenn du einen Cluster verwendest, kannst du SSH in einen beliebigen Knoten einfügen. Ersetzen Sie HOSTNAME durch den Hostnamen Ihrer Instanz bzw. durch den Hostnamen oder die IP-Adresse eines Knotens. Weitere Informationen finden Sie unter [AUTOTITLE](/admin/configuration/configuring-your-enterprise/accessing-the-administrative-shell-ssh).
      
    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Führe den folgenden Befehl aus, um Let's Encrypt zu deaktivieren:

    Shell
    ghe-ssl-acme -d
    
  3. Führe den folgenden Befehl aus, um die vorhandenen Einstellungen für Let's Encrypt zu löschen.

    Shell
    ghe-ssl-acme -x
    
  4. Führe den folgenden Befehl aus, um ein neues Zertifikat von Let's Encrypt anzufordern und zu installieren.

    Shell
    ghe-ssl-acme -e
    
  5. Führe den folgenden Befehl aus, um die Konfiguration anzuwenden.

    Hinweis

    Während einer Konfigurationsausführung können die Dienste auf Ihre GitHub Enterprise Server-Instance neu gestartet werden, was zu kurzen Ausfallzeiten für Benutzer führen kann.

    Shell
    ghe-config-apply
    
  6. Warten Sie auf den Abschluss der Konfigurationsausführung.

  7. Wenn du eine Benutzernachricht oder den Wartungsmodus konfiguriert hast, entferne die Nachricht und deaktiviere den Wartungsmodus.

Konfigurieren von Verschlüsselungssammlungen und kryptografischen Algorithmen

Sie können die Cipher-Suiten und kryptografischen Algorithmen konfigurieren, die GitHub Enterprise Server für TLS- und SSH-Verbindungen verwendet. Weitere Informationen finden Sie unter Konfigurieren von TLS- und SSH-Verschlüsselungen.