Firefox 插件注册、检测和自动签名方法
内容提要
Firefox 插件安装需签名,未签名 XPI 无法在正式版使用。开发者需在 Mozilla 开发者中心注册,通过 Gecko ID 固定身份,上传 XPI 后自动检测并生成签名文件。自行分发可选 unlisted 渠道,用 web-ext 工具自动化上传和下载签名 XPI,注意保护 API 密钥。开发调试用 about:debugging,正式发布用签名安装。
延伸解读
Gecko ID 是插件身份的关键
Firefox 插件必须使用固定的 Gecko ID,相当于插件的身份证。首次上传后,Mozilla 会自动创建项目,但后续更新必须沿用同一 ID,否则会被视为不同插件。开发者应在 manifest.json 中明确设置该 ID,并确保版本号递增,因为同一 ID 和版本号不能重复签名。
自行分发与商店发布的区别
选择“自行分发”(unlisted)渠道,插件不会出现在商店中,但可获得签名,适合在自己的网站上分发。若想公开推广,则需选择商店发布。两种渠道的签名流程相同,但分发方式不同。开发者应根据需求选择,避免混淆。
API 密钥安全注意事项
使用 web-ext 自动化签名时,API Key 和 Secret 相当于账号密码,绝不能写入源码或提交到 Git。建议用环境变量传递,并限制文件权限。若密钥泄露,应立即在开发者中心重新生成,使旧密钥失效。
签名验证与安装检查
签名后的 XPI 应包含 META-INF 目录下的签名文件,但最终需在正式版 Firefox 或 ESR 中实际安装验证。通过 about:addons 安装后,重启浏览器插件仍存在,才算流程成功。开发调试可用 about:debugging,但重启后失效,仅适合临时测试。
Q&A
Firefox 插件安装时提示“插件损坏”或“签名无法验证”是什么原因?
Firefox 正式版和 ESR 版本在安装 XPI 时会强制检查 Mozilla 签名,未签名的 XPI 即使代码正常也会提示插件损坏或签名无法验证。
如何在 Firefox 中临时加载未签名的插件进行开发调试?
可以使用 about:debugging 页面临时加载未签名的插件,但 Firefox 重启后插件会消失,仅适合开发调试,不能用于正式发布。
Firefox 插件开发者如何注册并提交插件?
开发者需登录 Mozilla 插件开发者中心(addons.mozilla.org/developers/),使用 Mozilla 账号登录并同意开发者协议。首次上传插件后,开发者中心会自动创建项目,无需提前注册插件 ID。
Firefox 插件的 Gecko ID 有什么作用?
Gecko ID 是 Firefox 插件的唯一标识,相当于身份证。后续更新版本必须使用同一个 ID,不能随意更换。
如何通过 web-ext 工具自动签名 Firefox 插件?
首先在开发者中心生成 API 凭据,将 API Key 和 Secret 保存为文件并设置权限。然后使用 web-ext 命令,通过环境变量传递密钥,执行 `npx --yes web-ext@latest sign --channel unlisted --source-dir ./firefox-extension --artifacts-dir ./artifacts`,即可自动上传、检测并下载签名后的 XPI。
Firefox 插件自行分发(unlisted)和商店发布有什么区别?
自行分发(unlisted)适合在自己的网站上提供下载,不需要上架商店;商店发布则是公开推广。两者都需要 Mozilla 签名,但 unlisted 渠道不会在商店中公开列出。
如何安全地保存和使用 Firefox 插件的 API 密钥?
API 密钥包括 API Key 和 Secret,Secret 相当于密码,不应写入源码或提交到 Git。建议将密钥保存为文件,设置权限为 600,并加入 .gitignore。使用时通过环境变量传递,避免出现在命令行历史中。
Firefox 插件上传后如何检查是否签名成功?
可以解压 XPI,检查是否存在 META-INF 目录下的签名文件(如 mozilla.rsa、mozilla.sf、cose.sig)。但最终确认需在正式版 Firefox 或 ESR 中通过 about:addons 安装,重启后插件仍存在才算成功。