使用 gcloud 命令行时 GCP 的 KMS 出错:cryptography.hazmat.primitives.keywrap 没有 aes_key_wrap_with_padding 属性

使用 gcloud 命令行时 GCP 的 KMS 出错:cryptography.hazmat.primitives.keywrap 没有 aes_key_wrap_with_padding 属性

在 Ubuntu 实例(php/homestead/vagrant)上使用 gcloud 命令行将密钥导入 Google KMS 时遇到问题。

我使用以下命令安装了 gcloud:

echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
sudo apt-get install apt-transport-https ca-certificates gnupg
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
sudo apt-get update && sudo apt-get install google-cloud-sdk
gcloud init

然后我使用以下命令安装了加密包:

pip install --user "cryptography>=2.2.0"
apt policy python-cryptography`
export CLOUDSDK_PYTHON_SITEPACKAGES=1

我的 php 代码最终通过典型的 exec 调用运行该命令:

gcloud kms keys versions import --import-job jobname --location locationname --keyring keyringname --key keyname --algorithm ec-sign-p256-sha256 --public-key-file /tmp/wrapping_public_key.pem --target-key-file /tmp/unwrapped_formatted.key

我总是收到这个错误:

ERROR: gcloud crashed (AttributeError): module 'cryptography.hazmat.primitives.keywrap' has no attribute 'aes_key_wrap_with_padding'

可能需要注意的是,我可以成功使用 gcloud 的其他功能,包括创建密钥环等。我相信错误与 gcloud 的安装方式或依赖性问题有关……但我不知道从哪里开始排除故障,并且 GCP 文档没有具体列出这个问题。

提供的任何帮助大大赞赏。

答案1

我确定我以某种方式安装了使用pip listpip2 list和的不同版本的加密技术pip3 list

使用以下命令解决了问题。我不太确定是否有必要,但现在我已经开始使用 gcloud 了。

pip3 install --upgrade pip(升级 pip3)

pip uninstall cryptography(以及 pip2 和 pip3)

sudo apt remove cryptography

pip3 install cryptography

相关内容