Outils pour utilisateurs

Outils du site


reseau:debian:clesshcertificat

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine 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.frreseau: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://www.ixany.org/fr/articles/presentation-et-utilisation-des-certificats-ssh/
 +  * https://www.ssh.com/
 +  * http://tech.ciges.net/blog/openssh-with-x509-certificates-how-to/
 +  * https://linux-attitude.fr/post/certificats-x509-pour-ssh
 ===== Principes ===== ===== Principes =====
  
Ligne 7: Ligne 12:
  
   * **Intérêt pour le client**  : la **clé publique de la CA** permet de vérifier le certificat présenté par le serveur. Il n'est pas nécessaire de renseigner le fichier **know\_hosts**.   * **Intérêt pour le client**  : la **clé publique de la CA** permet de vérifier le certificat présenté par le serveur. Il n'est pas nécessaire de renseigner le fichier **know\_hosts**.
-  * **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 a**uthorized_keys**.  +  * **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'identité du client   * l'identité du client
 +
 +===== 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> <clé encodée en base64> <commentaire facultatif>
 +
 +**Type** : Spécifie l'algorithme utilisé pour générer la clé. Par exemple :
 +  * ssh-rsa : clé utilisant l'algorithme RSA.
 +  * ecdsa-sha2-nistp256 : clé ECDSA avec une courbe elliptique.
 +  * ssh-ed25519 : clé basée sur l'algorithme Ed25519.
 +
 +**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'utilisateur et l'hôte depuis lequel la clé a été générée.
 +
  
 ===== 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.
 +
 +<code>
 +cp client_key ~/.ssh/
 +cp client_cert.pub ~/.ssh/
 +</code>
 +
 +Les permissions doivent être correctes :
 +
 +<code>
 +chmod 600 ~/.ssh/client_key
 +chmod 644 ~/.ssh/client_cert.pub
 +</code>
  
 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
 <code> <code>
-ssh -i ~/.ssh/id_ed25519 nomDNSserveur+ssh -i ~/.ssh/client_key nomDNSserveur
 </code> </code>
  
Ligne 42: Ligne 76:
  
 <code> <code>
-ssh -v -i ~/.ssh/id_ed25519 nomDNSserveur+ssh -v -i ~/.ssh/client_key nomDNSserveur
 </code> </code>
 +
 +Vous pouvez utiliser aussi le fichier de configuration du client ssh
 +<code>
 +Host <nom_du_serveur> 
 +    HostName <adresse_du_serveur> 
 +    User <nom_utilisateur>
 +    IdentityFile ~/.ssh/client_key
 +    CertificateFile ~/.ssh/client_cert.pub
 +
 +</code> 
 ===== 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 
 + 
 +<code> 
 +$ ssh-keygen -y -f utilisateur-identite.pem > id_rsa.pub 
 +</code> 
 +  * Obtenir la clé publique à partir du certificat de l’utilisateur au format openSSH pour une connexion ssh 
 +    * Extraire la clé publique du certificat de l’utilisteur 
 + 
 +<code> 
 +$ openssl x509 -in charles-cert.pem -pubkey –noout > id_rsa.pem 
 +</code> 
 +noout permet d’avoir uniquement la clé publique sans le certificat 
 +  
 +    * Convertir la clé publique du format PEM au format openssh  
 + 
 +<code> 
 +$ ssh-keygen -i -m PKCS8 -f id_rsa.pem > id_rsa.pub 
 +</code> 
 + 
 + 
 +  * 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 
 + 
 +<code> 
 +$ openssl x509 -in pkicub-cert.pem -pubkey –noout > ca.pem 
 +</code> 
 + 
 +    * Convertir la clé publique du format PEM au format openssh  
 + 
 +<code> 
 +$ ssh-keygen -f ca.pem > ca.pub 
 +</code> 
 + 
 +  * Vérifiez les journaux SSH pour voir si le certificat est utilisé correctement : 
 + 
 +<code> 
 +journalctl -u ssh 
 +</code> 
 + 
 +  * Sur le clien, ajoutez l’option -v pour obtenir plus de détails sur le processus de connexion : 
 + 
 +<code> 
 +ssh -v <nom_du_serveur> 
 +</code> 
 + 
 +  * Facilité d’utilisation avec plusieurs serveurs en faisant confiance à la même CA en ajoutant la clé publique de la CA à ~/.ssh/known_hosts en tant qu’autorité de certification : 
 + 
 + 
 +<code> 
 +echo "@cert-authority *.example.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQE..." >> ~/.ssh/known_hosts 
 +</code> 
 + 
 +Cela permet au client de faire confiance à tous les serveurs avec des certificats signés par cette CA. 
 + 
 +  * Visualiser le contenu d'un certificat 
 + 
 +<code> 
 +openssl x509 -in filename.pem -text –noout 
 +</code> 
 +-noout pour ne pas afficher en base64 qui permet d’encode des données binaires ASCII 
 + 
 +  * emetteur du certificat : -issuer 
 + 
 +<code> 
 +openssl x509 -in filename.pem -issuer –noout 
 +</code> 
 + 
 +  * Sujet du certificat : -subject 
 + 
 +<code> 
 +openssl x509 -in filename.pem -subject –noout 
 +</code> 
 + 
 +  * Empreinte digitale : -fingeprint 
 + 
 +<code> 
 +openssl x509 -in filename.pem -fingerprint –noout 
 +</code> 
 + 
 +  * Clé publique : -pubkey 
  
 <code> <code>
-$ ssh-keygen -y -f utilisateur-identite.pem > utilisateur.pub+openssl x509 -in filename.pem –pubkey -noout –out id_rsa.pub
 </code> </code>
  
  
reseau/debian/clesshcertificat.1736285072.txt.gz · Dernière modification : 2025/01/07 22:24 de techer.charles_educ-valadon-limoges.fr