You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中将PEM格式RSA公钥导入Azure Key Vault?

问题解答

1. 能否将PEM格式公钥导入Azure Key Vault?

可以实现,但Azure Key Vault的import_key()方法要求传入**JsonWebKey(JWK)**格式的密钥材料,因此需要先将PEM公钥转换为JWK格式,再调用SDK完成导入。

2. PEM转JWK的实现方法

借助cryptography和jwcrypto两个Python模块可以完成格式转换,具体步骤如下:

安装依赖

pip install cryptography jwcrypto azure-keyvault-keys azure-identity

代码示例

from cryptography.hazmat.primitives import serialization
from jwcrypto.jwk import JWK
from azure.keyvault.keys import KeyClient
from azure.identity import DefaultAzureCredential

# 读取本地PEM公钥文件
with open("external-public-key.pem", "rb") as pem_file:
    pem_public_key = pem_file.read()

# 解析PEM公钥,提取RSA核心参数
rsa_public_key = serialization.load_pem_public_key(pem_public_key)
rsa_numbers = rsa_public_key.public_numbers()

# 构造JWK所需的RSA参数(符合JWK标准格式)
jwk_params = {
    "kty": "RSA",
    "n": rsa_numbers.n.to_bytes((rsa_numbers.n.bit_length() + 7) // 8, byteorder="big").hex(),
    "e": rsa_numbers.e.to_bytes((rsa_numbers.e.bit_length() + 7) // 8, byteorder="big").hex(),
    "use": "enc"  # 根据实际场景设置:加密用"enc",签名用"sign"
}

# 转换为JWK对象
jwk = JWK(**jwk_params)

# 初始化Azure Key Vault客户端
vault_url = "https://your-vault-name.vault.azure.net/"
credential = DefaultAzureCredential()
key_client = KeyClient(vault_url=vault_url, credential=credential)

# 导入JWK到Key Vault
imported_key = key_client.import_key(
    key_name="external-rsa-public-key",
    key_material=jwk.export(private_key=False)
)

print(f"公钥导入成功,密钥ID:{imported_key.id}")

3. 核心模块说明

  • cryptography:负责解析PEM格式密钥,提取RSA公钥的模数(n)和指数(e)等核心参数。
  • jwcrypto:专门处理JWK格式,支持将RSA参数封装为符合标准的JWK对象,生成Azure可识别的JWK字符串。
  • azure-keyvault-keys + azure-identity:Azure官方SDK,用于完成Key Vault的身份验证和密钥导入操作。

注意事项

  • 确保PEM公钥为标准格式:-----BEGIN PUBLIC KEY-----开头的是PKCS#8格式,-----BEGIN RSA PUBLIC KEY-----是PKCS#1格式,cryptography均支持解析。
  • 配置JWK的use参数时,需与密钥后续的使用场景匹配,避免权限或功能限制。
  • 操作Azure Key Vault的身份凭证需具备Key Vault Crypto Officer或Key Vault Contributor权限。

内容的提问来源于stack exchange,提问作者Arpana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 23:35:20