Ti manca un po 'qui.
ssh-keygen
può essere utilizzato per convertire chiavi pubbliche da formati SSH in formati PEM adatti per OpenSSL. Le chiavi private sono normalmente già memorizzate in un formato PEM adatto per entrambi.
Tuttavia, il comando OpenSSL che mostri genera un certificato autofirmato . Questo certificato non è qualcosa che OpenSSH usa tradizionalmente per qualcosa - e sicuramente non è la stessa cosa di una chiave pubblica.
OpenSSH ha anche il supporto per i certificati, ma è probabile che tu non stia utilizzando questo supporto. Inoltre, questi certificati non sono X.509, quindi sono incompatibili con OpenSSL.
Il certificato contiene informazioni che non sono presenti altrove e ogni certificato è unico e non può essere ricreato a piacimento. Ciò significa che è necessario memorizzare il certificato X.509, oltre alla chiave privata, se si desidera utilizzare la stessa chiave per OpenSSL e OpenSSH.
Se vuoi solo condividere la chiave privata, la chiave OpenSSL generata dal tuo comando di esempio è memorizzata in private.pem
, e dovrebbe già essere in formato PEM compatibile con (recente) OpenSSH. Per estrarre una chiave pubblica compatibile OpenSSH, è sufficiente eseguire:
ssh-keygen -f private.pem -y > private.pub
Se vuoi iniziare da OpenSSH e passare al lato OpenSSL, con un certificato autofirmato (per qualsiasi motivo), ecco come:
$ 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
Da questi, entrambi i file test-user
e test-user-cert.pem
sono fondamentali da conservare, dove come test-user.pub
è sempre possibile ricreare dall'utente test come richiesto.