web-dev-qa-db-fra.com

Comment utiliser l'argument de mot de passe dans la commande en ligne pour déchiffrer

Donc, ce n’est pas la pratique la plus sécurisée de passer un mot de passe via un argument en ligne de commande. Cela dit, la documentation de openssl m'a confondu sur la façon de passer un argument de mot de passe à la commande openssl.

Voici ce que j'essaie de faire

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

Ceci demande ensuite la clé de passe pour le déchiffrement. J'ai cherché dans les documents openssl et les interwebs pour essayer de trouver la réponse si je voulais simplement donner le mot de passe à la commande sans essayer de renvoyer le mot de passe au fichier. J'ai essayé d'ajouter -pass:somepassword et -pass somepassword avec et sans guillemets en vain.

J'ai finalement trouvé la réponse et vu que sur d'autres forums les gens avaient des questions similaires, alors j'ai pensé poster ma question et ma réponse ici pour la communauté.

note: j'utilise la version 0.9.8y de openssl

50
David Sulpy

La documentation n'était pas très claire pour moi, mais il y avait la réponse, le défi était de ne pas voir un exemple.

Voici comment le faire:

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

Notez que la syntaxe de commande en ligne de commande est toujours -pass suivie d'un espace puis du type de phrase secrète que vous indiquez, c'est-à-dire pass: pour la phrase secrète simple, puis de la phrase secrète après les deux points sans espace.

De plus, la documentation indique que vous pouvez fournir d'autres sources de phrase secrète en procédant comme suit:

  • env:somevar pour obtenir le mot de passe d'une variable d'environnement
  • file:somepathname pour obtenir le mot de passe de la première ligne du fichier à l'emplacement pathname
  • fd:number pour obtenir le mot de passe à partir du numéro de descripteur de fichier.
  • stdin pour lire depuis l'entrée standard

Maintenant que j'ai écrit cette question et cette réponse, tout semble évident. Mais cela a certainement pris du temps à comprendre et j’avais vu que cela prenait du temps similaire, alors espérons que cela puisse réduire ce temps et répondre plus rapidement aux besoins des autres! :)

Avec OpenSSL 1.0.1e, le paramètre à utiliser est -passin ou -passout. Donc, cet exemple serait:

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

96
David Sulpy

J'ai utilisé -passin et -passout pour définir des mots de passe pour les deux fichiers dans l'exemple:

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

123 et 321 sont un mot de passe

5
Mikhailo Karpenko

Actuellement, Ubuntu 14.04 LTS est livré avec openssl 1.0.1f-1ubuntu2.16

Dans cette version, le paramètre à utiliser est -k

Exemple:

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