美文网首页
rails 密钥管理 - 部署至宿主机

rails 密钥管理 - 部署至宿主机

作者: RickyWu585 | 来源:发表于2022-08-22 09:03 被阅读0次

    核心文件:master.key(主密钥)

    • Web应用中的对称加密
    JWT 加密解密需要一个 key1
    SessionID 加密解密需要一个 key2
    (上述就是keys)
    
    • 那么 Key 们存在哪里:Rails 帮我们想好了
    1. 先汇总:将各个keymaster.key进行加密生成encrypted信息;使用的时候再通过encrypted信息进行解密得到所有的key
    master.key + keys => encrypted
    encrypted + master.key => keys
    
    1. 运行rails命令生成一个yml临时文件,这个文件定义一系列 key,关闭该文件rails就会删除该临时文件,然后会生成两个文件:credentials.yml.enc(加密后的encrypted,可传到git)master.key(不能传到git)
    EDITOR="code --wait" bin/rails credentials:edit(在vscode中打开)
    or
    bin/rails credentials:edit(在vim中打开)
    
    1. 还有问题, key 们被删了,那怎么读写 key 们呢,用控制台:
    • 打开控制台:
    bin/rails console
    or
    bin/rails c
    
    • 输入代码:
    Rails.application.credentials.xxx
    Rails.application.credentials.config(得到所有)
    
    1. 还有问题,还是需要把 master.key 复制给生产环境和实习生,不安全。因此Rails支持多环境秘钥,即使泄露了开发环境的,生产环境也不会受影响。运行如下命令生成生产环境的对应的文件:production.key(和之前的master,key类似)production.yml.enc
    EDITOR="code --wait" bin/rails credentials:edit --environment production
    
    1. 读生产环境的key:
     RAILS_ENV=production bin/rails c
    
    1. production.key 复制到生产环境,不要给实习生
    2. 最后可以删掉production.key(但要备份)
    3. 最终结果:
    • 开发环境:
    使用master.key和credentials.yml.enc
    master.key 被 git ignore
    如果 .enc 不被ignore,那么多人就共用 master.key
    如果 .enc 被ignore,那么每个人就创建自己 maskter.key (注:每个人的key例如jwt的key不一定要一样,只要符合对应的生产规则即可,因此每个人可以生产不一样的master.key)
    
    • 生产环境:
    使用 production.key 和 production.yml.enc
    .key 被 ignore,内容写到环境变量
    .enc 不被 ignore
    读取key 们的方式和开发环境一样
    
    1. 把开发环境的key_base复制给生产环境,然后开发环境的删掉,重新生成一套,不然生产的就相当于暴露了
    2. setup_host时候把 .key 作为环境变量传过去,不然服务器解析不了
    3. 服务器运行:
     DB_HOST=db-for-mangosteen DB_PASSWORD=123456 RAILS_MASTER_KEY=6de8a9b8bace9454c87e34d79e6ac4f9 mangosteen_deploy/setup_host.sh
    
    docker exec -it mangosteen-prod-1 bin/rails db:create db:migrate
    

    (注:改端口的话,在puma.rbport ENV.fetch("PORT") { 3030 }地方改)

    相关文章

      网友评论

          本文标题:rails 密钥管理 - 部署至宿主机

          本文链接:https://www.haomeiwen.com/subject/hbnvgrtx.html