È 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.