¿Cómo funciona el formato ssh-keygen .pub con archivos .pem?

17

El ssh-keygencomando genera .pubarchivos que describe como "archivos de clave pública", pero tienen un formato totalmente diferente a la mayoría de los "archivos de clave pública" que he visto, que están en formato PEM. Los ssh-keygenarchivos de estilo se ven así:

ssh-rsa AAAAB3NzaC1... user@host

... mientras que los archivos PEM se ven así:

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

¿Son intercambiables estos dos formatos o están realizando un propósito fundamentalmente diferente? Encontré este problema porque quería obtener la huella digital de la clave RSA2 de mi archivo de clave pública codificada por PEM, pero el método generalmente sugerido para hacerlo ( ssh-keygen -l) dice que mi archivo codificado por PEM "no es un archivo de clave pública".

Por cierto, soy consciente de esta respuesta , pero no cubre los archivos .pub generados por ssh-keygen.

Jez
fuente
1
Bueno, una clave pública SSH no es lo mismo que un certificado en formato PEM. ¿Has mirado esto? serverfault.com/questions/114301/…
cjc
2
Es importante ser particular aquí, que probablemente esté viendo OpenSSH, y no el menos común SSH.COM u otras implementaciones. La clave pública codificada PEM estándar es realmente válida para algunas implementaciones menos comunes. Sé que un cuadro VMS al que me conecto requiere un archivo PEM.
Zoredache
@cjc, Correcto, no es un certificado, pero tampoco es lo mismo que obtienes al ejecutarlo openssl rsa -in privatekey_rsa -pubout, que en realidad es una clave pública y no un certificado.
Zoredache

Respuestas:

8

Los pares de claves OpenSSH no son PEM ni ningún otro estándar x500. Las nuevas versiones de OpenSSH pueden usar claves X.509 PEM, pero esa es otra bola de cera separada de ssh-keygen, y debe configurarse explícitamente. Como mejor sé, ninguna implementación importante de SSH utiliza exactamente los mismos formatos clave que cualquier otro.

Como señala Zoredache , si está utilizando algo que no sea OpenSSH (deus iuvo vos), entonces podría ser casi cualquier cosa.

Chris S
fuente
1
Sí, de hecho, ¡había confundido SSH y SSL! De hecho, mi daemon OpenSSH estaba usando un .pubarchivo en mi servidor /etc/ssh/ssh_host_rsa_key.puby no estaba usando ninguna arquitectura de autoridad de certificación SSL. Cuando ejecuté ssh-keygen -lese archivo, me dio la huella digital de la clave RSA2 del servidor.
Jez