Vous avez tout à fait raison de vouloir crypter votre fichier de paramètres, tout en conservant le fichier dans le contrôle de version. Comme vous le mentionnez, la meilleure solution serait que le Git de manière transparente crypter certains fichiers sensibles lorsque vous appuyez sur eux, de sorte que localement (c'est à dire sur toute la machine de votre certificat de), vous pouvez utiliser le fichier de paramètres, mais Git ou Dropbox ou celui qui est le stockage de vos fichiers sous VC ne pas avoir la capacité de lire les informations en clair.
Tutoriel sur la Transparence de Chiffrement/Déchiffrement, au cours de Push/Pull
Ce gist https://gist.github.com/873637 montre un tutoriel sur la façon d'utiliser le Git du smudge/nettoyer le filtre de pilote avec openssl pour chiffrer de manière transparente poussé fichiers. Vous avez juste besoin de faire un peu de configuration initiale.
Résumé de la Façon dont il Fonctionne
Vous aurez essentiellement être la création d'un .gitencrypt
le dossier contenant les 3 scripts bash,
clean_filter_openssl
smudge_filter_openssl
diff_filter_openssl
qui sont utilisés par Git pour le décryptage, le cryptage, et le soutien Git diff. Un maître-mot de passe et le sel (fixe!) est définie à l'intérieur de ces scripts, et vous DEVEZ vous assurer que .gitencrypt n'est jamais vraiment poussé.
Exemple clean_filter_openssl
script:
#!/bin/bash
SALT_FIXED=<your-salt> # 24 or less hex characters
PASS_FIXED=<your-passphrase>
openssl enc -base64 -aes-256-ecb -S $SALT_FIXED -k $PASS_FIXED
Similaire pour smudge_filter_open_ssl
et diff_filter_oepnssl
. Voir Les Gist.
Votre repo avec des informations sensibles doivent avoir un .gitattribute fichier (non chiffré et inclus dans le repo) qui fait référence à la .gitencrypt répertoire (qui contient tout ce qui Git besoins pour crypter/décrypter le projet de manière transparente) et qui est présent sur votre machine locale.
.gitattribute
le contenu:
* filter=openssl diff=openssl
[merge]
renormalize = true
Enfin, vous devrez également ajouter le contenu suivant votre .git/config
le fichier
[filter "openssl"]
smudge = ~/.gitencrypt/smudge_filter_openssl
clean = ~/.gitencrypt/clean_filter_openssl
[diff "openssl"]
textconv = ~/.gitencrypt/diff_filter_openssl
Maintenant, lorsque vous appuyez sur le référentiel contenant vos informations sensibles à un dépôt distant, les fichiers seront chiffrés de manière transparente. Lorsque vous tirez sur une machine locale qui a la .gitencrypt répertoire contenant votre mot de passe), les fichiers de manière transparente décrypté.
Notes
Je tiens à noter que ce tutoriel n'est pas de décrire une façon, à seulement crypter votre fichier de paramètres. De cette manière transparente chiffrer l'intégralité d'un référentiel qui est poussé à la distance de CR d'accueil et de décrypter l'ensemble du référentiel de sorte qu'il est entièrement décrypté localement. Pour obtenir le comportement que vous voulez, vous pouvez placer des fichiers sensibles pour un ou plusieurs projets dans un sensitive_settings_repo. Vous pourriez étudier comment cette technique de chiffrement transparent fonctionne avec des submodules http://git-scm.com/book/en/Git-Tools-Submodules si vous avez vraiment besoin de le fichiers sensibles dans le même référentiel.
L'utilisation d'un fixe phrase pourrait théoriquement conduire à la force brute des vulnérabilités si les pirates ont eu accès à de nombreux chiffré repos/fichiers. OMI, la probabilité pour que ce soit très faible. Comme une note au bas de ce tutoriel mentionne pas l'utilisation d'un mot de passe multiterme entraînera des versions locales de pensions de titres sur des machines différentes, toujours montrant que des modifications ont eu lieu avec "git status".