我正在将基于SDK的Firefox扩展转换为WebExtensions,我遇到了更新扩展的问题。当前扩展程序托管在我自己的域(这是一个HTTP域)以及 update.rdf 文件中。
现在,对于基于SDK的附加组件,只要使用McCoy工具签署更新清单并且清单中提供了更新文件的有效哈希,就可以通过HTTP进行更新。除此之外, install.rdf 将保存用于签署 update.rdf 的密钥的公钥部分。
似乎没有选项可以使用Web扩展(公钥没有清单条目,签名没有更新清单( .json )条目)。
这是否意味着Firefox只允许通过HTTPS更新自托管扩展程序?这将如何影响当前托管在HTTP域上的基于SDK的扩展?他们能否收到(至少一次)更新?
答案 0 :(得分:2)
您似乎已经确定,基于WebExtensions的加载项的 update.rdf 必须通过HTTPS而不是HTTP提供。 update.rdf文件的URL必须是HTTPS。 documentation for the update_url
property in the manifest.json applications
key在这一点上是明确的:
update_url
是指向add-on update manifest的链接。请注意,该链接必须以" https"开头。此密钥用于自行管理扩展更新(即不通过AMO)。
无法使用其他类型的加载项可用的备用安全方法,即提供updateKey
(并在 update.rdf 中签名)扩展程序附带的install.rdf文件。
基于附加SDK的扩展以及其他类型的非WebExtensions附加组件将继续能够以与他们一直相同的方式通过HTTP接收 update.rdf 。
如果您的问题是将附加组件从基于附加组件的附加组件转换为基于WebExtensions的附加组件,则您需要更新该扩展程序,以更改更新的URL送达。这可以在转换到WebExtensions之前的某个版本中,也可以在同一时间。无论哪种方式,它只是加载项的新版本(用 update.rdf 表示,通过HTTP提供并适当签名)。然后,新版本将具有update_url
(WebExtensions)或updateURL
(所有其他类型),其中URL使用HTTPS方案。然后,所有后续 update.rdf 文件将通过HTTPS提供。