È possibile generare la chiave RSA senza passphrase?


84

Sto lavorando con Apache2 e Passenger per un progetto Rails. Vorrei creare un certificato SSL autofirmato a scopo di test.

sudo openssl rsa -des3 -in server.key -out server.key.new

Quando inserisco il comando sopra, dice

writing RSA key
Enter PEM pass phrase:

Se non inserisco la passphrase, sto ottenendo l'errore di seguito

unable to write key
3079317228:error:28069065:lib(40):UI_set_result:result too small:ui_lib.c:869:Yo
u must type in 4 to 1024 characters
3079317228:error:0906406D:PEM routines:PEM_def_callback:problems getting passwor
d:pem_lib.c:111:
3079317228:error:0906906F:PEM routines:PEM_ASN1_write_bio:read key:pem_lib.c:382

È possibile generare una chiave RSA senza fornire pass phrase, dal momento che non sono sicuro di come lo /etc/init.d/httpdscript avvierà il server HTTP senza intervento umano (ad esempio se do una passphrase di 4 caratteri, mi aspetto di fornirlo all'avvio del server HTTP Apache ).


6
La tua riga di comando dice openssldi crittografare una chiave esistente. Sembra qualcosa di diverso da quello che vuoi.
David Schwartz,

Apache httpd può essere configurato per ottenere le passphrase di chiave privata in modo non interattivo; consultare il documento per mod_ssl o, in molti casi, commenti nei file di configurazione forniti / impacchettati. Tuttavia, questo di solito non è più sicuro che lasciare la chiave privata non crittografata, il che è più semplice.
dave_thompson_085,

Risposte:


88

Se stai generando un certificato autofirmato, puoi eseguire sia la chiave che il certificato in un comando in questo modo:

openssl req  -nodes -new -x509  -keyout server.key -out server.cert

Oh, e cosa ha detto @MadHatter nella sua risposta sull'omissione della -des3bandiera.


14
La direttiva sui nodi è il motivo per cui sono qui. (Nessuna crittografia DES della chiave privata)
jorfus

39

Lascia fuori il -des3flag, che è un'istruzione per openssl per crittografare server.key.new (che, per inciso, non è affatto una nuova chiave - è esattamente la stessa di server.key, solo con la passphrase modificata / rimossa) .


21

Il openssl reqcomando dalla risposta di @ Tom H è corretto per creare un certificato autofirmato in server.certincl. una chiave privata RSA senza password in server.key:

openssl req -nodes -new -x509 -keyout server.key -out server.cert

Ecco come funziona. Omettere -des3come nella risposta di @MadHatter non è sufficiente in questo caso per creare una chiave privata senza passphrase. Si è sufficiente per questo scopo nel openssl rsacomando ( "convertire una chiave privata"), cui fa riferimento la @MadHatter e openssl genrsadi comando ( "creare una chiave privata"). Non solo per il openssl reqcomando qui. Abbiamo anche bisogno -nodes("Nessuna crittografia DES di per server.keyfavore!").


17

Utilizzare il -nodesparametro, se questa opzione è specificata, la chiave privata non verrà crittografata, ad esempio:

openssl \
    req \
    -nodes \
    -newkey rsa:2048 \
    -keyout www.example.com.key \
    -out www.example.com.csr \
    -subj "/C=DE/ST=NRW/L=Berlin/O=My Inc/OU=DevOps/CN=www.example.com/emailAddress=dev@www.example.com"

7

Basta eseguirlo di nuovo attraverso openssl

prima genera la chiave con la passphrase

poi openssl rsa -in server.key -out server.key


Questo non funziona su Ubuntu 16.04
Sweetfa,

3
Ho effettuato il downgrade perché questa risposta non è quella richiesta, inoltre il comando richiede un input e non genera una chiave.
Don

L'utente ha già dimostrato di saper generare una chiave. Questa risposta si basa su quella conoscenza, e suggerisco di prendere la chiave appena generata e passarla di nuovo attraverso di openssl qui raggiungere l'obiettivo di ciò che è stato chiesto: generare una chiave senza una passphrase.
darethas,

Funziona per me, opensslsu Windows 10 da GitBash. Grazie per l'informazione.
Green,

0

Utilizzare il comando successivo per generare un file di chiave privata senza password senza crittografia . L'ultimo parametro è la dimensione della chiave privata.

openssl genrsa -out my-passless-private.key 4096

1
Questo NON è senza password. È completamente e interamente a password.
dave_thompson_085,

Stavo sperimentando la posizione dei parametri. Ora va bene. Ho cambiato i luoghi degli ultimi due parametri e testato il comando.
nix,

Ora produce un file non crittografato . Le opzioni dopo il (solo) argomento posizionale vengono ignorate. Guarda il file; non è crittografato. Sostituisci 4096 -des3con 4096 -sillywombate funziona ancora e produce lo stesso formato, ancora non crittografato (ma ovviamente con un valore chiave diverso). Non è possibile avere un file privatekey crittografato senza password e sei anni fa sono state fornite soluzioni corrette per un file non crittografato senza password.
dave_thompson_085,

Hai ragione. @ dave_thompson_085. L'ultimo parametro non ha alcun effetto sul comando. Ho aggiornato la mia risposta. Non genera alcun file di chiave privata codificato in base64 codificato e non protetto da password.
nix,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.