Comment le format .pub ssh-keygen fonctionne-t-il avec les fichiers .pem?

17

La ssh-keygencommande génère des .pubfichiers qu'elle décrit comme des "fichiers de clés publiques", mais ils sont d'un format totalement différent de la plupart des "fichiers de clés publiques" que j'ai l'habitude de voir, qui sont au format PEM. Les ssh-keygenfichiers -style ressemblent à ceci:

ssh-rsa AAAAB3NzaC1... user@host

... alors que les fichiers PEM ressemblent à ceci:

-----BEGIN CERTIFICATE-----
MIIGZjCCBU6gAwIBAgIDCIrNMA0GCSqGSIb3DQEBBQUAMIGMMQsw...
-----END CERTIFICATE-----

Ces deux formats sont-ils interchangeables ou remplissent-ils un objectif fondamentalement différent? J'ai rencontré ce problème parce que je voulais obtenir l'empreinte digitale de la clé RSA2 de mon fichier de clé publique codé PEM, mais la méthode généralement suggérée pour le faire ( ssh-keygen -l) indique que mon fichier codé PEM "n'est pas un fichier de clé publique".

Soit dit en passant, je connais cette réponse , mais elle ne couvre pas les fichiers .pub générés par ssh-keygen.

Jez
la source
1
Eh bien, une clé publique SSH n'est pas la même chose qu'un certificat au format PEM. Avez-vous regardé ça? serverfault.com/questions/114301/…
cjc
2
Il est important d'être précis ici, que vous regardez probablement OpenSSH, et non le SSH.COM moins courant, ou d'autres implémentations. La clé publique codée PEM standard est en fait valide pour certaines implémentations moins courantes. Je sais qu'une boîte VMS à laquelle je me connecte nécessite un fichier PEM.
Zoredache
@cjc, D'accord, ce n'est pas un certificat, mais ce n'est pas non plus la même chose que ce que vous obtenez en exécutant openssl rsa -in privatekey_rsa -pubout, qui est en fait une clé publique, et non un certificat.
Zoredache

Réponses:

8

Les paires de clés OpenSSH ne sont pas PEM ni aucune autre norme x500. Les nouvelles versions d'OpenSSH peuvent utiliser des clés PEM X.509, mais c'est une autre boule de cire distincte de ssh-keygen, et doit être configurée explicitement. Autant que je sache, aucune implémentation majeure de SSH n'utilise exactement les mêmes formats de clé que les autres.

Comme le note Zoredache , si vous utilisez autre chose que OpenSSH (deus iuvo vos), cela pourrait être sacrément proche de n'importe quoi.

Chris S
la source
1
Oui, en effet, j'avais confondu SSH et SSL! Mon démon OpenSSH utilisait en fait un .pubfichier sur mon serveur, /etc/ssh/ssh_host_rsa_key.pubet n'utilisait aucune architecture d'autorité de certification SSL. Lorsque j'ai exécuté ssh-keygen -lce fichier, il m'a donné l'empreinte de la clé RSA2 du serveur.
Jez