5

更新:解决了一部分,但没有解决其他

  1. 我现在有 CRX 更新(它没有重建)。

  2. 但是,Chrome 不会接受 https URL 中的 XML 或 CRX。

我相信#2是因为它是一个自签名证书。有谁知道是否有办法解决这个问题?(这纯粹是为了开发,所以在内部托管)

原帖:

我创建了一个打包的扩展,托管在我的内部网站上,但通过从桌面拖动它被添加到 Chrome(因为 Chrome 不允许通过外部网站安装打包的扩展 - 请参见此处:使用我的 URL 添加 ExtensionInstallSources 首选项到 Chrome首选项,仍然不允许安装“.crx”打包应用程序)。

清单已update_url设置为位于我网站上的 XML 文件。该 XML 文件的 crx 文件的 url 设置在updatecheck codebase='...'. 这两个文件都存在于网站上并且可以找到。我还在XML 文件2.0.0.2和. 我还对扩展的 index.html 文件进行了更改。2.0.0.2manifest.json

我检查了appid它,它在 XML 文件和 Chrome 中是相同的。

尽管单击“立即更新扩展”按钮大约 50 次,并等待 10 分钟,但它并没有更新。

注意:我确实将站点托管在我的主机文件中的内部 ip 192.168.1.108 作为别名,myinternal.fake但这适用于 chrome 和 firefox,所以我认为这不是问题

更新 XML 文件(位于:https://myinternal.fake/updates/helloworld.xml

<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
    <app appid='akchdaojnpiglpjeiamjpacbkppcgbgj'>
        <updatecheck codebase='https://myinternal.fake/helloworld.crx' version='2.0.0.2' prodversionmin='23' />
    </app>
</gupdate>

清单.json

{
    "manifest_version": 2,
    "name": "Hello World",
    "version": "2.0.0.2",
    "minimum_chrome_version": "23",
    "update_url": "https://myinternal.fake/updates/helloworld.xml",
    "icons": 
    {
        "16": "icon_16.png",
        "128": "icon_128.png"
    },
    "app": 
    {
        "background": 
        {
            "scripts": 
            [
                "main.js"
            ]
        }
    }
}

编辑:我还检查了标题是 Chrome 可接受的标题(据此:http: //developer.chrome.com/dev/extensions/hosting.html)。它将 CRX 文件作为“文本/纯文本”发送,并且不发送标头X-Content-Type-Options: nosniff,因此它应该是有效的。

此外,当我从 更改为httpshttp,现在当我单击“立即更新扩展”时,扩展会消失一瞬间,这表明它现在正在读取 XML,但仍不接受更新!

4

2 回答 2

3

问题在于自签名证书和 Chrome。Chrome 不接受扩展更新形式的自签名证书,除非它们是“接受”的授权。这些步骤将使其工作:

  1. 请按照以下步骤操作:https ://stackoverflow.com/a/15076602/857025导出您的证书,然后将其作为授权导入

  2. 关闭铬

  3. 重启 Chrome

  4. 如果打开,则关闭扩展窗口

  5. 通过“chrome://extensions”重新打开,然后单击“立即更新扩展”

然后它应该更新位于自签名 https 连接上的扩展程序。

更新这不是一个完美的解决方案,因为 Chrome 在接受自签名证书方面似乎有点不稳定。它随机停止查看更新。如果我切换回使用常规 http(对于 update_url 和 CRX 的 url),每次都会发生更新。

我检查了一下,我的证书仍然是受信任的权威,但 Chrome 突然停止识别更新,所以这肯定有问题。

于 2013-06-04T23:42:25.700 回答
2

顺便说一句,谷歌停止支持更新在 Chrome Webstore 之外托管的扩展:http: //blog.chromium.org/2013/11/protecting-windows-users-from-malicious.html

于 2015-08-03T05:03:52.503 回答