總結
本文說明如何排除 Azure 應用程式閘道 中常見的金鑰保險庫錯誤,並解決可能干擾憑證管理與 HTTPS 連線安全的錯誤設定。
Application Gateway 讓你能安全地將 TLS 憑證儲存在 Azure Key Vault 中。 使用金鑰保險庫資源時,閘道器必須始終能存取連結的金鑰庫。 如果你的應用閘道無法取得憑證,它會停用相關的 HTTPS 監聽器。 欲了解更多資訊,請參閱 「了解身心障礙聽者」。
小提示
使用不指定版本的秘密識別碼。 使用此識別碼後,若 Azure Key Vault 中有新版本,Azure 應用程式閘道 會自動輪換憑證。 一個沒有版本的秘密統一資源識別碼(URI)範例為: https://myvault.vault.azure.net/secrets/mysecret/
Azure Advisor 錯誤代碼
以下章節將說明您可能遇到的各種錯誤。 要檢查你的閘道器是否有上述問題,請造訪你的帳號 Azure Advisor。 請參考這篇故障排除文章來解決問題。 設定 Azure Advisor 警示,以便在偵測到閘道金鑰保險庫問題時隨時掌握最新資訊。
備註
應用閘道每四小時產生一次金鑰庫診斷日誌。 如果修復設定後診斷仍顯示錯誤,可能需要等待日誌重新整理。
錯誤代碼 - 「UserAssignedIdentityDoesNotHaveGetPermissionOnKeyVault」
Description
相關的使用者指派管理身份沒有所需的權限。
Solution
設定 Key Vault 的存取原則,授與使用者指派的受控識別對祕密的存取權限。 你可以用以下兩種方式之一來完成:
保存庫存取原則
- 在 Azure 入口網站 中,前往已連結的金鑰保存庫。
- 選取存取原則。
- 對於 權限模型,請選擇 保險庫存取政策。
- 在 秘密管理操作中,選擇 取得 權限。
- 選取 [儲存]。
欲了解更多資訊,請參閱 使用 Azure portal 指派 金鑰保存庫 存取政策。
Azure 角色型存取控制 (RBAC)
- 在 Azure 入口網站中,前往已連結的金鑰保險庫。
- 選取存取原則。
- 對於 權限模型,請選擇 Azure 角色基礎存取控制。
- 前往 存取控制(IAM) 設定權限。
- 透過選擇以下值為你的管理身份新增角色指派:a. 角色:金鑰保存庫 Secrets 使用者 b. 將存取權分配給:管理身份 c. 成員:選擇您與應用程式閘道所關聯的使用者指派管理身份。
- 選擇 檢閱 + 指派。
更多資訊請參閱 金鑰保存庫 中的
備註
目前使用 Azure 角色基礎存取控制時,無法支援新增基於金鑰保險庫的憑證。 你可以用 Azure 資源管理(ARM)範本、Azure CLI 或 Azure PowerShell 來完成。 欲了解更多,請參閱 金鑰保存庫 Azure 基於角色的存取控制權限模型。
錯誤代碼 - 「SecretDisabled」
Description
Azure Key Vault 中相關憑證已被停用。
Solution
啟用應用程式閘道所使用的憑證版本。 若要這樣做,請遵循下列步驟:
- 在 Azure 入口網站中,前往已連結的金鑰保險庫。
- 選擇 證書。
- 選擇你想要的憑證名稱,然後選擇被停用的版本。
- 在管理頁面,使用切換鍵啟用該憑證版本。
錯誤代碼 - 「SecretDeletedFromKeyVault」
Description
相關的憑證會從 金鑰保存庫 中刪除。
Solution
要恢復已刪除的憑證,請依照以下步驟進行:
- 在 Azure 入口網站中,前往已連結的金鑰保險庫。
- 打開憑證視窗。
- 使用 「管理已刪除憑證」 標籤來恢復已刪除的憑證。
如果你永久刪除憑證物件,請建立新的憑證並更新應用程式閘道,包含新的憑證細節。 當你透過 Azure CLI 或 Azure PowerShell 設定時,請使用無版本的秘密識別碼 URI。 此選擇允許實例取得更新後的憑證(若存在)。
錯誤代碼 - 「UserAssignedManagedIdentityNotFound」
Description
相關聯的使用者指派的受控識別已遭刪除。
Solution
建立新的受控識別,並將其用於金鑰保存庫。 若要如此做,請執行下列步驟:
- 請重新創建一個受控識別,使用您之前使用過的相同名稱,並將其放置在同一資源群組中。 有關命名細節,請參閱資源活動日誌。
- 前往你想要的金鑰保險庫資源,設定其存取政策,賦予這個新的管理身份所需的權限。 如需更多資訊,請參閱 錯誤碼:UserAssignedIdentityDoesNotHaveGetPermissionOnKeyVault。
錯誤代碼 - 「KeyVaultHasRestrictedAccess」
Description
金鑰保存庫 有限制網路設定。
Solution
當你啟用 金鑰保存庫 防火牆以限制存取時,會遇到這個錯誤。 在受限的 金鑰保存庫 網路中配置應用閘道。 若要如此做,請執行下列步驟:
- 在 金鑰保存庫 中,選擇網路。
- 選擇防 火牆與虛擬網路 標籤,然後選擇 私人端點並選擇網路。
- 使用 Azure 虛擬網路 來新增你的應用閘道器的虛擬網路和子網。
- 選擇 Microsoft。KeyVault 勾選框。
- 選擇 「是」。 此動作允許受信任服務繞過 金鑰保存庫 防火牆。
錯誤代碼 - 「KeyVaultSoftDeleted」
Description
相關金鑰保存庫處於軟刪除狀態。
Solution
找到已刪除的金鑰保險庫資源。 若要如此做,請執行下列步驟:
- 在 Azure 入口網站中,搜尋 key vault。
- 在 服務中,選擇 金鑰保險庫。
- 選擇 「管理已刪除的保險庫」。
- 找到已刪除的金鑰庫資源並恢復它。
錯誤代碼 - 「CustomerKeyVaultSubscriptionDisabled」
Description
金鑰保存庫 的訂閱功能已被停用。
Solution
各種原因可能導致 Azure 停用你的訂閱。 要採取必要措施解決此問題,請參閱 重新啟動停用的 Azure 訂閱。
應用閘道錯誤代碼
錯誤代碼 - “ApplicationGatewayCertificateDataOrKeyVaultSecretIdMustBeSpecified / ApplicationGatewaySslCertificateDataMustBeSpecified”
Description
當你嘗試更新監聽者憑證時會遇到這個錯誤。 當發生此錯誤時,更新憑證的變更會被丟棄,監聽器繼續以先前定義的配置處理流量。
Solution
要解決這個問題,請嘗試重新上傳憑證。 例如,請使用以下 PowerShell 指令更新上傳至 Application Gateway 或透過 Azure Key Vault 引用的憑證。
更新憑證直接上傳到 Application Gateway。
$appgw = Get-AzApplicationGateway -ResourceGroupName "<ResourceGroup>" -Name "<AppGatewayName>"
$password = ConvertTo-SecureString -String "<password>" -Force -AsPlainText
Set-AzApplicationGatewaySSLCertificate -Name "<oldcertname>" -ApplicationGateway $appgw -CertificateFile "<newcertPath>" -Password $password
Set-AzApplicationGateway -ApplicationGateway $appgw
更新從 Azure Key Vault 參照的憑證。
$appgw = Get-AzApplicationGateway -ResourceGroupName "<ResourceGroup>" -Name "<AppGatewayName>"
$secret = Get-AzKeyVaultSecret -VaultName "<KeyVaultName>" -Name "<CertificateName>"
$secretId = $secret.Id.Replace($secret.Version, "")
$cert = Set-AzApplicationGatewaySslCertificate -ApplicationGateway $AppGW -Name "<CertificateName>" -KeyVaultSecretId $secretId
Set-AzApplicationGateway -ApplicationGateway $appgw