我正在尝试在配方中使用加密数据包,如下所示:
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
问题可能是因为 或者 性格。请按照以下步骤操作:
创造秘密
$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>
从厨师服务器获取数据包项目
$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
希望这对您有帮助。
我已经看到了一些解决方案。就我而言,问题在于密钥和数据包文件格式。因为 Windows 最初以 dos 格式保存一些文件,所以我必须将它们转换为 Putty 可以读取的 UNIX 格式。
find <path> -type f -print0 | xargs -0 dos2unix
不是说显而易见的事情,但这意味着您没有正确创建加密数据包或密钥错误。由于我们没有密钥或不知道您运行了哪些命令,因此很难说出哪些命令。也真的真的停止使用该 API,我现在已经在两个问题中说过了。
此外,如果您连续遇到重大的用户体验问题,那么 SO 并不是一个好的媒介。通过 IRC 或 Slack 联系我,我们可能可以更快地做到这一点。