当前位置: 首页 > 知识库问答 >
问题:

Azure密钥库:部署时无法从kv获得证书

黄宏毅
2023-03-14

我有一个webjob从azure key vault service获得证书,并且在本地从KV访问/检索该证书没有问题。但是,当部署这个webjob时,我会得到以下错误:

System.Security.Cryptography.CryptographicException: The system cannot find the file specified.

   at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
   at System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromBlob(Byte[] rawData, IntPtr password, UInt32 dwFlags, Boolean persistKeySet, SafeCertContextHandle& pCertCtx)
   at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[] rawData, Object password, X509KeyStorageFlags keyStorageFlags)
   at Microsoft.Ambassadors.Infrastructure.KeyVaultService.<GetCertificateAsync>d__7.MoveNext() in C:\Source\Repos\Xbox.Ambassadors\Microsoft.Ambassadors.Azure\Microsoft.Ambassadors.Infrastructure\KeyVaultService.cs:line 0

我已经用AAD注册了应用程序(这个webjob托管的地方),它对kv空间有只读访问权限。我找到了几个相关的(我想..?)关于这方面的帖子:

共有1个答案

訾高飞
2023-03-14

除了部署到Azure web应用程序之外,我也遇到了同样的问题。我通过添加X509KeyStorageFlags来修复它。

SecretBundle secretBundle = await keyVaultClient.GetSecretAsync(_keyVaultOptions.IdentitySigningCredentialUri);
_signingCredential = new X509Certificate2(Convert.FromBase64String(secretBundle.Value), string.Empty, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
 类似资料:
  • 问题内容: 我尝试从KeyStore获取密钥。我通过Keytool创建了一个密钥库: keytool -genkeypair -dname“ cn = Mark Jones,ou = JavaSoft,o = Sun,c = US” -alias business2 -keypass abcdtest -keystore C:\ workspace \ XMLSample \ keystore \

  • 每个环境(例如生产、测试等)都有一个密钥库 全局使用一个密钥库。 如果我想使用ARM模板自动创建Azure资源,那么第二种方法似乎更好。但是,将测试机密和生产机密存储在一起可能会导致错误发生,除非您对机密名称使用某种命名方案。

  • 但是,这将错误地表示它无法加载证书。

  • 我正在尝试对现有API启用Azure密钥库证书。我们已经在Azure Key Vault帐户中拥有秘密和Azure Key Vault证书。下面是配置证书的代码: 在我的本地计算机上,我正确地导入了证书,其中包括下载pfx格式。

  • 我已经在Azure广告中注册了我的应用程序,并获得了应用程序ID和身份验证密钥,我允许我的应用程序从密钥库中读取机密。在我的U-SQL脚本中,我引用了所有需要的程序集。 当我在本地运行我的脚本时,一切都很好(这意味着从本地机器到AD和密钥库的连接是正常的),但是当我在远程数据湖分析帐户上提交它以执行时,我得到了以下错误: 无法解析远程名称:'my-key-vault-name.vault.azur

  • 我试图从Azure密钥库中检索一个秘密(不使用凭据,如本教程:示例): 但是当我调用时,我得到一个 我的密钥库url的格式类似于“https://my-keyvault.vault.azure.net”。