管理 Visual Studio 用來簽署應用程式的憑證

 

僅適用於 Windows

Visual Studio 會在您建立應用程式封裝時簽署您的應用程式。您可以透過下列方式管理 Visual Studio 用來簽署應用程式的憑證。

  • 產生測試憑證

  • 選擇替代憑證

  • 更新憑證

  • 刪除或匯出憑證

  • 決定您要 Visual Studio 執行的驗證檢查

  • 修改安裝的應用程式

System_CAPS_note注意事項

如果在簽署過程中出現了類似於「指定的憑證無效,因為它已過期或有其他問題」的錯誤,請使用資訊清單設計工具來建立可取代舊憑證的測試憑證。

產生測試憑證

根據預設,Visual Studio 產生的所有應用程式封裝都會以測試憑證簽署。當您建立套件時,Visual Studio 會自行產生包含已簽署套件的資料夾。該資料夾內的憑證檔 (.cer) 包含用來簽署套件的公開金鑰。

當您產生測試憑證時,Visual Studio 對專案檔進行的變更

建立憑證的過程中也會將一個屬性加入至專案檔:

<PackageCertificateKeyFile>
   RisingStar_TemporaryKey.pfx
</PackageCertificateKeyFile>

PackageCertificateKeyFile 的值是來源憑證本身的相對路徑或完整路徑。

測試憑證中的屬性和副檔名值

在 Visual Studio 產生的測試憑證中,憑證的 [主旨] 欄位會設定為來源資訊清單 (.appxmanifest) 檔案中 Identity 項目的 Publisher 屬性 (Attribute)。

  • 如果您建立本機套件,Publisher 屬性的預設值會是您的使用者名稱。

  • 如果您是建立套件或是讓應用程式與它產生關聯,則當您在建立套件期間登入時,Publisher 屬性會設定為從您的開發人員帳戶取得的 Publisher ID

[基本限制] 延伸的值會設為 [主體類型=終端實體]。

System_CAPS_note注意事項

基本限制延伸可識別憑證的主體是否為憑證授權單位 (CA)。這個延伸也定義包含這個憑證的有效憑證路徑的最大深度。[基本限制] 屬性會指定檢定的公開金鑰是否可驗證憑證簽章。

[增強金鑰使用方法] (EKU) 延伸的值會設為 [程式碼簽署]。

選擇替代憑證

當建立專案時,Visual Studio 會自動建立憑證,不過,您也可以建立自己的憑證或使用現有的憑證來簽署套件。

建立或使用替代憑證

  1. 在 [方案總管] 中,開啟 .appxmanifest 檔案的捷徑功能表,選擇 [開啟方式],然後選擇 [應用程式資訊清單設計工具]。

  2. 在 [應用程式資訊清單設計工具] 中,選擇 [封裝] 索引標籤,然後選擇 [選擇憑證] 按鈕。

  3. 在 [選擇憑證] 對話方塊中,展開 [設定憑證] 清單,然後選擇下列其中一個選項:

    • 從憑證存放區挑選
      從作業系統中的憑證存放區,挑選您的其中一個 Personal 憑證。

    • 從檔案選取
      從檔案系統中挑選現有的憑證檔。

    • 建立測試憑證
      使用您選擇的 Publisher ID 來建立憑證。您也可以建立密碼。

無論您選擇哪一個選項,憑證檔都會加入至專案,並據以更新 PackageCertificateThumbprintPackageCertificateKeyFile 專案屬性。

更新憑證

Visual Studio 產生的預設憑證會在該憑證建立日期後的一年到期。在憑證到期前,您必須使用 [應用程式資訊清單設計工具] 來重新產生憑證,或如先前的程序所述,提供不同的有效憑證。

更新憑證

  1. 在 [方案總管] 中,開啟 .appxmanifest 檔案的捷徑功能表,選擇 [開啟方式],然後選擇 [應用程式資訊清單設計工具]。

  2. 在 [應用程式資訊清單設計工具] 中,選擇 [封裝] 索引標籤,然後選擇 [選擇憑證] 按鈕。

  3. 在 [選擇憑證] 對話方塊中,展開 [設定憑證] 清單,然後選擇 [建立測試憑證]。

  4. 在 [建立測試憑證] 對話方塊中,按一下 [確定] 按鈕。

    Visual Studio 便會以新的到期日重新產生憑證。

刪除或匯出憑證

您可能要刪除或匯出已經過期或是已經受到威脅、損壞或由另一個憑證取代的憑證。如需如何刪除或匯出憑證的詳細資訊,請參閱如何使用憑證主控台

決定您要 Visual Studio 執行的驗證檢查

在封裝期間,Visual Studio 會執行數項驗證檢查來驗證憑證。

在某些情況下,您可能需要更進一步控制使用的憑證,因此您需要掌控 Visual Studio 要對憑證執行哪些驗證檢查。藉由將 MSBuild 屬性 EnableSigningChecks 設定為 [False],就可以達到這個目的。

如果您將屬性設為 False,則 Visual Studio 只會執行下列驗證檢查:

  • 確認私密金鑰是否存在。

  • 確認 [增強金鑰使用方法] 屬性的值是否包含 [程式碼簽署]。

  • 確認憑證是否為使用中、未過期及未撤銷。

如果您將屬性設為 True (預設值),則 Visual Studio 會執行下列額外的檢查。

  • 驗證 [基本限制] 延伸以及它的值是否存在,該值必須為 [主體類型=終端實體] 或非特定。

  • 驗證 [KeyUsage (KU)] 屬性的值,該值必須是 [Unset] 或 [DigitalSignature]。

修改安裝的應用程式

如果已安裝的封裝中有任何檔案已修改,則簽署驗證可能會讓應用程式無法啟動。若要修改封裝,請在原始程式檔中進行變更,然後重新部署修改過的封裝。

請參閱

封裝適用於 Windows 10 的通用 Windows app