【发布时间】:2017-03-08 03:29:52
【问题描述】:
根据 chef 中的 docs,它使用共享密钥来加密数据包项。
共享密钥是通过以下方式创建的:
openssl rand -base64 512 | tr -d '\r\n' > encrypted_data_bag_secret
数据以以下格式保存。
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
我试图使用 openssl 解密其中一项,但未能获得正确的魔法组合。
使用上面的示例数据,下面是我想出的最好的命令,我认为应该可以工作。数据是 base64 解码的,来自 openssl man 的 iv 和 key 应该是十六进制的,但我认为我的转换正在为 openssl 提供正确的数据。
cat 'JZtwXpuq4Hf5ICcepJ1PGQohIyqjNX6JBc2DGpnL2WApzjAUG9SkSdv75TfKSjX4' > encrypted_data
cat 'VYY2qx9b4r3j0qZ7+RkKHg==' > iv
openssl enc -d -aes-256-cbc -a \
-in encrypted_data \
-K $(cat encrypted_data_bag_secret|base64 -d|xxd -p) \
-iv $(cat iv|base64 -d|xxd -p)
任何人都可以看到我做错了什么或有使用 openssl 和共享机密文件手动解密厨师数据包项目的工作示例吗?
【问题讨论】:
-
我想知道你为什么要这样做吗?
-
我必须审核我们的主厨服务器...多个不同步的服务器,我想测试本地 git 保存的数据包文件版本,以查看哪些已使用 'common ' 密钥文件。
-
好的,那么为什么不使用 Chef 而不是 bash 脚本和
openssl来解密它们呢? -
因为我引用了本地 .json,我认为通过 jq 解析并将 encrypted_data 和 iv 键值输入到 openssl 以获得简单的成功会更容易 ||失败。但我认为使用 openssl 会更容易插入价值和利润。
-
knife -z data bag show是你的朋友 :)
标签: openssl chef-infra