我如何解密特拉维斯CI中的安全环境变量



我有一些安全的(加密的)环境变量的.travis.yml。现在我需要解密这些变量,以便在不同的项目中使用它们。

是否有简单的方法来做到这一点(除了触发提交并在控制台输出中打印它们)?

您无法从我所理解的本地解密,但您可以恢复密钥/值。从本质上讲,它们必须被解密才能在构建过程中使用。

  1. 转到当前项目的最后一次构建。
  2. 选择"Debug Build"
  3. 使用提供的用户和主机***********@to2.tmate.io SSH到实例
  4. 进入远程shell后,运行env

这将打印所有的环境变量,所以你将不得不挖掘你的安全变量,但他们将在那里。

我不认为你能解密它。公钥是用来加密数据的,只能用travis没有提供的私钥解密。

Daniel的答案可能会起作用,但它依赖于Travis CI的Debug Mode,由于安全考虑,默认情况下该模式对公共存储库是禁用的。

实际上还有另一种方法。它的灵感来自于这篇博客文章"恢复丢失的TRAVISCI变量-两种方法"。

先解释一下:

  • 为什么可能?因为Travis-CI必须将其解密为纯文本并将其设置为环境变量,以便在他们的机器上工作。这是你恢复它的机会。
  • 然而echo $SECRET不会从控制台日志中显示它,因为Travis-CI扫描所有标准输出并过滤该特定值。(咄。)这根本不是一件坏事,因为您不希望在控制台日志中显示您恢复的秘密,无论如何都可以使用。解决方案是使用另一个KNOWN_SECRET加密它,在您需要安装的命令行工具ccrypt的帮助下。
  • 最后,您需要另一个工具对加密的秘密进行编码,以便它在控制台日志中显示为正常字符。命令行工具base64会派上用场,因为它已经在Travis CI的构建机器上可用,并且在您的本地git bash(如果您在Windows上使用git)或shell(如果您使用Linux)中可用。

TL;DR:就像1-2-3一样简单!

  1. 添加或修改您的.travis.yml以包含以下内容。
sudo: required
install:
  - sudo apt-get install -y ccrypt
  - echo $UNKNOWN_SECRET > info.txt
  - ccencrypt info.txt -K $KNOWN_SECRET
  - cat info.txt.cpt | base64
  • 将上述更改提交到实验分支,并触发Travis CI运行。浏览控制台日志,找到那行输出,比如A1B2C3D4...

  • 在本地机器上运行:

  • echo `A1B2C3D4...` | base64 -d > info.txt.cpt
    sudo apt-get install -y ccrypt  # If you haven't already
    ccrypt –d info.txt.cpt
    # When prompt, type in the KNOWN_SECRET, and then you will have info.txt in plain text
    

    相关内容

    • 没有找到相关文章

    最新更新