自 Chrome 版本 63.0.3239.84 以来的 ExtensionInstallForcelist 策略问题

ExtensionInstallForcelist policy issue since Chrome version 63.0.3239.84

我正在通过 ActiveDirectory 域为 Chrome 部署 WebExtension。 此域中的计算机无法连接到 Internet。仅托管在 Intranet 中的网站可用。 因此,我使用 ExtensionInstallForcelist 策略在 Chrome 中安装 WebExtension(无需将其上传到 Chrome 网上商店)。 Intranet 中有一个服务器,它托管 WebExtension(.crx 文件)和更新清单 XML 文件(指向 .crx 文件)。

使用 Chrome 版本 62.0.3202.94 一切正常。应用策略后,WebExtension 将安装在 Chrome 中。 WebExtension 是强制安装的,因此用户不必手动激活它。

但是从 Chrome 版本 63.0.3239.84 开始出现问题。 WebExtension 已安装,但立即停用。此外,我观察到一种奇怪的行为。启动 Chrome 后,WebExtension 会激活一小会儿,但随后会直接停用。这种情况会发生几次,直到行为平息。如果关闭并重新启动 Chrome,则会重复此行为。此行为发生在多个设备和其他域中的计算机上。

我检查了 url chrome:// 政策。 ExtensionInstallForcelist 条目已正确应用。

在 chrome_debug.log 中,似乎 Chrome 试图检查某些 url 处的 WebExtension,但检查失败。 "version 63.0.3239.108" 和 "Version 64.0.3282.24 (official build) beta (64-bit)" 也会出现此问题。在同一台机器上使用版本 62.0.3202.94 一切正常。

为了更好地概述,我将在 chrome_debug.log

的摘录中使用以下替换
{extensionID} : The ID of my WebExtension
{url_to_update_manifest} : The url which delivers the update manifest XML file
{value} : A value

摘自chrome_debug.log:

VERBOSE1:content_hash_fetcher.cc(252)] Missing verified contents for {extensionID}, fetching...
VERBOSE1:network_delegate.cc(30)] NetworkDelegate::NotifyBeforeURLRequest: https://clients2.google.com/service/update2/crx?response=redirect&x=uc%26installsource%3Dsignature%26id%3D{extensionID}%26v%3D1.0.1
VERBOSE1:network_delegate.cc(30)] NetworkDelegate::NotifyBeforeURLRequest: chrome-extension://{extensionID}/background.js
VERBOSE1:content_verify_job.cc(230)] job failed for {extensionID} background.js reason:1
VERBOSE1:content_verifier.cc(144)] VerifyFailed {extensionID} reason:1
VERBOSE1:script_context.cc(111)] Created context: [...]
VERBOSE1:content_hash_fetcher.cc(301)] URLFetchComplete for {extensionID} is_success:1 https://clients2.google.com/service/update2/crx?response=redirect&x=uc%26installsource%3Dsignature%26id%3D{extensionID}%26v%3D1.0.1
VERBOSE1:content_verifier.cc(229)] OnFetchComplete {extensionID} success:0
WARNING:chrome_content_verifier_delegate.cc(197)] Corruption detected in policy extension {extensionID} installed at: C:\Users\Testuser\AppData\Local\Google\Chrome\User Data\Default\Extensions\{extensionID}.0.1_2
VERBOSE1:network_delegate.cc(30)] NetworkDelegate::NotifyBeforeURLRequest: http://{url_to_update_manifest}/?os=win&arch=x64&nacl_arch=x86-64&prod=chromecrx&prodchannel=&prodversion=63.0.3239.108&lang=de&acceptformat=crx2,crx3&x=id%3D{extensionID}%26v%3D0.0.0.0%26installsource%3Dreinstall%26uc
VERBOSE1:network_delegate.cc(30)] NetworkDelegate::NotifyBeforeURLRequest: http://{url_to_update_manifest}
VERBOSE1:pending_extension_manager.cc(305)] Extension id {extensionID} was entered for update more than once.  old location: 7  new location: 7  old version: invalid  new version: invalid
VERBOSE1:install_signer.cc(435)] Sending request: {"hash":"{value}=","ids":["{value}","{value}","{value}","{value}","{extensionID}","{value}","{value}"],"protocol_version":1}
VERBOSE1:network_delegate.cc(30)] NetworkDelegate::NotifyBeforeURLRequest: https://www.googleapis.com/chromewebstore/v1.1/items/verify
VERBOSE1:install_signer.cc(460)] Got response: {"protocol_version":1,"invalid_ids":["{extensionID}"],"signature":"{value}==","expiry":"2018-03-13","pubkey_sha1_hash":"{value}"}
VERBOSE1:content_verify_job.cc(230)] job failed for {extensionID} background.js reason:1
VERBOSE1:content_verifier.cc(144)] VerifyFailed {extensionID} reason:1

我还查看了更改日志和 Chromium 源代码,但找不到此行为的原因。

https://chromium.googlesource.com/chromium/src/+log/62.0.3202.94..63.0.3239.84?pretty=fuller&n=10000

https://cs.chromium.org/chromium/src/extensions/browser/content_verifier.cc?sq=package:chromium&l=144

任何帮助将不胜感激,谢谢!

根据您的日志,Chrome 检测到扩展中的更改,因此它会尝试从您的 'local store' 以及 Chrome 网上商店更新您的扩展。

所以您应该检查您的扩展程序中使用的更新 url。

您也可以尝试用 Chrome 63.

重新打包您的扩展

在 manifest.json 中定义 update_url 为我解决了这个问题。 update_url 不需要是真实的 update_url。例如,您可以将 http://localhost/123 定义为 update_url.

以下资源对我有帮助:

https://bugs.chromium.org/p/chromium/issues/detail?id=794219

https://cs.chromium.org/chromium/src/chrome/browser/extensions/install_verifier.cc?l=219&rcl=2c30e2d667b6790965fed75d19cc6b76be700265