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/01/07 22:24] – [Mise en place côté client] techer.charles_educ-valadon-limoges.fr | reseau:debian:clesshcertificat [2025/06/11 12:53] (Version actuelle) – [Mise en place côté client] admin | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Configurer une authentification SSH avec certificat ====== | ====== Configurer une authentification SSH avec certificat ====== | ||
+ | ===== Resources ===== | ||
+ | * http:// | ||
+ | * https:// | ||
+ | * http:// | ||
+ | * https:// | ||
===== Principes ===== | ===== Principes ===== | ||
Ligne 7: | Ligne 12: | ||
* **Intérêt pour le client** | * **Intérêt pour le client** | ||
- | * **Intérêt pour le serveur** : la **clé publique du CA** permet de vérifier le certificat présenté par le client sans avoir à renseigner le fichier | + | * **Intérêt pour le serveur** : la **clé publique du CA** permet de vérifier le certificat présenté par le client sans avoir à renseigner le fichier **authorized_keys**. |
+ | |||
===== Les éléments nécessaires | ===== Les éléments nécessaires | ||
Ligne 13: | Ligne 20: | ||
* le certificat du client | * le certificat du client | ||
* l' | * l' | ||
+ | |||
+ | ===== Format d’un clé publique ssh ===== | ||
+ | |||
+ | Une clé publique SSH est une chaîne de texte en une seule ligne, avec plusieurs parties distinctes : | ||
+ | < | ||
+ | |||
+ | **Type** : Spécifie l' | ||
+ | * ssh-rsa : clé utilisant l' | ||
+ | * ecdsa-sha2-nistp256 : clé ECDSA avec une courbe elliptique. | ||
+ | * ssh-ed25519 : clé basée sur l' | ||
+ | |||
+ | **Clé encodée en base64** : chaîne encodée en Base64 représentant la clé publique. | ||
+ | |||
+ | **Commentaire facultatif** : information pour identifier la clé : nom d' | ||
+ | |||
===== Mise en place côté serveur ===== | ===== Mise en place côté serveur ===== | ||
Ligne 31: | Ligne 53: | ||
===== Mise en place côté client ===== | ===== Mise en place côté client ===== | ||
Le client doit faire signer sa clé publique pour obtenir un certificat qui doit être placé dans le même répertoire que sa clé privé et publique. | Le client doit faire signer sa clé publique pour obtenir un certificat qui doit être placé dans le même répertoire que sa clé privé et publique. | ||
+ | |||
+ | < | ||
+ | cp client_key ~/.ssh/ | ||
+ | cp client_cert.pub ~/.ssh/ | ||
+ | </ | ||
+ | |||
+ | Les permissions doivent être correctes : | ||
+ | |||
+ | < | ||
+ | chmod 600 ~/ | ||
+ | chmod 644 ~/ | ||
+ | </ | ||
Lors d’une connexion avec la clé privée, le certificat sera automatiquement présenté au serveur. | Lors d’une connexion avec la clé privée, le certificat sera automatiquement présenté au serveur. | ||
Ligne 36: | Ligne 70: | ||
Le client ssh doit seulement indique quelle clé privée utiliser avec l’option -i | Le client ssh doit seulement indique quelle clé privée utiliser avec l’option -i | ||
< | < | ||
- | ssh -i ~/.ssh/id_ed25519 | + | ssh -i ~/.ssh/client_key |
</ | </ | ||
Ligne 42: | Ligne 76: | ||
< | < | ||
- | ssh -v -i ~/.ssh/id_ed25519 | + | ssh -v -i ~/.ssh/client_key |
</ | </ | ||
+ | |||
+ | Vous pouvez utiliser aussi le fichier de configuration du client ssh | ||
+ | < | ||
+ | Host < | ||
+ | HostName < | ||
+ | User < | ||
+ | IdentityFile ~/ | ||
+ | CertificateFile ~/ | ||
+ | |||
+ | </ | ||
===== Les commandes utiles ===== | ===== Les commandes utiles ===== | ||
- | * obtenir la clé publique à partir de la clé privée d'un certificat utilisateur au format openSSH | + | * obtenir la clé publique à partir de la clé privée d'une identité utilisateur au format openSSH |
+ | |||
+ | < | ||
+ | $ ssh-keygen -y -f utilisateur-identite.pem > id_rsa.pub | ||
+ | </ | ||
+ | * Obtenir la clé publique à partir du certificat | ||
+ | * Extraire la clé publique du certificat de l’utilisteur | ||
+ | |||
+ | < | ||
+ | $ openssl x509 -in charles-cert.pem -pubkey –noout > id_rsa.pem | ||
+ | </ | ||
+ | noout permet d’avoir uniquement la clé publique sans le certificat | ||
+ | |||
+ | * Convertir la clé publique du format PEM au format openssh | ||
+ | |||
+ | < | ||
+ | $ ssh-keygen -i -m PKCS8 -f id_rsa.pem > id_rsa.pub | ||
+ | </ | ||
+ | |||
+ | |||
+ | * Obtenir la clé publique de la CA du certificat de la CA au format openSSH pour une connexion ssh | ||
+ | |||
+ | * Extraire la clé publique du certificat du CA | ||
+ | |||
+ | < | ||
+ | $ openssl x509 -in pkicub-cert.pem -pubkey –noout > ca.pem | ||
+ | </ | ||
+ | |||
+ | * Convertir la clé publique du format PEM au format openssh | ||
+ | |||
+ | < | ||
+ | $ ssh-keygen -f ca.pem > ca.pub | ||
+ | </ | ||
+ | |||
+ | * Vérifiez les journaux SSH pour voir si le certificat est utilisé correctement : | ||
+ | |||
+ | < | ||
+ | journalctl -u ssh | ||
+ | </ | ||
+ | |||
+ | * Sur le clien, ajoutez l’option -v pour obtenir plus de détails sur le processus de connexion : | ||
+ | |||
+ | < | ||
+ | ssh -v < | ||
+ | </ | ||
+ | |||
+ | * Facilité d’utilisation avec plusieurs serveurs en faisant confiance à la même CA en ajoutant la clé publique de la CA à ~/ | ||
+ | |||
+ | |||
+ | < | ||
+ | echo " | ||
+ | </ | ||
+ | |||
+ | Cela permet au client de faire confiance à tous les serveurs avec des certificats signés par cette CA. | ||
+ | |||
+ | * Visualiser le contenu d'un certificat | ||
+ | |||
+ | < | ||
+ | openssl x509 -in filename.pem -text –noout | ||
+ | </ | ||
+ | -noout pour ne pas afficher en base64 qui permet d’encode des données binaires ASCII | ||
+ | |||
+ | * emetteur du certificat : -issuer | ||
+ | |||
+ | < | ||
+ | openssl x509 -in filename.pem -issuer –noout | ||
+ | </ | ||
+ | |||
+ | * Sujet du certificat : -subject | ||
+ | |||
+ | < | ||
+ | openssl x509 -in filename.pem -subject –noout | ||
+ | </ | ||
+ | |||
+ | * Empreinte digitale : -fingeprint | ||
+ | |||
+ | < | ||
+ | openssl x509 -in filename.pem -fingerprint –noout | ||
+ | </ | ||
+ | |||
+ | * Clé publique : -pubkey | ||
< | < | ||
- | $ ssh-keygen -y -f utilisateur-identite.pem > utilisateur.pub | + | openssl x509 -in filename.pem –pubkey -noout –out id_rsa.pub |
</ | </ | ||
reseau/debian/clesshcertificat.1736285072.txt.gz · Dernière modification : 2025/01/07 22:24 de techer.charles_educ-valadon-limoges.fr