Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在从Azure KeyVault加载X509证书_C#_Azure_X509certificate_Azure Keyvault - Fatal编程技术网

C# 正在从Azure KeyVault加载X509证书

C# 正在从Azure KeyVault加载X509证书,c#,azure,x509certificate,azure-keyvault,C#,Azure,X509certificate,Azure Keyvault,我们有一个托管在Azure中的web应用程序,用于从KeyVault加载证书,以用于加密和其他服务的身份验证。从KeyVault读取值后,我们将创建如下证书: return new X509Certificate2(Convert.FromBase64String(secret.Value), string.Empty, X509KeyStorageFlags.MachineKeySet | X509KeyStora

我们有一个托管在Azure中的web应用程序,用于从KeyVault加载证书,以用于加密和其他服务的身份验证。从KeyVault读取值后,我们将创建如下证书:

return new X509Certificate2(Convert.FromBase64String(secret.Value), string.Empty,
                    X509KeyStorageFlags.MachineKeySet |
                    X509KeyStorageFlags.PersistKeySet |
                    X509KeyStorageFlags.Exportable);
我们已经看到很多关于“密钥集不存在”和“请求被中止:无法创建SSL/TLS安全通道”的错误

我怀疑这是因为它将私钥持久化到磁盘(C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys),这在尝试再次读取时会导致问题,因为它是共享托管环境,并且我们并不完全拥有这台机器

有没有合适的方法?我看到过使用证书存储的引用,但我不太确定这与从KeyVault获取证书有什么关系

有没有合适的方法?我看到过使用证书存储的引用,但我不太确定这与从KeyVault获取证书有什么关系

在您的情况下,您似乎只是从keyvault加载证书,但证书未部署到Azure WebApp。关于如何通过密钥保管库部署Azure Web App Certificate,您可以从中获得详细步骤


在Azure WebApp中使用证书的最简单方法是,您可以从Azure门户添加一个名为网站\u加载\u证书的应用程序设置,并将其值设置为证书的指纹但与KeyVault没有关系

我认为更好的解决方案是在适用的情况下使用。MSI功能将在Azure AD中创建服务主体,以表示服务/VM的标识。并在密钥库中分配此服务主体属性角色或权限,这可以通过在密钥库的“设置->访问策略”部分中创建新的访问策略来完成。服务主体应与服务名称相同。如果通过powershell创建,则此名称可能不同


MSI设置后,可以将证书或机密上载到密钥库并在服务中访问。

谢谢,我想我可能需要更多地查看第二个选项。