在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);
。
谢谢,没有意识到这是那么容易!将pfx添加到Web应用程序的优点是什么?只是想,如果我要创建这个应用程序的新环境,我将不得不另外部署证书,而不仅仅引用密钥库中的单个证书。 – ADringer
还有一个问题需要补充说明。当在Azure中托管时,它似乎崩溃在'var cert = new X509Certificate2(pfxBytes)'这一行;'没有写入日志。我需要提供密码给证书吗? – ADringer