簽署 Windows 10 應用程式套件

在建立可部署 Windows 10 應用程式套件的過程中,應用程式套件簽署是必要步驟。 Windows 10 需要使用有效的程式碼簽署憑證來簽署所有應用程式。

若要成功安裝 Windows 10 應用程式,套件不只需要簽署,還必須在裝置上受到信任。 這表示憑證必須鏈結至裝置上其中一個受信任的根。 根據預設,若憑證來自提供程式碼簽署憑證的憑證授權單位,Windows 10 一般都會信任該憑證。

主題 描述
簽署的先決條件 本節將討論簽署 Windows 10 應用程式套件所需的必要條件。
使用 SignTool 本節將討論如何從 Windows 10 SDK 使用 SignTool 來簽署應用程式套件。
使用 Device Guard 簽署來簽署 MSIX 套件 本節討論如何使用 Device Guard 簽署來簽署您的應用程式。

時間戳記

強烈建議您在使用憑證來簽署應用程式時使用時間 。 時間戳記會保留簽章,允許應用程式部署平臺接受應用程式套件,即使憑證已過期也一樣。 在套件檢查階段,時間戳記可讓套件簽章根據簽署時間進行驗證。 如此一來,即使憑證不再有效,系統還是會接受套件。 沒有時間戳記的套件將會以目前時間進行評估,如果憑證已失效,則 Windows 不會接受該套件。

以下是有時間戳記和沒有時間戳記的各別應用程式簽署案例:

案例 沒有時間戳記的應用程式簽署 有時間戳記的應用程式簽署
憑證有效 應用程式將安裝 應用程式將安裝
憑證無效 (過期) 應用程式無法安裝 應用程式會在有時間戳記的授權單位簽署並驗證憑證授權單位後進行安裝

注意

如果應用程式已成功安裝在裝置上,無論有無時間戳記,該應用程式依然能在憑證過期後繼續執行。

封裝完整性強制執行

除了確保裝置上只會安裝受信任的應用程式,簽署 MSIX 套件的另一個優點是,它可讓 Windows 在裝置上部署套件及其內容之後,強制執行其完整性。 藉由連結至已簽署套件中的AppxBlockMap.xmlappxsignature.p7x 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開始,預設會開啟側載選項。 因此, 開發人員模式 現在是切換。 企業仍可透過原則關閉側載。