在Azure密钥保管库中使用证书来签署IdentityServer4

问题描述:

我已经将pfx证书作为秘密上传到了我的Azure门户,现在我想使用它来签署IdentityServer4中的凭证。在Azure密钥保管库中使用证书来签署IdentityServer4

我已经使用了在API的启动参考库:

builder.AddAzureKeyVault(
     $"https://{config["Vault"]}.vault.azure.net/", 
     config["ClientId"], 
     config["ClientSecret"]); 

但也不太清楚如何拿到证书了传递到:

services.AddIdentityServer() 
      .AddSigningCredential(...) 

是它可能能够直接从密钥库中引用证书,还是需要将证书部署到API所运行的Web应用程序?

感谢

您已经构建IConfiguration对象,所以你可以参考PFX键,就像你会从配置中引用的任何其他对象。 如果关键是在keyvault你可以参考它是这样的:

// Name of your pfx in the keyvault. 
var key = _configuration["pfx"]; 
var pfxBytes = Convert.FromBase64String(key); 

// Create the certificate. 
var cert = new X509Certificate2(pfxBytes); 
services.AddIdentityServer() 
    .AddSigningCredential(cert); 

我会建议使用此keyvault,但你可以决定的PFX上传到Web应用程序的证书存储区。您可以通过转到Web应用程序 - > SSL证书 - >上传证书并输入密码来在Azure中执行此操作。转到应用程序设置并添加应用程序设置WEBSITE_LOAD_CERTIFICATES : <thumbprint>。您要做的最后一件事是从商店中检索证书,并再次添加,如AddSigningCredential(cert);

+0

谢谢,没有意识到这是那么容易!将pfx添加到Web应用程序的优点是什么?只是想,如果我要创建这个应用程序的新环境,我将不得不另外部署证书,而不仅仅引用密钥库中的单个证书。 – ADringer

+0

还有一个问题需要补充说明。当在Azure中托管时,它似乎崩溃在'var cert = new X509Certificate2(pfxBytes)'这一行;'没有写入日志。我需要提供密码给证书吗? – ADringer