À propos du protocole TLS (Transport Layer Security)
TLS, qui a remplacé SSL, est activé et configuré avec un certificat auto-signé au premier démarrage de GitHub Enterprise Server. Sachant que les certificats auto-signés ne sont pas approuvés par les navigateurs web et les clients Git, ces clients affichent des avertissements de certificat tant que vous ne désactivez pas TLS ou que vous ne chargez pas un certificat signé par une autorité approuvée, comme Let’s Encrypt.
L’appliance GitHub Enterprise Server envoie des en-têtes HTTP Strict Transport Security quand SSL est activé. La désactivation du protocole TLS entraîne la perte d’accès des utilisateurs à l’appliance, car leurs navigateurs n’autorisent pas un déclassement du protocole à HTTP. Pour plus d’informations, consultez « HTTP Strict Transport Security (HSTS) » sur Wikipédia.
Avertissement : Quand des connexions HTTPS se terminent sur un équilibreur de charge, les demandes de l’équilibreur de charge vers GitHub Enterprise Server doivent également utiliser HTTPS. Le passage de la connexion HTTPS à HTTP n’est pas pris en charge.
Pour permettre aux utilisateurs d’utiliser FIDO U2F pour l’authentification à 2 facteurs, vous devez activer TLS pour votre instance. Pour plus d’informations, consultez « Configuration de l’authentification à 2 facteurs ».
Prérequis
Pour utiliser TLS en production, vous devez disposer d’un certificat dans un format PEM non chiffré signé par une autorité de certification approuvée. Pour utiliser un certificat signé par une autorité de certification interne, vous devez installer le certificat racine et tous les certificats intermédiaires. Pour plus d’informations, consultez « Résolution des erreurs TLS ».
Votre certificat aura besoin que d’autres noms d’objet soient configurés pour les sous-domaines listés dans « Activation de l’isolation de sous-domaine » et devra inclure la chaîne de certificats complète s’il a été signé par une autorité de certification intermédiaire. Pour plus d’informations, consultez « Subject Alternative Name » sur Wikipédia.
Vous pouvez générer une demande de signature de certificat (CSR) pour votre instance à l’aide de la commande ghe-ssl-generate-csr
. Pour plus d’informations, consultez « Utilitaires de ligne de commande ».
Votre clé doit être une clé RSA et ne doit pas contenir de phrase secrète. Pour plus d’informations, consultez « Résolution des erreurs TLS ».
Chargement d’un certificat TLS personnalisé
Avertissement : la configuration de TLS entraîne un petit temps d’arrêt pour votre instance GitHub Enterprise Server.
-
À partir d’un compte d’administration sur GitHub Enterprise Server, cliquez sur en haut à droite de n’importe quelle page.
-
Si vous ne figurez pas déjà sur la page « Administrateur du site », dans le coin supérieur gauche, cliquez sur Administrateur du site.
-
Dans la barre latérale « Administrateur de site », cliquez sur Management Console .
-
Dans la barre latérale « Paramètres », cliquez sur Confidentialité et décochez Mode Confidentialité.
-
Sélectionnez TLS uniquement (recommandé) .
-
Sous « Prise en charge des protocoles TLS », sélectionnez les protocoles que vous souhaitez autoriser.
-
Sous « Certificat », cliquez sur Choisir un fichier et choisissez un certificat TLS ou une chaîne de certificats (au format PEM) à installer. Ce fichier possède généralement une extension .pem, .crt ou .cer.
-
Sous « Clé non chiffrée », cliquez sur Choisir un fichier et choisissez une clé RSA (au format PEM) à installer. Ce fichier possède généralement une extension .key.
-
Sous la barre latérale « Paramètres », cliquez sur Enregistrer les paramètres.
Remarque : l’enregistrement des paramètres dans la Management Console redémarre les services système, ce qui peut entraîner un temps d’arrêt visible pour l’utilisateur.
-
Attendez la fin de l’exécution de la configuration.
À propos de la prise en charge de Let’s Encrypt
Let’s Encrypt est une autorité de certification publique qui émet des certificats TLS gratuits et automatisés qui sont approuvés par les navigateurs utilisant le protocole ACME. Vous pouvez obtenir et renouveler automatiquement des certificats Let’s Encrypt sur votre appliance sans aucun besoin de maintenance manuelle.
Pour utiliser l’automatisation Let’s Encrypt, votre appliance doit être configurée avec un nom d’hôte accessible publiquement sur HTTP. L’appliance doit également être autorisée à établir des connexions HTTPS sortantes.
Quand vous autorisez l’automatisation de la gestion de certificats TLS avec Let’s Encrypt, votre instance GitHub Enterprise Server contacte les serveurs Let’s Encrypt pour obtenir un certificat. Pour renouveler un certificat, les serveurs Let’s Encrypt doivent valider le contrôle du nom de domaine configuré avec des requêtes HTTP entrantes.
Vous pouvez également utiliser l’utilitaire de ligne de commande ghe-ssl-acme
sur votre instance GitHub Enterprise Server pour générer automatiquement un certificat Let’s Encrypt. Pour plus d’informations, consultez « Utilitaires de ligne de commande ».
Configuration de TLS avec Let’s Encrypt
Pour utiliser l’automatisation Let’s Encrypt, votre appliance doit être configurée avec un nom d’hôte accessible publiquement sur HTTP. L’appliance doit également être autorisée à établir des connexions HTTPS sortantes.
Avertissement : la configuration de TLS entraîne un petit temps d’arrêt pour votre instance GitHub Enterprise Server.
-
À partir d’un compte d’administration sur GitHub Enterprise Server, cliquez sur en haut à droite de n’importe quelle page.
-
Si vous ne figurez pas déjà sur la page « Administrateur du site », dans le coin supérieur gauche, cliquez sur Administrateur du site.
-
Dans la barre latérale « Administrateur de site », cliquez sur Management Console .
-
Dans la barre latérale « Paramètres », cliquez sur Confidentialité et décochez Mode Confidentialité.
-
Sélectionnez TLS uniquement (recommandé) .
-
Sélectionnez Permettre l’automatisation de la gestion de certificats TLS avec Let’s Encrypt.
-
Sous la barre latérale « Paramètres », cliquez sur Enregistrer les paramètres.
Remarque : l’enregistrement des paramètres dans la Management Console redémarre les services système, ce qui peut entraîner un temps d’arrêt visible pour l’utilisateur.
-
Attendez la fin de l’exécution de la configuration.
-
Dans la barre latérale « Paramètres », cliquez sur Confidentialité et décochez Mode Confidentialité.
-
Cliquez sur Demander un certificat TLS.
-
Attendez que l’« État » passe de « DÉMARRÉ » à « TERMINÉ ».
-
Cliquez sur Enregistrer la configuration.
Résolution des problèmes liés à TLS avec Let’s Encrypt
Vous pouvez résoudre les problèmes qui affectent votre certificat TLS à l’aide de Let’s Encrypt.
Erreur : « Une erreur de sécurité a empêché le chargement de la ressource. »
Dans certains cas, les utilisateurs finaux peuvent signaler que les pages des services sur votre instance GitHub Enterprise Server répondent avec l’erreur suivante dans les outils de développement d’un navigateur.
Security error prevented the resource from being loaded
Pour résoudre ces erreurs, vous devez mettre à jour les autres noms de l’objet (SAN) de votre certificat Let’s Encrypt en réémettant le certificat. Le remplacement du certificat d’une instance nécessite un temps d’arrêt pour les utilisateurs finaux.
-
Informez vos utilisateurs de ce temps d’arrêt à l’avance et envisagez d’activer le mode maintenance. Pour plus d’informations, voir les articles suivants.
- « Personnalisation des messages utilisateur pour votre entreprise »
- « Activation et planification du mode de maintenance » 1. Connexion SSH à votre instance GitHub Enterprise Server. Si votre instance comprend plusieurs nœuds, par exemple si la haute disponibilité ou la géoréplication sont configurées, connectez-vous via SSH au nœud principal. Si vous utilisez un cluster, vous pouvez vous connecter via SSH à n’importe quel nœud. Remplacez HOSTNAME par le nom d’hôte de votre instance, le nom d’hôte ou l’adresse IP d’un nœud. Pour plus d’informations, consultez « Accès à l’interpréteur de commandes d’administration (SSH) ».
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME
-
Pour désactiver Let’s Encrypt, exécutez la commande suivante :
Shell ghe-ssl-acme -d
ghe-ssl-acme -d
-
Pour effacer les paramètres existants de Let’s Encrypt, exécutez la commande suivante :
Shell ghe-ssl-acme -x
ghe-ssl-acme -x
-
Pour demander et installer un nouveau certificat à partir de Let’s Encrypt, exécutez la commande suivante :
Shell ghe-ssl-acme -e
ghe-ssl-acme -e
-
Pour appliquer la configuration, exécutez la commande suivante.
Note
Durant une exécution de configuration, les services sur votre instance GitHub Enterprise Server peuvent redémarrer, ce qui peut entraîner un bref temps d’arrêt pour les utilisateurs.
Shell ghe-config-apply
ghe-config-apply
-
Attendez la fin de l’exécution de la configuration.
-
Si vous avez configuré un message à destination des utilisateurs, supprimez-le. Si vous avez activé un mode maintenance, désactivez-le.