我在Azure密钥保管箱中看到的所有数据加密/解密示例都使用keyVaultClient.DecryptAsync()
方法在本地进行加密和在Azure自身内部进行解密。
我知道这是更安全的,因为私钥永远不会离开Azure并泄漏到您的应用程序代码中,但是,如果我也想在本地进行解密,我该如何取出私钥呢?
我正在使用keyVaultClient.GetKeyAsync()
,但似乎只包含公共密钥。
Azure解密中的一个问题是,如果没有开发人员访问Azure,我将无法在开发环境中复制它。似乎没有Azure Key Vault的模拟器。
看来,实现我想要的唯一方法是使用Azure Key Vault Secret
并在其中存储包含公钥/私钥的PFX证书?
答案 0 :(得分:3)
抱歉,不。
Azure Key Vault does not support EXPORT operations:一旦在系统中设置了密钥,就无法提取或修改其密钥材料。
您可以执行BACKUP,但唯一的好处就是还原到Azure。您无法在其他任何地方使用它。
答案 1 :(得分:1)
就像TerryCarmen所说的那样,您无法在本地解密,只有公用密钥可用于系统。对GetKeyAsync的API调用不会返回私钥数据。这就是为什么DecryptAsync包装器方法确实使用Key Vault API进行解密的原因。
换句话说,私有密钥永远不会离开保管库,这是使用Key Vault进行解密而不是将私有密钥引入流程的原因之一。
有关更多详细信息,您可以参考此article。