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
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'environnementfile: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 standardMaintenant 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
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
où 123
et 321
sont un mot de passe
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