[RUBY] Environnement de production et credentials.yml.enc

Ce que je veux transmettre dans cet article

** Vérifiez attentivement ** avant de traiter des informations confidentielles dans votre environnement de production avec des informations d'identification. Absolument aucune copie.

Connaissances de base sur le cryptage et le décryptage

** ~ Environnement de développement ~ **

$config quand rails nouveau/master.informations d'identification avec clé.yml.enc semble être créé.


 Ensuite, utilisez cette master.key pour crypter et décrypter.
 (Conservez le master.key dans un endroit sûr)

 Exécutez la commande suivante pour modifier les informations confidentielles.

$ rails credentials:edit #master.Si la clé n'existe pas, exécutez-la pour en créer une nouvelle.



 ** ~ Environnement de production ~ **
 Vous aurez également besoin de secret_key_base pour le chiffrement et le déchiffrement.
 Créez-le localement en exécutant la commande `` `` $ rails secret```.
 Placez au préalable la clé maître locale sur le serveur.

# Soyez prudent dans l'environnement de production
 J'ai mentionné plus tôt que master.key est utilisé pour crypter et décrypter credentials.yml.enc. Ce master.key n'est pas géré par Git car il est enregistré dans gitignore par défaut.

 C'est important d'ici.
 Même si vous clonez le référentiel git avec EC2, ce master.key ne viendra pas sur le serveur comme une évidence.
 Si j'oublie cela et que j'essaye d'ajouter les informations secrètes de l'environnement de production et d'exécuter la commande `` `` $ rails credentials: edit``` ... Puisqu'il n'y a pas de master.key sur le serveur, il sera nouvellement généré. ..

 À ce stade, le master.key local et le master.key du serveur sont différents et credentials.yml.enc ne peut pas être déchiffré. Oh, c'est dur.

Couldn't decrypt config/credentials.yml.enc. Perhaps you passed the wrong key?

 Une telle erreur,

ActiveSupport::MessageEncryptor::InvalidMessage


 J'obtiens cette erreur.

## Je veux déchiffrer à nouveau les informations d'identification
 Tout ce que vous avez à faire est de mettre le master.key local sur le serveur.


 Si vous perdez master.key, supprimez config / credentials.yml.enc puis utilisez la commande suivante
 Il semble en générer un nouveau.
 Cependant, veuillez noter que tout le contenu des informations d'identification sera époustouflé.

$ sudo EDITOR=vim rails credentials:edit


# Rails 6 ou version ultérieure et credentilas.yml.enc
 À partir de 6, les informations confidentielles peuvent être séparées pour chaque environnement. (Fête)

 Lorsque vous souhaitez ajouter des informations dans l'environnement de production, exécutez la commande suivante.
 Changement après environnement en fonction de l'environnement.

$ rails credentials:edit --environment production


 Cette commande crée config / credentials / production.yml.enc et config / credentials / production.key. L'environnement correspondant est décrit respectivement dans le nom du fichier et le nom de la clé.
 Il vous suffit de donner production.key au serveur.

 Même dans ce cas, soyez prudent lorsque vous manipulez master.key et secret_key_base.




# référence
 [ActiveSupport :: MessageEncryptor :: InvalidMessage in Rails 5.2](https://qiita.com/scivola/items/cc06ddbfd94d3118f693)

 [Kihon de credentials.yml.enc ajouté à partir de Rails 5.2](https://qiita.com/NaokiIshimura/items/2a179f2ab910992c4d39)

 [Gérez les mots de passe, etc. avec les nouvelles fonctionnalités de Rails 5.2](https://thr3a.hatenablog.com/entry/20180408/1523156956)

 [[Ruby / Rails] Automatisez le déploiement du travail avec Capistrano](https://shikiyura.stars.ne.jp/blog/mac/ruby_rails-automate-deployment-by-capistrano/)

[Add support for multi environment credentials.](https://github.com/rails/rails/pull/33521)


 [Utiliser les informations d'identification multi-environnement de Rails 6](http://saku.hatenadiary.com/entry/2019/11/05/093755)






Recommended Posts

Environnement de production et credentials.yml.enc
[Note] Mise à jour de l'environnement de production [heroku]
Créer une base de données dans un environnement de production
Construction de Rails 6 et environnement PostgreSQL avec Docker
Qu'est-ce que Java et l'environnement de développement (MAC)
L'image n'est pas affichée dans l'environnement de production
[Rails] Réinitialisez la base de données dans l'environnement de production
Installez Docker et créez un environnement d'exécution Java
Résumé de la construction de l'environnement avec rvm et postgresql
Construction d'un environnement Java minimal et Hello World