【應用服務 App Service】App Service證書匯入,使用Key Vault中的證書

路邊兩盞燈發表於2020-10-28

問題描述

正常情況下,如果需要為應用服務安裝SSL證書,可以在證書準備好的情況,通過門戶上傳即可,詳細步驟可以參考微軟官方文件(在 Azure 應用服務中新增 TLS/SSL 證書:https://docs.azure.cn/zh-cn/app-service/configure-ssl-certificate), 但是由於Global Azure和中國區Azure的不同之處,在中國區微軟雲無法直接在門戶中匯入Key Vault中的證書。 以下是兩個版本頁面之間的不同之處:

中國區 Azure 國際版 Azure
【應用服務 App Service】App Service證書匯入,使用Key Vault中的證書 【應用服務 App Service】App Service證書匯入,使用Key Vault中的證書

那要這樣才能在中國區中匯入Key Vault中的SSL證書呢? 使用PowerShell指令碼完成匯入完成。(把KeyVaule中的證書轉變為Secrets後,配置到App Service)

執行步驟

1) 在Key Vault中把證書已PFX/PEM格式匯出(其實匯出證書後,可以直接在App Service中上傳證書,只是這樣就沒有Key Vault來保護證書

  (導航路徑: Key Vault --> Settings Certificates --> Certificates Name --> Current Version)

【應用服務 App Service】App Service證書匯入,使用Key Vault中的證書

2) 把證書匯入到Key Vault中的Secrets中。自定義一個Key Vault Secret Name並複製出key vault的資源ID,第三步會使用到。

  • 選擇Upload Options為Certificate
  • 上傳第一步中下載的證書
  • 輸入證書名:mysitecertfile(第三步 Powershell命令中需要)

【應用服務 App Service】App Service證書匯入,使用Key Vault中的證書

3)修改指定的引數,執行PowerShell命令,把證書匯入到App Service中

Connect-AzureRmAccount -Environment AzureChinaCloud

$location = "<resource location>"
$ResourceGroupName = "<app service resource group name>"
$AppServicePlanName = "/subscriptions/<subscription id>/resourceGroups/<app service resource group name>/providers/Microsoft.Web/serverfarms/<server farm id>"
$KeyVault = "/subscriptions/<subscription id>/resourcegroups/<key vault resource group name>/providers/microsoft.keyvault/vaults/<key vault name>"
$KeyVaultSecert = "<key vault secret name>"

$newCert = "NewCertificate"

$PropertiesObject = @{
keyVaultId= $KeyVault
keyVaultSecretName= $KeyVaultSecert
serverFarmId= $AppServicePlanName
}

New-AzureRmResource -Name $newCert -Location $location `
                    -PropertyObject $PropertiesObject `
                    -ResourceGroupName $ResourceGroupName `
                    -ResourceType Microsoft.Web/certificates `
                    -Force

以上值都可以在相對應的資源中檢視:

  • $AppServicePlanName:在應用服務的Overview頁面中,通過App Service Plan連結進入,在Porperties(左側目錄)頁面複製Resource ID值
  • $KeyVault:在Key Vault的Overview頁面中,點選Porperties(左側目錄)頁面複製Resource ID值
  • 如果登入後,有多個訂閱資訊,可以通過命令Select-AzureRmSubscription -Subscription '<your subscription name>' 來指定訂閱
  • 在執行繫結Key Vault證書時,如果遇見"The service does not have access to '/subscriptions/............/microsoft.keyvault/vaults/...' Key Vault.Please make sure that you have granted necessary permissions to the service to perform the request operation. 需要執行以下兩個步驟來為App Service複製訪問Key Vault的授權
  1. 在App Service中開啟Identity, System Assigned功能,並複製出Object ID用於在Key Value中賦予許可權

【應用服務 App Service】App Service證書匯入,使用Key Vault中的證書

2. 在Key Vault中的Access Policies中為App Service賦予訪問許可權

【應用服務 App Service】App Service證書匯入,使用Key Vault中的證書

 

 4)訪問站點,驗證證書。

參考資料

在 Azure 應用服務中新增 TLS/SSL 證書:https://docs.azure.cn/zh-cn/app-service/configure-ssl-certificate

新增系統分配的標識https://docs.azure.cn/zh-cn/app-service/overview-managed-identity?tabs=dotnet#add-a-system-assigned-identity

使用應用服務和 Azure Functions 的 Key Vault 引用https://docs.azure.cn/zh-cn/app-service/app-service-key-vault-references

關於 Azure Key Vaulthttps://docs.azure.cn/zh-cn/key-vault/general/overview

Azure Key Vault 有助於解決以下問題:

  • 機密管理 - Azure Key Vault 可以用來安全地儲存令牌、密碼、證書、API 金鑰和其他機密,並對其訪問進行嚴格控制
  • 金鑰管理 - Azure Key Vault 也可用作金鑰管理解決方案。 可以通過 Azure Key Vault 輕鬆建立和控制用於加密資料的加密金鑰。
  • 證書管理 - Azure Key Vault 也是一項服務,可用來輕鬆預配、管理和部署公用和專用傳輸層安全性/安全套接字層 (TLS/SSL) 證書,以用於 Azure 以及內部連線資源。

為何使用 Azure Key Vault?

集中管理應用程式機密

在 Azure Key Vault 中集中儲存應用程式機密就可以控制其分發。 Key Vault 可以大大減少機密意外洩露的可能性。 有了 Key Vault,應用程式開發人員就再也不需要將安全資訊儲存在應用程式中。 無需將安全資訊儲存在應用程式中,因此也無需將此資訊作為程式碼的一部分。 例如,如果某個應用程式需要連線到資料庫, 則可將連線字串安全地儲存在 Key Vault 中,而不是儲存在應用程式碼中。

應用程式可以使用 URI 安全訪問其所需的資訊。 這些 URI 允許應用程式檢索特定版本的機密。 這樣就不需編寫自定義程式碼來保護儲存在 Key Vault 中的任何機密資訊。

 

相關文章