Chiffrer un fichier avec OpenSSL sous GNU/Linux | Angristan
Chiffrer un fichier avec OpenSSL sous GNU/Linux

Chiffrer un fichier avec OpenSSL sous GNU/Linux

Ce billet a été écrit il y a plus d'un an. Il peut contenir des informations erronées.

OpenSSL est un outil open-source présent sur toutes les distributions GNU/Linux qui implémente SSL/TLS et tout un tas d’algorithmes de chiffrement : AES, RSA, DES, Blowfish, etc.

Lorsque vous vous connectez à un site en HTTPS, c’est OpenSSL qui s’occupe du chiffrement de la connexion, si le serveur utilise OpenSSL, comme la quasi-totalité des OS Unix-likeOpenBSD par exemple utilise un fork d’OpenSSL qui se nomme LibreSSL.

OpenSSL peut donc chiffrer des flux mais également des fichiers, et c’est un jeu d’enfant.

Chiffrer un fichier

openssl enc -e -aes-256-cbc -in fichier -out fichier-chiffré
  • enc : on précise qu’on va utiliser un algorithme de chiffrement
  • -e : on chiffre un fichier
  • -aes-256-cbc : l’algorithme, ici AES

Voici tous ceux disponibles :

Chiffrer un fichier avec OpenSSL sous GNU/Linux

  • -in : le nom du fichier à chiffrer
  • -out : le nom de sortie du fichier chiffré

On vous demandera alors un mot de passe. (20+ caractères conseillés)

Et voilà, c’est chiffré :

Chiffrer un fichier avec OpenSSL sous GNU/Linux

Déchiffrer un fichier

openssl enc -d -aes-256-cbc -in fichier-chiffré -out fichier-déchiffré

La même commande qu’auparavant, avec -d à la place de -e pour préciser qu’on déchiffre.

Chiffrer un fichier avec OpenSSL sous GNU/Linux

Spécifier le mot de passe dans la commande

Il est aussi possible d’inclure le mot de passe à utiliser pour chiffrer le fichier. Dans l’absolu, ce n’est pas conseillé puisque si quelqu’un accède à la commande, il pourra voir le mot de passe, mais pour ma part je l’utilise pour les backups du site qui sont envoyés sur un serveur différent.

Pour cela il suffit d’ajouter l’otion -pass pass: suivis du mot de passe dans les 2 commandes ci-dessus.

Exemple :

openssl enc -e -aes-256-cbc -in fichier -out fichier-chiffré -pass pass:Sup3rM0tDePasse

Cette façon marche également mais elle est dépréciée :

openssl enc -e -aes-256-cbc -in fichier -out fichier-chiffré -k Sup3rM0tDePasse

AES est l’agorithme de chiffrement le plus rapide et sécurisé à l’heure actuelle, l’opération ne prends donc généralement que quelques secondes.


Dernière modification le 4 septembre 2017.
guest
11 Commentaires
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
Gaston

Bonjour, voici 2 scripts shell pour ceux qui comme moi on une tête de piaf et oublie les paramètres de la commande en ligne:

crypter.sh

# ****************************************************************************************************
#!/bin/sh
# Chiffrement openSSL AES 256_ le 12/05/2020
# openssl enc -e -aes-256-cbc -in fichier -out fichier-chiffré
# Syntaxe: ./crypter.sh nomdefichier

for i in « [email protected] »
do
echo
echo « ********************************************** »
echo « *** Cryptage de $i en $i.ssl »
echo « ********************************************** »
echo

openssl enc -e -aes-256-cbc -in $i -out « $i ».ssl

echo « Supprimer le fichier original (o/n) »
read reponse

if [ $reponse = « o » ] || [ $reponse = « O » ]
then
#supprime le fichier d origine
rm $i
else
echo
echo  » Fichier $i conservé »
echo
fi
done
#***********************************************************************************

decrypter.sh

#***********************************************************************************
#!/bin/sh
# Chiffrement openSSL AES 256_le 12/05/2020
# openssl enc -d -aes-256-cbc -in fichier-chiffré -out fichier-déchiffré
# Syntaxe: ./decrypter.sh nomdefichier

for i in « [email protected] »
do
echo Décryptage de $i

#supprime l extension .ssl
f_sortie=$(echo $i|sed s/\.ssl//g)

openssl enc -d -aes-256-cbc -in $i -out $f_sortie

echo « Supprimer le fichier original (o/n) »
read reponse

if [ $reponse = « o » ] || [ $reponse = « O » ]
then
#supprime le fichier d origine
rm $i
else
echo
echo  » Fichier $i conservé »
echo
fi
done
#***********************************************************************************
En esperant que cela puisse servir a d’autres.
G.

Gaston

Désolé, le copier-collé a supprimé l’indentation des lignes!

Ferby QUETTANT

Comment pourrais je chiffrer par le biais d’un certificat et non un mot de passe Certificat Csr (Clé privé + Clé public) ?

Zer00CooL

Si je chiffre ainsi sur ma debian, je n’arrive pas à décompresser le fichier depuis ma Mint.
Mais, si j’utilise une VM debian, alors oui le fichier est décompressé.
Je ne comprend pas pourquoi ma mint 18.3 refuse de décompresser mon archive créée sous Stretch 9.5.

tar cz fichier_ou_dossier|openssl enc -aes-256-cbc -pass pass:LeMotDePasse -e > out.tar.gz.enc
Quand je compresse une archive, je peux lire :
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.

fatima

moi aussi j’avait le mm blem utilise cette commande elle marche sur openssl> enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -in filedemsg.txt -out filecrypt.txt -k cle.key
le filedemsg t’a deja cree donc ecri le nom de ton file.txt et le filecrypt ca va directement le msg crypter enregister dans le filecrypt.txt apres sort de openssl et voir le msg crypter par cat filecrypt.txt et tu va donc trouver le msg crypter

jean

Merci !

lanodan

OpenSSL est *pas* sur toutes les GNU/Linux et heuresement, sous gentoo on choisit, sous void linux c’est par défault et y’en à sans doute encore ;3 (par contre LibreSSL reste en majeur partie compatible avec les commandes openssl)

YdK3O

Ah et sinon
gpg –cipher-algo AES –symmetric top.secret
ou tout simplement gpg -c (Si on considère cast5 comme sufisant) 🙂

YdK3O

Argument -k déprecated !
Utilisez -pass , cf le man, plusieurs possibilité, 1st line of a file, in line, env var… 🙂