建立套件簽署的憑證
本文章將說明如何使用 PowerShell 工具,以建立和匯出應用程式套件簽署的憑證。 建議您使用 Visual Studio 來封裝 UWP 應用程式和封裝傳統型應用程式,但如果您未使用 Visual Studio 開發應用程式,您仍然可以手動封裝應用程式。
必要條件
已封裝或未封裝的應用程式
包含 AppxManifest.xml 檔案的應用程式。 在建立用來簽署最終應用程式套件的憑證時,您會需要參考資訊清單檔。 如需如何手動封裝應用程式的詳細資訊,請參閱使用 MakeAppx.exe 工具建立應用程式套件。公開金鑰基礎結構 (PKI) Cmdlet
您需要 PKI cmdlet 來建立和匯出您的簽署憑證。 如需詳細資訊,請參閱 Public Key Infrastructure Cmdlets。
建立自我簽署憑證
自我簽署憑證在準備好發佈至市集之前,適用于測試您的應用程式。 請遵循本節所述的步驟來建立自我簽署憑證。
注意
當您建立和使用自我簽署憑證時,只有安裝及信任憑證的使用者才能執行您的應用程式。 這很容易實作以進行測試,但可能會防止其他使用者安裝您的應用程式。 當您準備好發佈應用程式時,建議您使用受信任來源所簽發的憑證。 這種集中式信任系統有助於確保應用程式生態系統具有驗證層級,以保護使用者免于惡意執行者。
判斷您經過封裝之應用程式的主旨
若要使用憑證來簽署您的應用程式套件,憑證中的「主旨」必須符合您應用程式資訊清單中的「發行者」區段。
舉例來說,應用程式之 AppxManifest.xml 檔案中的「身分識別」區段看起來像這樣︰
<Identity Name="Contoso.AssetTracker"
Version="1.0.0.0"
Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"/>
本案例中的「發行者」為 "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 簽署應用程式套件 (英文)。
安全性考量
藉由將認證新增至本機電腦憑證存放區 (英文),您會對電腦上所有使用者的憑證信任造成影響。 建議您移除不再需要的憑證,以避免它們危害系統信任。