如何使用Azure Key Vault中的RSA密钥创建并解密JWE?
Azure Key Vault RSA密钥实现JWE解密方案
核心结论
直接用Azure Key Vault的Key类型RSA密钥做本地JWE解密不可行——因为Key类型的RSA私钥无法下载到本地,无法满足本地JWE库对私钥的直接依赖需求。
可行解决方案
方案1:改用Azure Key Vault证书类型存储RSA密钥对
- 将RSA密钥对以证书形式存入Azure Key Vault,证书类型支持下载包含私钥的证书文件(需在访问策略中配置
GetCertificateWithPrivateKey权限) - 下载证书后,可将其导入为
X509Certificate2对象,直接使用你参考的JWE本地库流程完成解密
方案2:基于Azure Key Vault CryptographyClient拆分JWE流程
JWE的核心逻辑是「用RSA公钥加密对称密钥(CEK),再用CEK加密明文」,可以拆分步骤借助Azure Key Vault完成:
- 生成随机对称密钥(CEK,如AES-256-GCM)
- 调用
CryptographyClient.Encrypt方法(使用RSA-OAEP算法)加密CEK - 用CEK加密明文得到密文,生成JWE所需的认证标签
- 按照JWE标准格式拼接保护头、加密后的CEK、密文、认证标签等部分,生成完整JWE串
- 解密时反向操作:解析JWE得到加密后的CEK和密文,调用
CryptographyClient.Decrypt还原CEK,再用CEK解密密文
补充说明
Azure Key Vault的Key类型资源仅允许通过服务端API使用密钥(如加解密、签名验签),不支持下载私钥;只有证书类型资源允许下载包含公私钥的完整证书文件。
内容的提问来源于stack exchange,提问作者Abe
相关产品推荐
相关产品推荐

