Te estás perdiendo un poco aquí.
ssh-keygen
se puede usar para convertir claves públicas de formatos SSH a formatos PEM adecuados para OpenSSL. Las claves privadas normalmente ya están almacenadas en un formato PEM adecuado para ambas.
Sin embargo, el comando OpenSSL que muestra genera un certificado autofirmado . Este certificado no es algo que OpenSSH usa tradicionalmente para nada, y definitivamente no es lo mismo que una clave pública solamente.
OpenSSH también tiene soporte para certificados, pero es probable que no estés usando este soporte. Además, estos certificados no son X.509, por lo que son incompatibles con OpenSSL.
El certificado contiene información que no está presente en ningún otro lugar y cada certificado es único y no se puede volver a crear a voluntad. Esto significa que necesita almacenar el certificado X.509, además de la clave privada, si desea usar la misma clave tanto para OpenSSL como para OpenSSH.
Si solo desea compartir la clave privada, la clave OpenSSL generada por su comando de ejemplo se almacena en private.pem
, y ya debería estar en formato PEM compatible con OpenSSH (reciente). Para extraer una clave pública compatible con OpenSSH, simplemente puede ejecutar:
ssh-keygen -f private.pem -y > private.pub
Si desea comenzar desde OpenSSH y avanzar hacia el lado de OpenSSL, con un certificado autofirmado (por cualquier motivo), a continuación le indicamos cómo:
$ ssh-keygen -f test-user
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in test-user.
Your public key has been saved in test-user.pub.
The key fingerprint is:
ff:36:f1:74:c7:0d:4e:da:79:5c:96:27:2c:2c:4e:b6 naked@tink
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| . . .|
| + o =.+|
| S+ o * B+|
| .E o = B|
| . + o.|
| .o . |
| ... |
+-----------------+
$ openssl req -x509 -days 365 -new -key test-user -out test-user-cert.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
$ ls -l test-user*
-rw------- 1 naked naked 1675 Mar 18 21:52 test-user
-rw-r--r-- 1 naked naked 1229 Mar 18 21:53 test-user-cert.pem
-rw-r--r-- 1 naked naked 392 Mar 18 21:52 test-user.pub
De estos, los archivos test-user
y test-user-cert.pem
son fundamentales para preservar, donde siempre se puede recrear test-user.pub
desde el usuario de prueba según sea necesario.