如何針對應用程式套件簽章錯誤進行疑難排解
應用程式部署失敗可能是因為無法驗證應用程式套件的數位簽章所造成。 瞭解如何辨識這些失敗,以及如何加以解決。
當您部署已封裝Windows應用程式時,Windows一律會嘗試驗證應用程式套件上的數位簽章。 在封裝的簽章驗證區塊部署期間失敗。 但為何套件未驗證可能不明顯。 特別是,如果您使用私人憑證簽署套件以進行本機測試,您通常也必須管理這些憑證的信任。 不正確的憑證信任設定可能會導致簽章驗證失敗。
您所需了解的事情
技術
先決條件
- Windows事件記錄檔來診斷安裝失敗。
- 在疑難排解期間管理憑證存放區操作憑證的Certutil 工作
Instructions
步驟 1:檢查事件記錄檔中的診斷資訊
根據您嘗試部署應用程式的方式,您可能尚未收到有意義的部署失敗錯誤碼。 在此情況下,您通常可以直接從事件記錄檔取得錯誤碼。
從事件記錄檔取得錯誤碼
執行 eventvwr.msc。
移至事件檢視器 (本機) >應用程式和服務記錄>Microsoft>Windows。
要檢查的第一個記錄是 AppxPackagingOMMicrosoft-Windows-AppxPackaging>/Operational。
部署相關的錯誤會記錄在AppXDeployment-ServerMicrosoft-Windows-AppXDeploymentServer>/Operational 中。
針對部署錯誤,搜尋最新的錯誤事件 404。 此錯誤事件會提供錯誤碼和部署失敗原因的描述。 如果錯誤事件 465 在 404 事件之前,開啟封裝時發生問題。
如果未發生 465 錯誤,請參閱一般疑難排解封裝、部署和查詢Windows應用程式。 否則,請參閱此資料表,以取得錯誤事件 465 錯誤字串中顯示的常見錯誤碼:
錯誤碼 | 錯誤 | 描述 | 建議 |
---|---|---|---|
0x80073CF0 | ERROR_INSTALL_OPEN_PACKAGE_FAILED | 無法開啟應用程式套件。 | 此錯誤通常表示封裝有問題。 您必須再次建置並簽署套件。 如需詳細資訊,請參閱 使用 App Packager。 |
0x80080205 | APPX_E_INVALID_BLOCKMAP | 應用程式套件遭到竄改,或有不正確區塊對應。 | 封裝已損毀。 您必須再次建置並簽署套件。 如需詳細資訊,請參閱 使用 App Packager。 |
0x800B0004 | TRUST_E_SUBJECT_NOT_TRUSTED | 應用程式套件已遭竄改。 | 套件內容不再符合其數位簽章。 您必須再次簽署套件。 如需詳細資訊,請參閱 如何使用 SignTool 簽署應用程式套件。 |
0x800B0100 | TRUST_E_NOSIGNATURE | 應用程式套件未簽署。 | 只能部署已簽署Windows應用程式套件。 如需簽署應用程式套件的相關資訊,請參閱 如何使用 SignTool 簽署應用程式套件。 |
0x800B0109 | CERT_E_UNTRUSTED_ROOT | 用來簽署應用程式套件的憑證鏈結會以不受信任的根憑證結束。 | 繼續進行步驟 2 以針對憑證信任進行疑難排解。 |
0x800B010A | CERT_E_CHAINING | 從用來簽署應用程式套件的憑證,無法建置任何憑證鏈結至受信任的根憑證授權單位。 | 繼續進行步驟 2 以針對憑證信任進行疑難排解。 |
步驟 2:判斷用來簽署應用程式套件的憑證鏈結
若要找出本機電腦必須信任的憑證,您可以檢查應用程式套件上數位簽章的憑證鏈結。
判斷憑證鏈結
- 在 [檔案總管] 中,以滑鼠右鍵按一下應用程式套件,然後選取 [屬性]。
- 在 [ 屬性] 對話方塊中,選取 [ 數位簽章 ] 索引標籤,這也會顯示是否可以驗證簽章。
- 在 [簽章] 清單中,選取簽章,然後按一下 [ 詳細資料] 按鈕。
- 在 [ 數位簽章詳細資料] 對話方塊中,按一下 [ 檢視憑證 ] 按鈕。
- 在 [ 憑證] 對話方塊中,選取 [ 認證路徑] 索引標籤。
鏈結中的最上層憑證是根憑證,而底部憑證則是簽署憑證。 如果只有單一憑證位於鏈結中,簽署憑證也是它自己的根憑證。 您可以判斷接著與 Certutil搭配使用之每個憑證的序號:
判斷每個憑證的序號
- 在 [認證路徑] 窗格中,選取憑證,然後按一下 [ 檢視憑證]。
- 在 [憑證] 對話方塊中,選取 [ 詳細資料 ] 索引標籤,以顯示憑證的序號和其他實用屬性。
步驟 3:判斷本機電腦信任的憑證
若要能夠部署應用程式套件,它不只能信任使用者的內容,也必須信任本機電腦內容。 因此,在上一個步驟的 [數位簽章] 索引標籤中檢視數位簽章時,數位簽章可能會有效,但仍會在部署應用程式套件期間驗證失敗。
判斷用來簽署應用程式套件的憑證鏈結是否由本機電腦特別信任
請執行這個命令:
CertUtil.exe -store Root rootCertSerialNumber
請執行這個命令:
CertUtil.exe -store TrustedPeople signingCertSerialNumber
如果您未指定憑證序號, Certutil 會列出該存放區本機電腦信任的所有憑證。
套件可能會因為憑證鏈結錯誤而無法安裝,即使簽署憑證未自我簽署,且根憑證位於本機電腦的根存放區中。 在此情況下,中繼憑證授權單位單位可能會有信任的問題。 如需此問題的詳細資訊,請參閱 使用憑證。
備註
如果您判斷無法部署套件,因為簽署憑證不受信任,除非您知道它的來源,而且您信任該套件,否則請勿安裝套件。
例如,如果您想要手動信任應用程式以安裝 (,若要安裝您自己的測試簽署應用程式套件) ,您可以手動將憑證新增至應用程式套件的本機電腦憑證信任。
手動將憑證新增至本機電腦憑證信任
- 在檔案總管中,以滑鼠右鍵按一下應用程式套件,然後在快顯功能表中選取 [屬性]。
- 在 [ 屬性] 對話方塊中,選取 [ 數位簽章] 索引標籤 。
- 在 [簽章] 清單中,選取簽章,然後按一下 [ 詳細資料] 按鈕。
- 在 [ 數位簽章詳細資料] 對話方塊中,按一下 [ 檢視憑證 ] 按鈕。
- 在 [ 憑證] 對話方塊中,按一下 [ 安裝憑證...] 按鈕。
- 在 [憑證匯入精靈] 中,選取 [ 本機電腦 ],然後按 [ 下一步]。 您必須授與系統管理員許可權才能繼續。
- 選取 [ 將所有憑證放在下列存放區], 然後流覽至 [受信任的人 ] 存放區。
- 按 [下一步],然後按一下 [ 完成] 以完成精靈。
在此手動新增之後,您可以看到憑證現在在 [ 憑證 ] 對話方塊中受到信任。
不再需要憑證之後,您可以移除憑證。
若要移除憑證
以系統管理員 身分執行Cmd.exe 。
在系統管理員命令提示字元中,執行此命令:
Certutil -store TrustedPeople
尋找您安裝的憑證序號。 此數位是 certID。
請執行這個命令:
Certutil -delStore TrustedPeople certID
建議您避免將根憑證手動新增至本機電腦受信任的根憑證授權單位憑證Microsoft Store。 有數個使用鏈結至相同根憑證的憑證簽署的應用程式,例如企業營運應用程式,比將個別憑證安裝到受信任的人員存放區更有效率。 信任的人員存放區包含預設視為信任的憑證,因此不會由較高授權單位或憑證信任清單或鏈結驗證。 如需將憑證新增至受信任根憑證授權單位憑證存放區的考慮,請參閱 程式碼簽署最佳做法。
安全性考量
藉由將認證新增至本機電腦憑證存放區 (英文),您會對電腦上所有使用者的憑證信任造成影響。 建議您安裝任何程式碼簽署憑證,以將應用程式套件測試至受信任的人證書存儲。 當不再需要憑證時,請立即移除這些憑證,以防止它們用來危害系統信任。 如果您建立自己的測試憑證來簽署應用程式套件,我們也建議您限制與測試憑證相關聯的許可權。 如需建立用於簽署應用程式套件的測試憑證的相關資訊,請參閱 如何建立應用程式套件簽署憑證。
相關主題