web-dev-qa-db-fra.com

Comment nommer les paires de clés publiques et privées openssh?

J'utilise des paires de clés publique/privée depuis longtemps maintenant. Et à peu près au même moment, je me demande encore et encore quelle extension de fichier je devrais utiliser. Il semble que du moins pour les clés publiques et privées (openssh) n’est pas une convention du tout?

Je veux dire dans PuTTY, il existe une extension spéciale .ppk pour "PuTTY Private Key" et la clé publique est stockée soit sans extension, soit avec .pub. Personnellement, je préfère ne pas utiliser .pub, car Microsoft utilise déjà cette extension pour MS Publisher. Donc, pour PuTTY, je stocke les deux clés avec le même nom et ajoute .ppk à la clé privée et rien à la clé publique. Et pour ce cas, je peux vivre avec ça. Je peux identifier quelle clé est publique et quelle clé privée et celle privée sont uniquement destinées à PuTTY.

Mais que dois-je faire avec la clé privée openssh? Juste stocker sans extension? Ou utilisez quelque chose comme .openssh? Aussi, s'il n'y a pas vraiment de convention, si quelqu'un y réfléchissait et choisissait une sorte de concept pour lui-même, j'apprécierais aussi que ...

Merci d'avance!

6
I-GaLaXy-I

Tout d'abord, il n'y a pas vraiment de convention officielle pour nommer les clés. Les noms de fichiers ne comptent pas. Ils ne sont importants que pour vous, qui doit les gérer. Le logiciel ne concerne que le contenu des fichiers.

Cela étant dit, les fichiers de clé OpenSSH ne sont que des fichiers texte, vous pouvez donc les nommer avec une extension .txt.

Je respecte généralement la convention utilisée par l'outil ssh-keygen, à savoir id_{key_algorithm} (c.-à-d. id_rsa ou id_dsa) pour la clé privée, puis le nom de clé privée + .pub pour la clé publique (id_rsa.pub ou id_dsa.pub). Si je dois conserver plusieurs clés, je vais ajouter un identifiant supplémentaire à la fin du nom pour obtenir des noms tels que id_rsa_myhost et id_rsa_myhost.pub.

9
heavyd

J'ai donc pensé à certains concepts de nommage et je me suis retrouvé comme ça maintenant. Je sais qu'il n'y a pas de convention à part .ppk (clé privée PuTTY) dans PuTTY - ce n'est donc pas un "Vous devez le faire comme ceci" , c'est plutôt un idée à quoi un concept de nommage pourrait ressembler . J'ai donc pensé à le partager avec vous de toute façon - cela aiderait peut-être au moins quelqu'un à construire son propre concept.

Ce que je veux/ne veux pas

  • Je veux utiliser les paires de clés OpenSSH et PuTTY
  • Je veux que les clés soient immédiatement identifiables et ne puissent pas être mélangées - par conséquent, je veux identifier
    • l'algorithme
    • s'il s'agit d'une clé privée ou publique
    • s'il s'agit du format OpenSSH ou PuTTY
  • Je veux que le nom soit Windows et Unix "compatible/conforme" (par exemple, je ne veux pas d'espaces sous Linux - même s'il ne s'agit pas d'une politique officielle)
  • Je ne veux pas changer toutes les clés sur tous les serveurs, si quelque chose (peut-être une sorte de problème de sécurité) se produit, alors je peux
    • ne veut pas utiliser la même paire de clés pour plusieurs serveurs
    • vouloir utiliser une paire de clés uniquement dans un but (un utilisateur, un service ou une tâche, par exemple)

Le nom doit donc contenir les informations suivantes:

  • Informations sur le but s'il s'agit (nom d'utilisateur ou nom de tâche par exemple)
  • Le nom du serveur, s'il s'agit d'une clé spécifique du serveur
  • L'algorithme
  • Est-ce une clé privée ou publique?
  • Est-ce le format OpenSSH ou PuTTY?

Un schéma de nom possible

Comme heavy mentionné, je pense que c'est vraiment une bonne idée de s'en tenir à la syntaxe de l'outil ssh-keygen. J'utilise donc ceci (à l'exception du .pub pour les clés publiques, car cette extension de fichier est utilisée par Microsoft Publisher et pourrait être interprétée de manière incorrecte sur les systèmes Windows - il existe également une icône pour MS Publisher) et je la combine avec la convention de PuTTY ( .ppk) et les conditions ci-dessus. Par conséquent, un schéma de noms possible pourrait être:

id_<key_algorithm>_<servername>_<purpose>.<format_information>

Avec les règles suivantes:

  • S'il ne s'agit pas d'un serveur spécifique, supprimez <servername>
  • Si ce n'est pas dans un but spécifique, supprimez <purpose>
  • Au moins une des informations (<purpose> ou <servername>) doit être contenue dans le nom

Les informations de format (OpenSSH/PuTTY et privé/public)

PuTTY utilise .ppk pour les clés privées et l'outil ssh-keygen est livré avec .pub pour les clés publiques, que je ne souhaite pas utiliser à cause de MS Publisher. Par conséquent, je m'en tiens à PuTTys .ppk, diffère juste un peu de ssh-keygens .pub et utilise les deux "conventions" comme base pour construire les autres à proximité de ce nom. Donc, cette information est ajoutée en tant que "extension de fichier" :

Name of OpenSSH private key:  .pk        an alternative could be .opk or   .ospk
Name of OpenSSH public key:   .pubk      an alternative could be .opubk or .ospubk
Name of PuTTY private key:    .ppk
Name of PuTTY Public Key:     .ppubk

Quelques exemples:

id_rsa_foo_bar.ppk
id_dsa_foo.pk

id_rsa_server01_rsync.pk
id_rsa_server01_rsync.pubk
id_rsa_server01_rsync.ppk
id_rsa_server01_rsync.ppubk
5
I-GaLaXy-I