建立套件簽署的憑證

本文說明如何使用 PowerShell 工具建立和匯出應用程式套件簽署的憑證。 建議您使用 Visual Studio 來 封裝 UWP 應用程式和 封裝傳統型應用程式 ,但如果您未使用 Visual Studio 來開發應用程式,您仍然可以手動封裝應用程式。

必要條件

  • 已封裝或未封裝的應用程式
    包含 AppxManifest.xml 檔案的應用程式。 建立將用來簽署最終應用程式套件的憑證時,您必須參考資訊清單檔案。 如需如何手動封裝應用程式的詳細資訊,請參閱 使用 MakeAppx.exe 工具 建立應用程式套件。

  • 公開金鑰基礎結構 (PKI) Cmdlet
    您需要 PKI Cmdlet 來建立和匯出簽署憑證。 如需詳細資訊,請參閱 公開金鑰基礎結構 Cmdlet

建立自我簽署憑證

自我簽署憑證在準備好發佈至市集之前,適合用來測試您的應用程式。 請遵循本節中所述的步驟來建立自我簽署憑證。

注意

當您建立和使用自我簽署憑證時,只有安裝及信任憑證的使用者才能執行您的應用程式。 這很容易實作以進行測試,但可能會防止其他使用者安裝您的應用程式。 當您準備好發佈應用程式時,建議您使用受信任的來源所簽發的憑證。 此集中式信任系統可協助確保應用程式生態系統具有驗證層級,以保護使用者免受惡意執行者的攻擊。

判斷已封裝應用程式的主題

若要使用憑證來簽署應用程式套件,憑證 中的「主體」必須 符合您應用程式資訊清單中的「發行者」區段。

例如,應用程式 AppxManifest.xml 檔案中的 「Identity」 區段看起來應該像這樣:

  <Identity Name="Contoso.AssetTracker" 
    Version="1.0.0.0" 
    Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"/>

在此情況下,「Publisher」 是 「CN=Contoso Software, O=Contoso Corporation, C=US」,必須用來建立憑證。

使用 New-SelfSignedCertificate 建立憑證

使用 New-SelfSignedCertificate PowerShell Cmdlet 來建立自我簽署憑證。 New-SelfSignedCertificate 有數個參數可供自訂,但基於本文的目的,我們將著重于建立將搭配 SignTool 使用的 簡單憑證。 如需此 Cmdlet 的更多範例和用法,請參閱 New-SelfSignedCertificate

根據上一個範例中的 AppxManifest.xml 檔案,您應該使用下列語法來建立憑證。 在提升許可權的 PowerShell 提示字元中:

New-SelfSignedCertificate -Type Custom -Subject "CN=Contoso Software, O=Contoso Corporation, C=US" -KeyUsage DigitalSignature -FriendlyName "Your friendly name goes here" -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")

請注意下列部分參數的詳細資料:

  • KeyUsage :此參數會定義憑證的用途。 針對自我簽署憑證,此參數應設定為 DigitalSignature

  • TextExtension :此參數包含下列延伸模組的設定:

    • 擴充金鑰使用方式 (EKU):此延伸模組表示可使用認證公開金鑰的其他用途。 對於自我簽署憑證,此參數應該包含擴充字串 「2.5.29.37={text}1.3.6.1.5.5.7.3.3」 ,這表示憑證將用於程式碼簽署。

    • 基本條件約束:此延伸模組指出憑證是否為憑證授權單位單位(CA)。 對於自我簽署憑證,此參數應該包含延伸字串 「2.5.29.19={text}」 ,表示憑證是結束實體(而非 CA)。

執行此命令之後,憑證將會新增至本機憑證存放區,如 「-CertStoreLocation」 參數中所指定。 命令的結果也會產生憑證的指紋。

您可以使用下列命令,在 PowerShell 視窗中檢視您的憑證:

Set-Location Cert:\CurrentUser\My
Get-ChildItem | Format-Table Subject, FriendlyName, Thumbprint

這會在您的本機存放區中顯示所有憑證。

匯出憑證

若要將本機存放區中的憑證匯出至個人資訊交換 (PFX) 檔案,請使用 Export-PfxCertificate Cmdlet。

使用 Export-PfxCertificate 時,您必須建立並使用密碼,或使用 「-ProtectTo」 參數來指定哪些使用者或群組可以在沒有密碼的情況下存取檔案。 請注意,如果您沒有使用 「-Password」 或 「-ProtectTo」 參數,就會顯示錯誤。

密碼使用方式

$password = ConvertTo-SecureString -String <Your Password> -Force -AsPlainText 
Export-PfxCertificate -cert "Cert:\CurrentUser\My\<Certificate Thumbprint>" -FilePath <FilePath>.pfx -Password $password

ProtectTo 使用量

Export-PfxCertificate -cert Cert:\CurrentUser\My\<Certificate Thumbprint> -FilePath <FilePath>.pfx -ProtectTo <Username or group name>

建立和匯出憑證之後,您就可以使用 SignTool 簽署應用程式套件。 如需手動封裝程式的下一個步驟,請參閱 使用 SignTool 簽署應用程式套件。

安全性考量

將憑證新增至 本機電腦憑證存放區 ,即可影響電腦上的所有使用者的憑證信任。 建議您在不再需要這些憑證時移除這些憑證,以防止它們用來危害系統信任。