Come utilizzare l'argomento password tramite la riga di comando per openssl per la decrittazione


55

Quindi non è la pratica più sicura passare una password attraverso un argomento della riga di comando. Detto questo, la documentazione di openssl mi ha confuso su come passare un argomento password al comando openssl.

Ecco cosa sto cercando di fare

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d

Questo quindi richiede la chiave di accesso per la decrittazione. Ho cercato i documenti openssl e gli interwebs per cercare di trovare la risposta se volevo semplicemente dare la password al comando senza provare a far eco la password al file. Ho provato ad aggiungere -pass:somepassworde -pass somepasswordsia con e senza virgolette senza alcun risultato.

Alla fine ho capito la risposta e ho visto in altri forum che le persone avevano domande simili, quindi ho pensato di pubblicare la mia domanda e rispondere qui per la comunità.

nota: sto usando openssl versione 0.9.8y

Risposte:


109

La documentazione non era molto chiara per me, ma aveva la risposta, la sfida non era riuscire a vedere un esempio.

Ecco come farlo:

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -pass pass:somepassword

Si noti che la sintassi del comando da riga di comando è sempre -passseguita da uno spazio e quindi dal tipo di passphrase che si sta fornendo, ovvero pass:per passphrase semplice e quindi la passphrase effettiva dopo i due punti senza spazio.

Inoltre, la documentazione specifica che è possibile fornire altre fonti passphrase nel modo seguente:

  • env:somevar per ottenere la password da una variabile di ambiente
  • file:somepathname per ottenere la password dalla prima riga del file nella posizione pathname
  • fd:number per ottenere la password dal numero del descrittore di file.
  • stdin leggere dallo standard input

Ora che ho scritto questa domanda e risposta, sembra tutto ovvio. Ma sicuramente ci è voluto del tempo per capire e avevo visto che ci volevano altri simili, quindi spero che questo possa ridurre quel tempo e rispondere più velocemente per gli altri! :)

Con OpenSSL 1.0.1e il parametro da utilizzare è -passino -passout. Quindi questo esempio sarebbe:

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -passin pass:somepassword


Qual è la differenza tra l'utilizzo di passin o passout? - Ah! Ho appena cercato, stdin vs stdout ovviamente!
dtmland,

Nota che la documentazione per le opzioni di password che si applicano alla maggior parte dei openssl comandi (non solo enc) si trova nella pagina di manuale di openssl (1) anche sul web sotto 'OPZIONI'. Ma non credo al tuo ultimo pezzettino di -passin / out; altri openssl comandi come rsa dsa ec pkey pkcs8 pkcs12 req caquelli usano quelli ma in ogni versione che ho visto incluso 1.0.1e costruito direttamente dagli encusi del sorgente upstream -passo -k -kfilecome documentato (sulla encmanpage).
dave_thompson_085,

Che ne dici del openssl dgstcomando? Come si inserisce la passphrase per quello dalla riga di comando?
frakman1,

4
btw -passinviene utilizzato per fornire una password per il certificato di input ed -passoutè per il nuovo certificato generato
drmad

7

Ho usato -passine -passoutper impostare le password per entrambi i file nell'esempio:

openssl pkcs12 -in voip.p12 -out voip.pem -passin pass:123 -passout pass:321

dove 123e 321sono password


5

In questo momento Ubuntu 14.04 LTS viene fornito con openssl 1.0.1f-1ubuntu2.16

In questa versione il parametro da utilizzare è -k

Esempio:

openssl enc -aes-256-cbc -e -in some_file.unenc -out some_file.enc -k somepassword

1
nel tuo esempio, -k è un'opzione disponibile per il comando 'enc' di openssl (prova man enc), non è un'opzione generale. Se guardi, man opensslvedrai sotto l'intestazione 'Passa le frasi', quali sono le opzioni generali; pass:password, env:var, file:pathname, fd:numberO stdin, come detto in una risposta precedente.
Sibaz,
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.