Aller au contenu principal

Chiffrer des données sensibles avec SSL et Docker

Chiffrez et déchiffrez vos fichiers sensibles avec l'image OpenSSL dans Docker. Inclut des scripts simples pour Linux et Windows pour protéger vos secrets avant de les stocker dans Git ou dans le cloud.

· 5 minutes de lecture
Voir la source
Christophe
Amoureux de Markdown, WSL et Docker ~ Curieux insatiable.
Cet article existe aussi en anglais — lire la version originale.

Traduction automatique

Cette traduction a été produite par une IA. Elle peut contenir des contresens ou des maladresses, en particulier sur les termes techniques. En cas de doute, consultez l'article de référence en anglais — c'est lui qui fait foi.

Cet article a plus d'un an, mais il a été relu le 30 juillet 2026 — son contenu est toujours exact.

Chiffrer des données sensibles avec SSL et Docker

⚡
TL;DR

Cet article partage des scripts Linux et DOS qui chiffrent/déchiffrent des fichiers avec OpenSSL via l'image Docker alpine/openssl (AES-256-CBC avec PBKDF2), pratiques pour stocker des secrets en toute sécurité dans des repositories Git ou sur des disques cloud. Il montre aussi comment adapter le script de déchiffrement pour afficher le contenu déchiffré uniquement dans la console, sans jamais l'écrire sur le disque.

Pour 1 000 raisons ou plus, vous voulez chiffrer un fichier contenant du texte. Quel logiciel installer ? Eh bien... aucun autre que Docker !

En utilisant une image Docker Alpine/OpenSSL, c'est si simple de chiffrer/déchiffrer des fichiers avec OpenSSL.

À quoi ça ressemble​

Imaginez un fichier texte comme secrets.md avec ce contenu :

# My password

## My secret site

### FTP server

* Name: `127.0.0.1`
* Login: `admin`
* Password: `admin`

### Admin interface

* URL: `https://..../admin`
* Login: `admin`
* Password: `admin`

Ce fichier contient un document en markdown listant des identifiants et mots de passe pour différents services — un serveur FTP et une interface d'administration. Il s'agit d'un fichier de notes personnelles regroupant les accès à ces systèmes.

Et maintenant, la seule commande qui compte vraiment dans cet article :

>user@machine: ~/yourproject

Et voici le fichier secrets_encrypted.md qu'elle vient de créer :

U2FsdGVkX18jyyHAiaDcwolgvrCmB9SutNFhOFosDZvYA+t/8F5PWsxU+YIb0xLj
/0swl1Mvh9XBcg3FwpQn5CGm5ltb3zKiExPO8WoTuYOmlJj2PN5eLJv3GWVVJ8/t
q31xBBAlbI0k+a3pWiETl1qEmh4hwc4jeC5NOByYSAojiIdCNF0W5+VVkUlBeKGb
sv8tpDWEb/dgHrfFPtZD5MqeNQw71/ndORZC1ZDIT/Ju6O7a6rd9ph0aQuPz49PU
SzDUePUgn9wbR0tZvNM1JA1LkN1kDaguJ940TdKns+Q=

Ce fichier contient une chaîne encodée en Base64 qui représente probablement des données chiffrées avec la méthode Salted (indiquée par le préfixe 'Salted__'). Il s'agit d'un artifact binaire ou d'une clé/secret stocké sous forme textuelle, plutôt que du code source exécutable.

À partir de maintenant, vous pouvez supprimer secrets.md puisque vous avez la version chiffrée.

Pourquoi ça fonctionne​

  • Le chiffrement est AES-256-CBC, la clé est dérivée de votre mot de passe avec PBKDF2 et un salt : deux chiffrements du même fichier avec le même mot de passe ne produisent pas les mêmes octets.
  • Tout se passe dans le container alpine/openssl, supprimé juste après (--rm) : pas d'OpenSSL, aucun matériel de clé et aucun fichier temporaire laissé sur votre machine.
  • Le flag -a demande du Base64 plutôt que du binaire, c'est pourquoi le résultat est du texte que vous pouvez committer, coller dans un ticket ou déposer sur un disque cloud.

Les scripts​

Plutôt que de taper cette ligne à chaque fois, mettez-la dans un script. Créez un nouveau fichier sur votre disque avec ce contenu. Voici le script encrypt.sh, et voici le script decrypt.sh.

📦 Mise en place du projet : docker-ssl-encrypt
Aide

Besoin d'aide ? Cliquez sur le bouton « Aide » ci-dessus pour les instructions de mise en place.

Mettez à jour la variable MY_PASSWORD dans les deux scripts pour utiliser le vôtre.

Pour récupérer le contenu d'origine, lancez simplement le script decrypt.sh : vous allez déchiffrer le fichier secrets_encrypted.md et obtenir un nouveau fichier appelé secrets_decrypted.md.

Les deux mêmes scripts pour DOS (cliquez pour les détails)

À titre d'illustration, le script de chiffrement DOS, encrypt.cmd, vous demandera un mot de passe (puisque le paramètre -k ne fait pas partie de l'instruction). Si le fichier chiffré a bien été créé, l'original sera supprimé de votre disque.

Le script de déchiffrement, decrypt.cmd, vous demandera le mot de passe et affichera le contenu déchiffré dans la console (puisque le paramètre -out ne fait pas partie de l'instruction).

📦 Mise en place du projet : docker-ssl-encrypt
Aide

Besoin d'aide ? Cliquez sur le bouton « Aide » ci-dessus pour les instructions de mise en place.

Déchiffrer dans la console, sans écrire de fichier​

Éditez le script decrypt.sh (ou decrypt.cmd) et cherchez -out /data/secrets_decrypted.md. Supprimez cette partie.

Maintenant, quand vous lancerez decrypt.sh, le contenu déchiffré sera affiché uniquement dans la console, rien ne sera écrit sur le disque. Vos secrets sont en sécurité.

Cas d'usage​

En plus du simple besoin de chiffrement, un cas d'usage est de stocker des fichiers confidentiels dans des systèmes en ligne, par exemple un système de versioning comme Github, ou sur des disques cloud (par exemple Google Drive).

Chiffrer ne suffit pas

Il suffit d'un git add oublié pour qu'un secret en clair finisse dans votre historique. Ajoutez un filet de sécurité : Git - pre-commit-hooks liste des hooks comme Gitleaks et Trufflehog qui refusent le commit quand un identifiant est détecté.

Les arguments d'openssl (passez cette section si vous voulez juste l'utiliser)​

La commande enc d'openssl accepte ces arguments :

OptionDescription
encEncodage avec des ciphers
-aes-256-cbcLe cipher de chiffrement à utiliser
-saltRenforce le chiffrement
-pbkdf2Génère une dérivation de clé PBKDF2 à partir du mot de passe
-aLes données chiffrées seront en Base64 et non en binaire
-dAction de déchiffrement (si -d est absent, on chiffre)
-inIndique le fichier d'entrée
-outIndique le fichier de sortie
-kFournit le mot de passe à utiliser

Conclusion​

Un fichier contenant vos identifiants FTP est devenu cinq lignes de Base64, grâce à un outil que vous n'avez jamais installé et qui n'existe plus sur votre machine. Deux scripts, un mot de passe à retenir, et vos secrets peuvent désormais voyager par Git ou sur un disque cloud.

Le chiffrement protège le fichier auquel vous avez pensé ; les fichiers .env éparpillés dans vos projets sont ceux que vous allez oublier, et comparer des fichiers .env en ligne de commande est un bon moyen de garder un œil dessus.


Cet article vous a-t-il été utile ?
Avez-vous suivi les étapes de cet article ?