Skip to main content

À propos des autorités de certification SSH

Avec une autorité de certification SSH, votre organisation ou votre compte d'entreprise peut fournir des certificats SSH que les membres et les collaborateurs externes peuvent utiliser pour accéder à vos ressources avec Git.

À propos des autorités de certification SSH

Un certificat SSH est un mécanisme permettant à une clé SSH de signer une autre clé SSH. Si vous utilisez une autorité de certification SSH pour fournir aux membres et les collaborateurs externes de votre organisation des certificats SSH signés, vous pouvez ajouter l'autorité de certification à votre compte d'entreprise ou à votre organisation pour autoriser ces contributeurs de l'organisation à accéder aux ressources de l'organisation en utilisant leurs certificats.

Après avoir ajouté une autorité de certification SSH à votre organisation ou à votre compte d'entreprise, vous pouvez utiliser cette autorité de certification afin de signer des certificats SSH clients pour les membres et les collaborateurs externes de l'organisation. Ces contributeurs externes de l'organisation peuvent ensuite utiliser les certificats signés pour accéder aux dépôts de votre organisation.

Les certificats ajoutés à votre entreprise permettent d'accéder à toutes les organisations appartenant à votre compte d’entreprise. Pour plus d’informations, consultez « Application de stratégies pour les paramètres de sécurité dans votre entreprise ».

Vous pouvez exiger que les membres utilisent des certificats SSH pour accéder aux ressources de l’organisation, sauf si SSH est désactivé dans votre dépôt.

Si vous le souhaitez, vous pouvez exiger que les membres et les collaborateurs externes utilisent des certificats SSH pour accéder aux ressources de l'organisation. Pour plus d’informations, consultez « Gestion des autorités de certification SSH de votre organisation » et « Application de stratégies pour les paramètres de sécurité dans votre entreprise ».

Par exemple, vous pouvez créer un système interne qui émet un nouveau certificat pour vos développeurs tous les matins. Chaque développeur peut alors utiliser son certificat quotidien pour travailler dans les dépôts de votre organisation sur GitHub Enterprise Server. À la fin de la journée, le certificat peut expirer automatiquement, protégeant ainsi vos dépôts contre toute compromission ultérieure du certificat.

Les membres ne peuvent pas utiliser le certificat pour accéder aux duplications des référentiels de l’organisation, sauf si l’entreprise a autorisé les autorités de confiance SSH à accéder aux référentiels appartenant aux utilisateurs. Pour plus d’informations, consultez « À propos des autorités de certification SSH ».

À propos des URL SSH avec des certificats SSH

Si votre organisation exige des certificats SSH, pour éviter les erreurs d'authentification, les membres et collaborateurs externes de l'organisation doivent utiliser une URL spéciale qui inclut l'ID de l'organisation quand ils effectuent des opérations Git via SSH. Cette URL spéciale permet au client et au serveur de négocier plus facilement quelle clé sur l'ordinateur du membre doit être utilisée pour l'authentification. Si un membre utilise l'URL standard, qui commence par git@github.com, le client SSH risque de fournir la mauvaise clé, entraînant l'échec de l'opération.

Toute personne qui a un accès en lecture au dépôt peut trouver cette URL en sélectionnant le menu déroulant Code dans la page principale du dépôt, puis en cliquant sur Utiliser SSH.

Si votre organisation n'exige pas de certificats SSH, les contributeurs peuvent continuer à utiliser leurs propres clés SSH ou d'autres moyens d'authentification. Dans ce cas, l'URL spéciale ou l'URL standard (qui commence par git@github.com) fonctionne.

Émission de certificats

Lorsque vous émettez chaque certificat, vous devez inclure une extension qui spécifie pour quelles données GitHub Enterprise Server le certificat est utilisé. Vous pouvez référencer l’utilisateur à l’aide de son identifiant de connexion. Par exemple, vous pouvez utiliser la commande ssh-keygen d’OpenSSH, en remplaçant KEY-IDENTITY par votre propre identité de clé, et USERNAME par un GitHub Enterprise Server nom d’utilisateur. Le certificat que vous générez sera autorisé à agir pour le compte de cet utilisateur sur toutes les ressources de votre organisation. Assurez-vous de valider l'identité de l'utilisateur avant d'émettre le certificat.

Note

Vous devez effectuer une mise à jour vers OpenSSH 7.6 ou version ultérieure pour utiliser ces commandes.

Pour utiliser login afin d’identifier l’utilisateur, utilisez extension:login :

ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@HOSTNAME=USERNAME ./user-key.pub

Warning

Une fois qu’un certificat a été signé et émis, il ne peut pas être révoqué.

Pour les autorités de confiance chargées vers GitHub Enterprise Server la version 3.13 ou ultérieure, vous devrez utiliser l’indicateur -V pour configurer une durée de vie inférieure à 366 jours pour le certificat. Pour les autorités de confiance chargées avant la version 3.13, l’indicateur -V est facultatif et vous pouvez créer des certificats qui sont irréversibles et définitifs.

Pour émettre un certificat destiné à une personne qui utilise SSH pour accéder à plusieurs produits GitHub, vous pouvez inclure deux extensions de connexion afin de spécifier le nom d'utilisateur de chaque produit. Par exemple, la commande suivante émettrait un certificat pour USERNAME-1 pour le compte de l'utilisateur sur GitHub Enterprise Cloud, et USERNAME-2 pour le compte de l'utilisateur sur GitHub Enterprise Server à HOSTNAME.

ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@github.com=USERNAME-1 extension:login@HOSTNAME=USERNAME-2 ./user-key.pub

Vous pouvez restreindre les adresses IP à partir desquelles un membre de l'organisation peut accéder aux ressources de votre organisation, en utilisant une extension source-address. L'extension accepte une adresse IP spécifique ou une plage d'adresses IP utilisant la notation CIDR. Vous pouvez spécifier plusieurs adresses ou plages en séparant les valeurs par des virgules. Pour plus d’informations, consultez Routage CIDR (Classless Interdomain Routing) sur Wikipédia.

ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@HOSTNAME=USERNAME -O source-address=COMMA-SEPARATED-LIST-OF-IP-ADDRESSES-OR-RANGES ./user-key.pub