厨师在解密数据包价值时抱怨

时间:2016-07-13 01:20:16

标签: encryption chef chef-recipe chef-solo consul

我正在尝试在配方中使用加密数据包,如下所示:

  secret = Chef::EncryptedDataBagItem.load_secret("/etc/chef/encrypted_data_bag_secret")
  encryptkey = Chef::EncryptedDataBagItem.load("tokens", "encryptkey", secret)

我的数据包如下所示:

{
  "id": "encryptkey",
  "encrypt": "FjJyopVcfoJNIsYk2xDBjA=="
}

但是,我一直收到以下错误:

   ERROR: Error decrypting data bag value: 'bad decrypt'. Most likely the provided key is incorrect

2 个答案:

答案 0 :(得分:0)

不要说明显而易见的,但这意味着您没有正确创建加密数据包或密钥错误。由于我们没有密钥或知道您运行的命令,因此很难说出哪些命令。也真的停止使用那个API,我现在已经说过两个问题了。

此外,如果您连续遇到重大的UX问题,那么SO就是一个不好的媒介。在IRC或Slack上给我打分,我们可以更快地完成这项任务。

答案 1 :(得分:0)

问题可能是由于 \ n或\ r 字符引起的。请按照以下步骤操作:

  1. 创建秘密 $openssl rand -base64 512 | tr -d '\r\n' > <secret-file>

  2. 使用以下命令上载数据项 $knife data bag from file <data-bag> </path/to/data-bag-item.json> --secret-file <secret-file>

  3. 从Chef-server获取数据袋项目 $knife data bag show <data-bag> <data-bag-item-id> 它将以以下格式返回加密的数据:

id: mysql
pass:
cipher:         aes-256-cbc
encrypted_data: JZtwXpuq4Hf5ICcepJ1PGQohIyqjNX6JBc2DGpnL2WApzjAUG9SkSdv75TfKSjX4
iv:             VYY2qx9b4r3j0qZ7+RkKHg==
version:        1
user:
cipher:         aes-256-cbc
encrypted_data: 10BVoNb/plkvkrzVdybPgFFII5GThZ3Op9LNkwVeKpA=
iv:             uIqKHZ9skJlN2gpJoml6rQ==
version:        1
  1. 在解密Chef-server的数据时使用--secret-file arg $knife data bag show <data-bag> <data-bag-item-id> --secret-file <secret-file>
  2. 在配方中,使用以下语法:
data = data_bag_item(:<data-bag>, '<data-bag-id>', IO.read(Chef::Config[:encrypted_data_bag_secret]))
log "result1: #{data['id']}"
log "result2: #{data['user']}"
  1. 要在节点上运行配方,请使用scp命令将秘密文件移动到节点的/ etc / chef / 位置。 不要复制/粘贴密钥。。文件在节点上可用后,将其重命名为“ encrypted_data_bag_secret”
$mv /etc/chef/secret /etc/chef/encrypted_data_bag_secret
  1. 如果未指定'secret',则厨师客户端将在client.rb文件中crypto_data_bag_secret设置所指定的路径中寻找秘密。默认情况下,它是 / etc / chef / encrypted_data_bag_secret >。

希望这对您有帮助。