我正在尝试在配方中使用加密数据包,如下所示:
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
答案 0 :(得分:0)
不要说明显而易见的,但这意味着您没有正确创建加密数据包或密钥错误。由于我们没有密钥或知道您运行的命令,因此很难说出哪些命令。也真的停止使用那个API,我现在已经说过两个问题了。
此外,如果您连续遇到重大的UX问题,那么SO就是一个不好的媒介。在IRC或Slack上给我打分,我们可以更快地完成这项任务。
答案 1 :(得分:0)
问题可能是由于 \ n或\ r 字符引起的。请按照以下步骤操作:
创建秘密
$openssl rand -base64 512 | tr -d '\r\n' > <secret-file>
使用以下命令上载数据项
$knife data bag from file <data-bag> </path/to/data-bag-item.json> --secret-file <secret-file>
从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
$knife data bag show <data-bag> <data-bag-item-id> --secret-file <secret-file>
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']}"
$mv /etc/chef/secret /etc/chef/encrypted_data_bag_secret
希望这对您有帮助。