你如何签署你的 Firefox 扩展?

Posted

技术标签:

【中文标题】你如何签署你的 Firefox 扩展?【英文标题】:How do you sign your Firefox extensions? 【发布时间】:2010-09-12 21:30:00 【问题描述】:

我已经为 Firefox 开发了几个扩展程序,但我很恼火的是很难为扩展程序签名。当扩展程序未签名时,它会在安装时显示“作者未验证”,对我来说这看起来是错误的。

我有一个简单的构建脚本,可以从源代码构建我的 .xpi 文件,并且我有 PKZip 的许可副本(根据许多教程,构建 Firefox 所需的签名 xpi 文件需要它),但我没有'没有找到一种方法来获得真正有效的免费/便宜的证书或一组可以解决问题的说明。

由于我的扩展是免费的,我不想花 400 美元购买商业证书,但我不介意花 50 美元左右来完成它。我有 Linux 和 Windows 机器,虽然我的构建脚本目前使用的是 Windows,而且使用起来最方便。

你是怎么解决这个问题的?我需要做什么才能在构建扩展程序时自动且安全地对其进行签名?

编辑:我很欣赏 Google 的点击,但他们提供的步骤对于如何真正获得有效的证书还不够完整。我得到的感觉让我想起了这个经典:

【问题讨论】:

【参考方案1】:

如果您有开源项目,您可以从 Unizeto 获得免费的代码签名证书。

自己获取证书的步骤详细描述here。

获得证书后,请执行以下操作:

从您的浏览器中获取私钥(例如,从您的钥匙串中将其下载为 .p12 - 不要设置密码)并通过 openssl pkcs12 -in key.p12 -nodes -out private.key -nocerts 将其转换为 PEM 格式

打开您从 Unicert 下载的 .pem 文件,在其下方添加您的私钥,并在私钥下方添加来自 here 的 Public Key of Certum Level III CA,如下所示:

-----BEGIN CERTIFICATE----- [your certificate from Certum] -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- [the private key you just converted from the .p12 file from your keychain] -----END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- [the Certum Level III CA public key you just downloaded] -----END CERTIFICATE-----

将此文件另存为cert_with_key_and_ca.pem 安装xpisign.py 和pip install https://github.com/nmaier/xpisign.py/zipball/master 运行xpisign -k cert_with_key_and_ca.pem unsigned.xpi signed.xpisigned.xpi 拖放到 Firefox 中,您应该会在扩展名旁边看到 (作者未验证) 消息之前看到作者姓名。

【讨论】:

【参考方案2】:

我已使用 comodo 证书签署 XPI。这是当时最便宜的选择。

我在XPI Format 上写了几篇文章,并使用java 命令行工具为signing 写了一个howto。

我的工具XPISigner 大大简化了流程,并且可以集成到构建系统中。

我已删除该工具,因为它不再适用于 FF4 或更高版本。如果有人想修复,请在http://code.google.com/p/xpisigner/ 上找到源代码。

【讨论】:

这真的很有帮助,谢谢 - 很棒的信息。 Comodo 证书是“代码签名”证书,一年花费大约 110 英镑吗? 终于有足够的代表来回答你了;)就是这样。我想我去年通过混淆网站让我以美元购买而便宜了一点。当时与欧元的汇率相当优惠。您可能会找到提供更便宜的经销商,我想我在这里的另一个答案中看到了一些。 仅供参考,XPISigner 在 Firefox 4 和一些 CA 上存在一些问题。【参考方案3】:

避免使用 GoDaddy 代码签名证书,因为必要的中间 CA 证书默认情况下不在 Firefox 中。 C=US,ST=Arizona,L=Scottsdale,O=GoDaddy.com\,Inc.,OU=http://certificates.godaddy.com/repository,CN=GoDaddy Secure Certification Authority,SERIALNUMBER=07969287'

如果您使用它签名,您的用户将会收到签名错误。

例如

无法验证签名。 -260

【讨论】:

这似乎仍然是个问题。在此页面上注明developer.mozilla.org/en/Signing_a_XPI,这会导致此错误条目bugzilla.mozilla.org/show_bug.cgi?id=321156。【参考方案4】:

Tucows 以每年 75 美元的价格出售 Comodo 代码签名证书,据我所知,这是最便宜的(https://author.tucows.com/,“代码签名证书”部分)。这对我来说仍然太多钱,所以我没有尝试它是如何工作的。不是我可以尝试,据我所知,您需要成为注册组织才能购买 Comodo 证书。

对于 Ascertia,获得证书很容易 (http://www.ascertia.com/onlineCA/Issuer/CerIssue.aspx) - 但这样的证书与自发证书一样毫无价值,因为您需要导入他们的根证书才能看到效果。

【讨论】:

【参考方案5】:

是的,不幸的是,XPI 签名非常重要。我建议搜索/发布到 mozilla 新闻组(dev-extensions、项目所有者@mozdev、irc.mozilla.org),并尝试与让它工作的人取得联系。

【讨论】:

【参考方案6】:

我在 Google 中发现的是:http://www.mercille.org/snippets/xpiSigning.php,其中指出:

如果您不想要广告 证书或买不起, Ascertia可以免费为您提供 证书,但把它变成一个 代码签名证书需要一些 额外的工作,我已经详细说明了 another page.

我不能说我已经尝试过了。 在http://developer.mozilla.org/en/Signing_a_XPI 上面写着:

最便宜的普遍支持 (Mozilla、Java、Microsoft)证书 似乎是 Comodo Instant-SSL 提供。你可以免费获得 开源开发者证书 来自 Unizeto Certum,但他们的根源 证书仅存在于 Mozilla Firefox 和 Opera(不是 Java 或 微软)。

【讨论】:

不幸的是,目前尚不清楚要获得 Ascertia 上的 哪个 证书,并且“另一页”目前大部分是空白的。我想要一些更具体的东西:) 是的,我也看过第二页 - 这就是我购买 PKZip 的原因。我究竟如何从 Unizeto 获得正确的证书?获取它的 URL 是什么? 是的,我也尝试跟进,但我也无法弄清楚第 2 步。

以上是关于你如何签署你的 Firefox 扩展?的主要内容,如果未能解决你的问题,请参考以下文章

firefox 怎样调试android页面

如何防止 Selenium 3.0 (Geckodriver) 创建临时 Firefox 配置文件?

有没有办法gpg签署所有以前的提交?

去掉Firefox的标题栏

PDF电子签名。如何与合法签名的人签名紧密?

教你使用Vue.js的DevTools来调试你的vue项目