簽署 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.xmlAppxSignature.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 版開始,預設會開啟側載選項。 因此, 開發人員模式 現在是切換。 企業仍然可以透過原則關閉側載。