reseau:debian:clesshcertificat
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| reseau:debian:clesshcertificat [2025/07/02 11:59] – [Validation généralisée de certificats] admin | reseau:debian:clesshcertificat [2025/07/02 12:47] (Version actuelle) – [Révocation globale de clés] admin | ||
|---|---|---|---|
| Ligne 73: | Ligne 73: | ||
| <WRAP center round info> | <WRAP center round info> | ||
| * Une passphrase permet de protéger la clé privée. | * Une passphrase permet de protéger la clé privée. | ||
| - | Par défaut les clé sont enregistrées dans le dossier **.ssh** : | ||
| - | * la **clé privée** s' | ||
| - | * la **clé publique** s' | ||
| - | <WRAP center round important> | ||
| - | Une 2e sécurité est nécessaire pour la clé privée : il est nécessaire de **changer les droits d' | ||
| - | < | ||
| - | chmod 600 .ssh/id_rsa | ||
| - | </ | ||
| - | </ | ||
| </ | </ | ||
| ===== Format d’une clé publique ssh ===== | ===== Format d’une clé publique ssh ===== | ||
| Ligne 98: | Ligne 89: | ||
| **Commentaire facultatif** : information pour identifier la clé : nom d' | **Commentaire facultatif** : information pour identifier la clé : nom d' | ||
| - | |||
| - | ===== Génération d'un certificat SSH ===== | ||
| - | Les certificats OpenSSH permettent d' | ||
| - | * des informations sur l' | ||
| - | * et des **contraintes de validité**. | ||
| - | |||
| - | Pour signer un certificat avec ssh-keygen, deux paramètres au minimum sont nécessaires : | ||
| - | * paramètre **-s** pour indiquer la clé privée qui va **signer** : sa propre clé privée ou celle de la CA OpenSSH | ||
| - | * le paramètre **-I** pour indiquer l' | ||
| - | |||
| - | Le nom du fichier de certificat est généré en ajoutant **-cert.pub** au nom de la clé publique. | ||
| Ligne 188: | Ligne 168: | ||
| Pour indiquer qu'un serveur particulier, | Pour indiquer qu'un serveur particulier, | ||
| </ | </ | ||
| - | |||
| - | |||
| | | ||
| - | ===== Mise en place du certificat serveur au niveau du client | + | ==== Mise en place du certificat serveur au niveau du client ==== |
| La configuration du client permet à celui-ci de faire confiance à n' | La configuration du client permet à celui-ci de faire confiance à n' | ||
| Ligne 250: | Ligne 228: | ||
| ===== Génération d'un certificat utilisateur signé par la CA OpenSSH ===== | ===== Génération d'un certificat utilisateur signé par la CA OpenSSH ===== | ||
| + | ===== Génération du certificat utilisateur ===== | ||
| + | Les certificats OpenSSH permettent d' | ||
| + | * des informations sur l' | ||
| + | * et des **contraintes de validité**. | ||
| + | |||
| + | Pour signer un certificat avec ssh-keygen, deux paramètres au minimum sont nécessaires : | ||
| + | * paramètre **-s** pour indiquer la clé privée qui va **signer** : sa propre clé privée ou celle de la CA OpenSSH | ||
| + | * le paramètre **-I** pour indiquer l' | ||
| + | |||
| + | Il est cependant indispensable de préciser : | ||
| + | * une ou plusieurs valeurs de **principals** avec le paramètre -n chaque **principal** est un nom d' | ||
| + | |||
| + | Le nom du fichier de certificat est généré en ajoutant **-cert.pub** au nom de la clé publique. | ||
| + | Sur le serveur ayant les clé de la CA OpenSSH, signez la clé publique de l' | ||
| + | * transférez la clé publique de l' | ||
| + | * signez la clé publique avec la clé privée de la CA **/ | ||
| + | |||
| + | < | ||
| + | ssh-keygen -s / | ||
| + | -z 1 | ||
| + | -n charles | ||
| + | | ||
| + | </ | ||
| + | * transférez le certificat sur le poste du client dans son dossier **.ssh** | ||
| + | |||
| + | Le paramètre -L permet d' | ||
| + | < | ||
| + | ssh-keygen -L -f / | ||
| + | / | ||
| + | Type: ecdsa-sha2-nistp256-cert-v01@openssh.com user certificate | ||
| + | Public key: ECDSA-CERT SHA256: | ||
| + | Signing CA: ECDSA SHA256: | ||
| + | Key ID: " | ||
| + | Serial: 1 | ||
| + | Valid: forever | ||
| + | Principals: | ||
| + | charles | ||
| + | Critical Options: (none) | ||
| + | Extensions: | ||
| + | permit-X11-forwarding | ||
| + | permit-agent-forwarding | ||
| + | permit-port-forwarding | ||
| + | permit-pty | ||
| + | permit-user-rc | ||
| + | </ | ||
| + | |||
| + | Commentaires : | ||
| + | * le champ **Pricipals** indique le nom d' | ||
| + | * l' | ||
| + | * l' | ||
| + | ===== Validation d'un certificat de client SSH ===== | ||
| + | |||
| Il y a plusieurs méthodes : | Il y a plusieurs méthodes : | ||
| * **méthode globale** qui s' | * **méthode globale** qui s' | ||
| Ligne 272: | Ligne 302: | ||
| **IMPORTANT** : le certificat du client ne sera considéré que si sa liste de nom-clés (principal) contient le nom du compte auquel il tente de se connecter. | **IMPORTANT** : le certificat du client ne sera considéré que si sa liste de nom-clés (principal) contient le nom du compte auquel il tente de se connecter. | ||
| - | SAUF si un fichier spécifique à chaque compte indique la liste des noms-clés acceptés. Directive **AuthorizedPrincipalsFile** dans sshd_config | + | SAUF si un fichier spécifique à chaque compte indique la liste des noms-clés acceptés. Directive **AuthorizedPrincipalsFile** dans **sshd\_config** |
| </ | </ | ||
| + | * Redémarrez ensuite le service SSH | ||
| + | <WRAP center round info> | ||
| + | L' | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Révocation globale de clés==== | ||
| + | Au niveau du serveur SSH, la révocation de clés publiques se fait à l'aide de la directive **RevokedKeys** en précisantle nom du fichier global contenant la liste des clés qui doivent être refusées. Cela fonctionne pour toutes les clés publiques, même s'il n'y a pas de certificat associé à la clé. | ||
| + | |||
| + | < | ||
| + | TrustedUserCAKeys / | ||
| + | RevokedKeys / | ||
| + | </ | ||
| | | ||
| + | ==== Utilisation du fichier authorized_principals ==== | ||
| + | Sur le serveur SSH, l' | ||
| + | |||
| + | < | ||
| + | AuthorizedPrincipalsFile .ssh/ | ||
| + | </ | ||
| + | |||
| + | Dans ce cas-là, le serveur vérifie qu'un nom de la liste des **principals** du certificat qu'on lui propose apparaît bien dans le fichier **.ssh/ | ||
| + | |||
| + | Depuis le paragraphe 5.1, le certificat de l' | ||
| + | cb | ||
| + | contientles valeurs | ||
| + | cb | ||
| + | , | ||
| + | borelly | ||
| + | et | ||
| + | root | ||
| + | . Il suffit donc d' | ||
| + | authorized_principals | ||
| + | ducompte auquel on désire accéder. | ||
| + | Le mode debug du serveur SSH nous indique que ce fichier est maintenant bien analysé en premier lieu quand l' | ||
| + | cb | ||
| + | tente de se connecter sur le compte de | ||
| + | root | ||
| + | avec ce certificat : | ||
| + | root@pccb ~# echo borelly > / | ||
| + | root@pccb ~# / | ||
| + | ... | ||
| + | Failed publickey | ||
| ===== Mise en place côté client ===== | ===== Mise en place côté client ===== | ||
| + | |||
| Quand un client accepte pour la première fois la connexion à un serveur, il enregistre dans le fichier **~/ | Quand un client accepte pour la première fois la connexion à un serveur, il enregistre dans le fichier **~/ | ||
reseau/debian/clesshcertificat.1751450382.txt.gz · Dernière modification : 2025/07/02 11:59 de admin
