Generé un par de claves frente a OpenSSH y luego quise generar una clave pública codificada PEM. Noté que la clave pública generada difiere cuando se genera por OpenSSH frente a OpenSSL cuando se usa el mismo nombre de formato (PEM) ... Después de algunas pruebas (ver más abajo), encontré que las claves públicas son las mismas solo cuando se generan a) como PKCS8 en OpenSSH yb) como PEM en OpenSSL
- ¿Por qué la salida PEM de OpenSSH es diferente del formato PEM de ¿OpenSSL?
- Si esto es solo un parámetro que no concuerda, ¿lo soy? correcto en mi suposición de que para obtener la misma clave pública, tengo que usa PCKS8 en OpenSSH y PEM en OpenSSL?
Aquí está mi prueba:
# -----------------------------------------------------------------------------
# Using OpenSSH
# -----------------------------------------------------------------------------
# generate test key pair
[root@localhost key-test]# ssh-keygen -t rsa -b 2048 -f test.ssh
#
# get MD5 fingerprint of generated public key
#
[root@localhost key-test]# cat test.ssh.pub | openssl md5 -c
(stdin)= 3e:b6:6f:95:d2:1d:ca:7a:f3:88:2e:3a:ca:c3:b7:a3
#
# get MD5 fingerprint of generated public keys (RFC4716, PEM, and PKCS8 formats)
#
# header => ---- BEGIN SSH2 PUBLIC KEY ----
[root@localhost key-test]# ssh-keygen -y -e -m RFC4716 -f test | openssl md5 -c
(stdin)= 0d:da:5b:27:e9:cd:32:25:e5:c8:4e:2b:c2:0f:47:aa
# header => -----BEGIN RSA PUBLIC KEY-----
[root@localhost key-test]# ssh-keygen -y -e -m PEM -f test | openssl md5 -c
(stdin)= c5:38:c0:41:f8:76:41:7b:49:03:42:c6:21:dd:1c:2f
# header => -----BEGIN PUBLIC KEY-----
[root@localhost key-test]# ssh-keygen -y -e -m PKCS8 -f test | openssl md5 -c
(stdin)= 84:e8:54:5f:16:9f:92:48:67:99:54:65:13:ad:64:ad
# -----------------------------------------------------------------------------
# Using OpenSSL
# -----------------------------------------------------------------------------
#
# get MD5 fingerprint of the generated public key (PEM format)
#
# header => -----BEGIN PUBLIC KEY-----
[root@localhost key-test]# openssl rsa -in test -pubout -outform PEM | openssl md5 -c
(stdin)= 84:e8:54:5f:16:9f:92:48:67:99:54:65:13:ad:64:ad