2017-07-07 119 views
0

我已經將pfx證書作爲祕密上傳到了我的Azure門戶,現在我想使用它來簽署IdentityServer4中的憑證。在Azure密鑰保管庫中使用證書來簽署IdentityServer4

我已經使用了在API的啓動參考庫:

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

但也不太清楚如何拿到證書了傳遞到:

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

是它可能能夠直接從密鑰庫中引用證書,還是需要將證書部署到API所運行的Web應用程序?

感謝

回答

2

您已經構建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

相關問題