\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{jeu. juin 15 09:12:31 CEST 2017}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={ssh-keygen},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Générateur, gestionnaire et convertisseur de clé d'authentification},
CreationDate={D:20170615091231},
ModDate={D:20170615091231},
Keywords={ssh;sécurité;openssh}
}}
\begin{document}
 
\begin{center}
{\Huge ssh-keygen }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Générateur, gestionnaire et convertisseur de clé d'authentification}
 
\vspace{10mm}
 
\begin{description} \normalsize
\item[\hspace{1mm} -]{ssh-keygen génère des clés utilisables par le protocole sshv2. ssh-keygen peut également être utilisé pour générer des groupes à utiliser dans les échanges Diffie-Hellman.}
\item[\hspace{1mm} -]{ssh-keygen peut être utilisé pour générer et mettre à jours des listes de révocation de clé, et pour tester si les clés données ont été révoquées.}
\item[\hspace{1mm} -]{Normallement chaque utilisateur souhaitant utiliser ssh avec une authentification par clé publique le lance une fois pour créer la clé d'authentification dans \textasciitilde/ .ssh/id\_dsa, \textasciitilde/.ssh/id\_ecdsa, \textasciitilde/.ssh/id\_ed25519 ou \textasciitilde/.ssh/id\_rsa. Additionnellement, les administrateurs système peuvent l'utiliser puor générer des clé hôte, comme dans /etc/rc.}
\item[\hspace{1mm} -]{Normallement ce programme génère la clé et demande un nom de fichier pour stocker la clé privée. La clé publique est stockée dans un fichier de même nom suffixé avec ".pub". Le programme demande également une passphrase.}
\item[\hspace{1mm} -]{Il n'y a pas de manière de récupérer une passphrase perdue. Si la passphrase est perdue ou oubliée, une nouvelle clé doit être générée et la clé publique correspondante copiée dans les autres machines}
\item[\hspace{1mm} -]{Pour les clés stockées dans le nouveau format openssh, il y a également un champs commentaire pour aider à identifier la clé.}
\end{description}
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -A]{Pour chaque types de clé (rsa,-sa,ecdsa et ed25519) pour laquelle les clés hôte n'existent pas, génère les clés hôte avec le fichiers spécifié, une passphrase vide, la taille par défaut, et le commentaire par défaut.}
\item[\hspace{1mm} -a rounds]{En sauvant une clé privée au nouveau format, spécifie le nombre de KDF (fonction de dérivation de clé) utilisé.}
\item[\hspace{1mm} -B]{Affiche le digest de la clé privée spécifiée}
\item[\hspace{1mm} -b bits]{Taille de la clé à créer}
\item[\hspace{1mm} -C comment]{Fournis un nouveau commentaire}
\item[\hspace{1mm} -D pkcs11]{Charge les clés publique fournis par la librairie pkcs\#11. Utilisé avec -s, indique qu'une clé CA réside dans le jeton PKCS\#11.}
\item[\hspace{1mm} -E md5|sha256]{Spécifie l'algorithme de hashage en affichant les empreintes de clé}
\item[\hspace{1mm} -e ]{Lit une clé privée ou publique OpenSSH et l'affiche sur stdout dans un des formats de l'option -m}
\item[\hspace{1mm} -F hostname]{Recherche le nom d'hôte spécifié dans un fichier known\_hosts.}
\item[\hspace{1mm} -f filename]{Spécifie le nom du fichier de clé}
\item[\hspace{1mm} -G output\_file]{Génère des premiers candidats pour DH-GEX.}
\item[\hspace{1mm} -g]{Utilise le format DNS pour afficher les enregistrements de ressource d'empreinte en utilisant -r}
\item[\hspace{1mm} -H]{Hash le fichier known\_hosts. Remplace les hostnames et adresses avec les représentations hashés.}
\item[\hspace{1mm} -h]{En signant une clé, créé un certificat hôte au lieu d'un certificat utilisateur.}
\item[\hspace{1mm} -l certificate\_identity]{Spécifie l'identité de clé en signant une clé publique.}
\item[\hspace{1mm} -i]{Cette option lit une clé privée ou publique non-chiffrée au format spécifié par -m et l'affiche au format compatible OpenSSH sur stdout.}
\item[\hspace{1mm} -J num\_lines]{Quitte après n ligne pendant l'exécution du screening des candidats DH en utilisant l'option -T.}
\item[\hspace{1mm} -j start\_line]{Défarre le screening à la ligne spécifiée}
\item[\hspace{1mm} -K checkpt]{Écris la dernière ligne traitée dans le fichier spécifié en effectuant le screening de candidat DH.}
\item[\hspace{1mm} -k]{Génère un fichier KRL}
\item[\hspace{1mm} -L]{Affiche le contenu d'un ou plusieurs certificats}
\item[\hspace{1mm} -l]{Affiche l'empreinte du fichier de clé publique spécifié.}
\item[\hspace{1mm} -M memory]{Quantité de mémoire à utiliser (en Mo) en générant le moduli candidat pour DH-GEX}
\item[\hspace{1mm} -m RFC4716|PKCS8|PEM]{Format de clé pour -i et -e}
\item[\hspace{1mm} -N new\_passphrase]{Fournis une nouvelle passphrase}
\item[\hspace{1mm} -n principals]{Spécifie un ou plusieurs principaux à inclure dans un certificat en signant une clé.}
\item[\hspace{1mm} -O option]{Spécifie une option de certificat, en signant une clé. Peut être spécifié plusieurs fois. Les options valides sont:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} clear]{Efface toutes les permissions permises}
\item[\hspace{6mm} critical:name\texttt{[}=contents\texttt{]}]{}
\item[\hspace{6mm} Extension:name\texttt{[}=contents\texttt{]}]{Inclus une option ou une extension arbitraire}
\item[\hspace{6mm} force-command=command]{Force l'exécution de la commande au lieu d'un shell ou de la commande spécifié par l'utilisateur quand le certificat est utilisé pour l'authentification}
\item[\hspace{6mm} no-agent-forwarding]{Désactive le forwarding ssh-agent}
\item[\hspace{6mm} no-port-forwarding]{Désactive le forwarding de port}
\item[\hspace{6mm} no-pty]{Désactive l'allocation pty}
\item[\hspace{6mm} no-user-rc]{Désactive l'exécution -e \textasciitilde/.ssh/rc}
\item[\hspace{6mm} no-x11-forwarding]{Désactive le forwarding X11}
\item[\hspace{6mm} permit-agent-forwarding]{Autorise le forwarding ssh-agent}
\item[\hspace{6mm} permit-port-forwarding]{Autorise le port forwarding}
\item[\hspace{6mm} permit-pty]{Autorise l'allocation pty}
\item[\hspace{6mm} permit-user-rc]{Autorise l'exécution de \textasciitilde/.ssh/rc}
\item[\hspace{6mm} permit-x11-forwarding]{Autorise le forwarding X11}
\item[\hspace{6mm} source-address=address\_list]{Restreint les adresses sources depuis lequel le certificat est considéré valide.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} -o]{Sauve la clé privée en utilisant le nouveau format au lieu de PEM}
\item[\hspace{1mm} -P passphrase]{Fournis l'ancienne passphrase}
\item[\hspace{1mm} -p]{Demande de changer la passphrase de la clé privée au lieu de créer une nouvelle clé}
\item[\hspace{1mm} -Q]{Teste si les clé ont été révoqués}
\item[\hspace{1mm} -q]{mode silencieux}
\item[\hspace{1mm} -R hostname]{Supprime toutes les clé appartenant à hostname dans known\_hosts}
\item[\hspace{1mm} -r hostname]{Affiche le RR SSHFP pour la clé publique spécifiée}
\item[\hspace{1mm} -S start]{Spécifie le point de départ en hexa en générant un moduli candidat pour DH-GEX}
\item[\hspace{1mm} -s ca\_key]{Signe un clé publique en utilisant la clé CA spécifiée}
\item[\hspace{1mm} -T output\_file]{Teste les premiers candidats à l'échange DH}
\item[\hspace{1mm} -t dsa|ecdsa|ed25519|rsa]{Spécifie le type de clé à créer}
\item[\hspace{1mm} -u]{Met à jours une KRL}
\item[\hspace{1mm} -V validity\_interval]{Spécifie un interval de validité en signant un certificat.}
\item[\hspace{1mm} -v]{mode verbeux}
\item[\hspace{1mm} -W generator]{Spécifie le générateur souhaité en testant le moduli pour DH-GEX}
\item[\hspace{1mm} -y]{Lit une clé privée au format OpenSSH et affiche une clé publique sur stdout}
\item[\hspace{1mm} -z serial\_number]{Spécifie un numéro de série à embarquer dans le certificat.}
\end{description}
 
\vspace{1cm}{\huge Génération de moduli }
 
\
 
\hspace{1mm} ssh-keygen peut être utilisé pour générer des groupes pour le protocole de groupe d'échange Diffie-Hellman (DH-GEX). Générer ces groupes se fait en 2 étapes: Les premiers candidats sont générés en utilisant un processus rapide mais consommateur de mémoire. La génération des premiers sont effectués en utilisant -G: \\
\hspace{1mm} \textbf{ssh-keygen -G moduli-2048.candidates -b 2048} \\
\hspace{1mm} Par défaut, la recherche des premiers commence au point aléatoire dans la plage de longueur souhaitée, mais peut être changé avec -S. Une fois un jeu de candidats généré, ils doivent être screené, avec l'option -T. Dans ce mode, ssh-keygen lit les candidats depuis l'entrée standard, ou depuis un fichier avec -f, par exemple: \\
\hspace{1mm} \textbf{ssh-keygen -T moduli-2048 -f moduli-2048.candidates} \\
\hspace{1mm} Par défaut, chaque candidat est sujet à 100 test de primalité. Cela peut être changé avec -a. La valeur de générateur DH est choisie automatiquement pour le premier en considération. -W permet de choisir un générateur spécifique. Les valeur de générateur sont 2, 3 et 5. \\
 
\hspace{1mm}  Les groupes DH screenés peuvent être installés dans /etc/moduli. Il est important que ce fichier contienne le moduli d'une plage de longueur de bit et que les partis d'une connections partage un moduli commun.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Certificats }
 
\
 
\hspace{1mm}  ssh-keygen suppporte la signature de clé pour produire des certificats qui peuvent être utilisés pour l'authentification utilisateur et hôte. Les certificats consistent d'une clé publique, des informations d'identité, 0 ou plusieurs principaux et un jeu d'options qui sont signés par une clé d'autorité de certification. Les clients ou serveurs peuvent ainsi truster seulement la clé CA et vérifier la signature des certificats. Noter que les certificats OpenSSH sont différents et plus simple que les certificats X.509.
\vspace{5mm} \\
 
 
\hspace{1mm} sh-keygen support 2 types de certificats: utilisateur et hôte. Les certificats utilisateur authentifient les utilisateurs auprès des serveurs, et les certificats hôte authentifient les serveurs auprès des utilisateurs. Pour générer un certificat utilisateur: \\
\hspace{1mm} \textbf{ssh-keygen -s /path/to/ca.key -I key\_id /path/to/user\_key.pub} \\
\hspace{1mm} Le certificat résultant sera placé dans /path/to/user\_key-cert.pub. Un certificat hôte nécessite l'option -h: \\
\hspace{1mm} \textbf{ssh-keygen -s /path/to/ca\_key -I key\_id -h /path/to/host\_key.pub} \\
\hspace{1mm} Il est possible de signer en utilisant une clé CA stockée dans un jeton PKCS\#11 en fournissant la librairie avec -D \\
\hspace{1mm} \textbf{ssh-keygen -s ca\_key.pub -D libpkcs11.so -I key\_id user\_key.pub} \\
\hspace{1mm} Dans tous les cas, key\_id est un identifiant de clé qui est loggé par le serveur quand le certifica est utilisé pour l'authentification. Les certificats peuvent être limités pour être valide pour un jeu de principaux. Par défaut, les certificats générés sont valides pour tous les utilisateurs et tous les hôte. Pour générer un certificat pour un jeu spécifié de principaux: \\
\hspace{1mm} \textbf{ssh-keygen -s ca\_key -I key\_id -n user1,user2 user\_key.pub} \\
\hspace{1mm} \textbf{ssh-keygen -s ca\_key -I key\_id -h -n host.domain host\_key.pub} \\
 
\hspace{1mm}  Des limitation aditionneles sur la validité et l'utilisation des certificats utilisateur peuvent être spécifiés. L'option -V permet de spécifier les dates de validité.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge KRL }
 
\
 
\hspace{1mm}  ssh-key est capable de gérer des listes de révocation de clé. Ces fichiers binaire spécifient des clés ou certificats qui sont révoqués en utilisant un format compacte.
\vspace{5mm} \\
 
 
\hspace{1mm}  Les KRL peuvent être générés en utilisant le flag -k. Cette option lit un ou plusieurs fichiers depuis la ligne de commande et génère une nouveau KRL. Les fichiers peuvent contenir une spécification KRL, ou des clé publique, listées une par ligne. Les clés publique sont révoquées en listant leur hash ou leur contenu dans la KRL et les certificats révoqués par numéro de série ou ID de clé.
\vspace{5mm} \\
 
 
\hspace{1mm}  Révoquer les clé en utilisant une spécification KRL offre un contrôle explicite sur les types d'enregistrements utilisés pour révoquer les clé et peut être utilisé pour révoquer directement les certificats par numéro de série ou ID de clé sans avoir le certificat original complet. Une spécification KRL consiste de lignes contenant une des directives suivantes:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} serial: serial\_number\texttt{[}-serial\_number\texttt{]}]{Révoque un certificat avec le numéro de série spécifié}
\item[\hspace{1mm} id: key\_id]{Révoque un certificat avec l'ID de clé spécifié}
\item[\hspace{1mm} key: public\_key]{Révoque la clé spécifiée}
\item[\hspace{1mm} sha1: public\_key]{Révoque la clé spécifiée par son hash sha1}
\end{description}
 
\hspace{1mm}  Les KRL peuvent être mises à jours avec -u. Qunad cette option est spécifiée, les clés listées via la ligne de commande sont fusionnées dans la KRL. Il est également possible de tester si un clé particulière est révoquée avec -Q.
\vspace{5mm} \\
 
\end{flushleft}
\end{document}
