【问题标题】:Continuous deployment with public github repositories and travis encrypt使用公共 github 存储库和 travis 加密进行持续部署
【发布时间】:2018-02-06 15:18:44
【问题描述】:

我们正在考虑为当前使用 Capistrano 部署的 ruby​​ on rails 应用程序设置持续部署。它们存储在 github 上的公共 repo 中。

我已阅读有关如何使用 travis-ci.org 执行此操作的文档,看起来您执行的操作类似于以下内容:-

gem install travis
travis login
travis encrypt DEPLOY_KEY="password" --add
openssl aes-256-cbc -k "password" -in deploy_id_rsa -out config/deploy_id_rsa_enc_travis -a

然后将这个添加到 travis.yml 文件中

after_success:
  - "openssl aes-256-cbc -k $DEPLOY_KEY -in config/deploy_id_rsa_enc_travis -d -a -out config/deploy_id_rsa"
  - "bundle exec cap deploy"

这个到你的 deploy.rb 文件

set :ssh_options, keys: ["config/deploy_id_rsa"] if File.exist?("config/deploy_id_rsa")

现在我的问题是,这如何保证私钥的安全。我猜你只将以下文件提交到 github 公共仓库。

config/deploy_id_rsa_enc_travis
travis.yml
deploy.rb

并且该私钥应该被删除,而不是提交。

还有什么需要注意的吗?

【问题讨论】:

    标签: capistrano travis-ci


    【解决方案1】:

    您提供的示例代码使用名为deploy_id_rsa 的私钥并使用密码对其进行加密。然后该密码作为“秘密”存储在 Travis 中。此密钥的加密版本称为deploy_id_rsa_enc_travis。您可以安全地提交此文件:想法是只有拥有密码的人(即 Travis)才能解密它。

    我会注意的:

    1. 选择一个复杂且不可能猜到的密码来执行加密。
    2. Travis 的秘密有多“秘密”?例如,$DEPLOY_KEY(密码)是否有机会回显到控制台输出?有人可以登录 Travis 并查看其中的秘密吗?
    3. 专门为此目的生成deploy_id_rsa。不要重复使用现有密钥。
    4. 确保密钥对应于已锁定的部署用户(例如,没有 sudo 功能)。
    5. 切勿提交原始的未加密密钥:deploy_id_rsa。

    同时考虑moving your Capistrano deployment to a separate, private repo。 Capistrano 允许您将应用程序和部署配置保存在不同的位置。这样一来,关于您的服务器基础架构的信息将不会对公众可见。

    【讨论】:

    • 非常感谢....关于 Capistrano 私人回购的有趣想法。未来需要考虑的事情。
    猜你喜欢
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    相关资源
    最近更新 更多