使用 Azure Key Vault 簽署封裝

在 Visual Studio 2022 17.8 版 Preview 2 和更新版本中,您可以使用 Azure 金鑰保存庫 的憑證簽署 UWP 和傳統型應用程式套件。 此工具會將您的應用程式套件摘要 (hash) 傳送至 Azure 金鑰保存庫,以使用您選擇的憑證進行密碼編譯簽署。 接著會傳回已簽署的摘要並附加至本機套件。

重要

此程式是安全的。 憑證的私鑰永遠不會離開 Azure 金鑰保存庫。

必要條件

  • Azure 帳戶。 如果您沒有 Azure 帳戶,請從這裡開始。
  • Azure Key Vault。 如需詳細資訊,請參閱建立 Key Vault
  • 已匯入 Azure Key Vault 的有效套件簽署憑證。 Azure Key Vault 產生的預設憑證不適用於程式碼簽署。 如需詳細了解如何建立套件簽署憑證,請參閱建立套件簽署的憑證

將憑證匯入您的 Key Vault

將憑證新增至您的 Key Vault 非常簡單。 在此範例中,會新增名為 UwpSigningCert.pfx 的有效 UWP 程式碼簽署憑證。

  1. 在 [Key Vault 屬性] 頁面上,選取 [憑證]
  2. 按一下 [產生/匯入] 。
  3. 在 [ 建立憑證 ] 畫面上,選擇下列值:
    • 建立憑證的方法:匯入
    • 憑證名稱:UwpSigningCert
    • 上傳憑證檔案:UwpSigningCert.pfx
    • 解密憑證:如果您的憑證受到密碼保護,請在 [ 密碼 ] 字段中提供它。
  4. 按一下 [建立]。

注意

此自我簽署的憑證不受 Windows 信任,除非已由管理員匯入並信任該憑證。 請妥善保護所有憑證,包括自我簽署憑證。

設定 Key Vault 的存取原則

您可以使用存取原則,控制可存取 Key Vault 內容的對象。 Key Vault 存取原則會分別對金鑰、祕密和憑證授與權限。 您只能將使用者權限授與金鑰,而不能將權限授與秘密。 金鑰、祕密和憑證的存取權限是在保存庫層級進行管理。 如需詳細資訊,請參閱 Azure Key Vault 安全性

注意

當您在 Azure 訂閱中建立 Key Vault 時,其會自動與訂閱的 Azure Active Directory 租用戶建立關聯。 任何人要嘗試管理或擷取 Key Vault 內容,都必須經由 Azure AD 驗證。

  1. 在 [Key Vault 屬性] 頁面上,選取 [存取原則]
  2. 選取+ 新增存取原則
  3. 按兩下 [憑證許可權] 下拉式清單,並核取 [憑證管理作業] 底下的 [取得清單] 方塊。
  4. 按兩下 [秘密許可權] 下拉式清單,然後核取 [秘密管理作業] 底下的 [取得清單] 方塊。
  5. 按兩下 [ 選取主體],搜尋您要授與存取權的使用者,然後按兩下 [ 選取]。
  6. 按一下新增
  7. 請務必按一下 [儲存] 以儲存您的變更。

注意

不鼓勵讓使用者直接存取金鑰保存庫。 理想情況下,應該將使用者新增至 Azure AD 群組,然後再授與金鑰保存庫的存取權。

在 Visual Studio 中,從 Key Vault 中選取憑證

Visual Studio 中的 [建立應用程式套件] 精靈可讓您選擇要用來簽署應用程式套件的憑證。 您可以透過 Azure Key Vault 選擇套件簽署憑證。 您必須提供包含憑證之 Key Vault 的 URI,而且您在 Visual Studio 中驗證的 Microsoft 帳戶必須具有正確的存取權限。

  1. 在 Visual Studio 中,開啟 UWP 應用程式專案或桌面 Windows 應用程式封裝專案
  2. 選取 [發佈 - 套件 ->> 建立應用程式套件...] 以開啟 [建立應用程式套件精靈]。
  3. 在 [選取發佈方法] 頁面中,選取 [側載]
  4. 在 [選取簽署方法] 頁面中,按一下 [從 Azure Key Vault 選取...]
  5. 出現 [從 Azure Key Vault 選取憑證] 對話方塊之後,請使用帳戶選擇器來選擇已設定存取原則的帳戶。
  6. 輸入 Key Vault 的 URI。 您可以在 Key Vault 的 [概觀] 頁面中找到 URI,並以 [DNS 名稱] 加以識別。
  7. 按一下 [檢視中繼資料] 按鈕。
  8. 憑證完成載入之後,請從清單中選取您想要的憑證 (例如,UwpSigningCert)。
  9. 按一下 [確定]

使用 Azure Key Vault 的密碼來解密您的憑證

如果您使用本機密碼保護的憑證 (.pfx) 來簽署應用程式套件,可能難以管理用於解密的密碼。 當您在 [建立應用程式套件] 精靈中匯入憑證時,系統會提示您手動輸入密碼。 或者也可以選取 Azure Key Vault 的密碼。

  1. 在 Visual Studio 中,開啟 UWP 應用程式專案或桌面 Windows 應用程式封裝專案
  2. 選取 [發佈 - 套件 ->> 建立應用程式套件...] 以開啟 [建立應用程式套件精靈]。
  3. 在 [選取發佈方法] 頁面中,選取 [側載]
  4. 在 [選取簽署方法] 頁面中,按一下 [從檔案選取..]
  5. 在出現 [憑證受密碼保護] 對話方塊之後,按一下 [從 Key Vault 選取密碼]
  6. 出現 [從 Azure Key Vault 選取密碼] 對話方塊之後,請使用帳戶選擇器來選擇已設定存取原則的帳戶。
  7. 輸入 Key Vault 的 URI。 您可以在 Key Vault 的 [概觀] 頁面中找到 URI,並以 [DNS 名稱] 加以識別。
  8. 按一下 [檢視中繼資料] 按鈕。
  9. 密碼完成載入之後,請從清單中選取您想要的密碼 (例如,UwpSigningCertPassword)。
  10. 按一下 [確定]

啟用 CI/CD 案例中的登入

若要啟用在 CI/CD 案例中登入,您必須將管線設定為使用 DefaultAzureCredential 向 Azure 金鑰保存庫 進行驗證。 如果管線代理程式具有適當的許可權,DefaultAzureCredential 會嘗試使用管線代理程式的身分識別來存取 金鑰保存庫。 或者,您可以指定要用於驗證的服務主體或受控識別。