Je préférerais utiliser l' openssl
utilitaire car il semble être assez omniprésent.
Convertissez la clé publique et la clé privée RSA au format PEM:
$ openssl rsa -in ~/.ssh/id_rsa -outform pem > id_rsa.pem
$ openssl rsa -in ~/.ssh/id_rsa -pubout -outform pem > id_rsa.pub.pem
Chiffrement d'un fichier avec votre clé publique:
$ openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem -in file.txt -out file.enc
Déchiffrer le fichier avec votre clé privée:
$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc -out file.txt
Mais, comme Gilles l'a commenté ci-dessus, cela ne convient que pour crypter des fichiers plus petits que votre clé publique, vous pouvez donc faire quelque chose comme ceci:
Générez un mot de passe, cryptez le fichier avec lui de manière symétrique et cryptez le mot de passe avec votre public, en l'enregistrant dans le fichier:
$ openssl rand 64 |
tee >(openssl enc -aes-256-cbc -pass stdin -in file.txt -out file.enc) |
openssl rsautl -encrypt -pubin -inkey id_rsa.pub.pem -out file.enc.key
Déchiffrez la phrase secrète avec votre clé privée et utilisez-la pour déchiffrer le fichier:
$ openssl rsautl -decrypt -inkey id_rsa.pem -in file.enc.key |
openssl enc -aes-256-cbc -pass stdin -d -in file.enc -out file.txt
Vous vous retrouverez avec deux fichiers, votre fichier crypté et votre phrase secrète cryptée, mais mis dans un script, cela fonctionnerait bien.
Vous pouvez même ajouter un tar cvf file file.enc file.enc.key
pour ranger.
De manière optimale, vous maximiseriez la taille de votre phrase secrète tout en changeant rand 64
la taille de votre clé publique.