簽署 Windows 10 應用程式套件
在建立可部署 Windows 10 應用程式套件的過程中,應用程式套件簽署是必要步驟。 Windows 10 需要使用有效的程式碼簽署憑證來簽署所有應用程式。
若要成功安裝 Windows 10 應用程式,套件不只需要簽署,還必須在裝置上受到信任。 這表示憑證必須鏈結至裝置上其中一個受信任的根。 根據預設,若憑證來自提供程式碼簽署憑證的憑證授權單位,Windows 10 一般都會信任該憑證。
此外,如果您要建立 MSIX 套件組合,就不需要個別簽署套件組合中的所有套件。 只需要簽署套件組合,且內的所有套件都會以遞歸方式簽署。
主題 | 說明 |
---|---|
簽署的先決條件 | 本節將討論簽署 Windows 10 應用程式套件所需的必要條件。 |
使用 SignTool | 本節將討論如何從 Windows 10 SDK 使用 SignTool 來簽署應用程式套件。 |
使用 Device Guard 簽署簽署 MSIX 套件 | 本節討論如何使用 Device Guard 簽署來簽署您的應用程式。 |
建立未簽署的套件以進行測試 | 本節討論如何建立未簽署的 msix 套件。 |
時間戳記
強烈建議 您在使用憑證簽署應用程式時使用時間戳 。 時間戳會保留簽章,讓應用程式部署平臺接受應用程式套件,即使憑證過期也一直如此。 在套件檢查階段,時間戳記可讓套件簽章根據簽署時間進行驗證。 如此一來,即使憑證不再有效,系統還是會接受套件。 沒有時間戳記的套件將會以目前時間進行評估,如果憑證已失效,則 Windows 不會接受該套件。
以下是有時間戳記和沒有時間戳記的各別應用程式簽署案例:
案例 | 沒有時間戳記的應用程式簽署 | 有時間戳記的應用程式簽署 |
---|---|---|
憑證有效 | 應用程式將安裝 | 應用程式將安裝 |
憑證無效 (過期) | 應用程式無法安裝 | 應用程式會在有時間戳記的授權單位簽署並驗證憑證授權單位後進行安裝 |
注意
如果應用程式已成功安裝在裝置上,無論有無時間戳記,該應用程式依然能在憑證過期後繼續執行。
套件完整性強制執行
除了確保裝置上只安裝受信任的應用程式之外,簽署 MSIX 套件的另一個優點是,它可讓 Windows 在裝置上部署套件之後強制執行套件的完整性及其內容。 藉由鏈結至 已簽署套件中的AppxBlockMap.xml 和 AppxSignature.p7x,Windows 能夠在運行時間以及Windows Defender 掃描期間,對套件的完整性及其內容執行驗證檢查。 如果套件被認為遭到竄改,Windows 將會封鎖應用程式啟動並啟動補救工作流程,以修復或重新安裝套件。 對於未透過 Microsoft Store 散發的套件,如果套件宣告 uap10:PackageIntegrity 元素,且部署在 Windows 2004 和更新版本組建上,則會強制執行套件完整性。 以下是 AppxManifest.xml 中套件完整性強制執行的範例宣告:
<Package ...
xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
IgnorableNamespaces="uap10">
...
<Properties>
<uap10:PackageIntegrity>
<uap10:Content Enforcement="on" />
</uap10:PackageIntegrity>
</Properties>
...
</Package>
裝置模式
Windows 10 可讓使用者在「設定」應用程式中選取用來執行裝置的模式。 這些模式為 Microsoft Store 應用程式、側載應用程式及開發人員模式。
Microsoft Store 應用程式最安全,因為只允許安裝 Microsoft Store 中的應用程式。 Microsoft Store 中的應用程式會經過認證程序,以確保能安全使用應用程式。
側載應用程式和開發人員模式的限制較寬鬆,應用程式可由其他憑證簽署,只要這些憑證是受信任的憑證,而且鏈結至裝置上其中一個受信任的根即可。 只有當您是開發人員且對 Windows 10 應用程式進行建置和偵錯時,才應選取開發人員模式。 您可以在此處找到開發人員模式相關資訊及其所提供的功能。
注意
從 Windows 10 版本 2004 開始,側載選項預設為開啟。 因此, 開發人員模式 現在是切換。 企業仍然可以透過原則關閉側載。