你如何签署你的Firefox扩展?

时间:2008-09-24 20:56:06

标签: firefox build-automation certificate code-signing

我已经为Firefox开发了一些扩展程序,我很生气,很难让扩展程序签名。如果某个扩展程序没有签名,则在安装时会显示“作者未经过验证”,而且对我来说只是看起来不对。

我有一个简单的构建脚本,可以从源代码构建我的.xpi文件,而且我有一个PKZip的许可副本(根据许多教程需要构建一个Firefox需要的签名xpi文件),但我没有找不到一种方法可以获得实际可行的免费/廉价证书或一套可以解决问题的指令。

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

你是怎么解决这个问题的?在构建扩展程序时,我需要做些什么来自动安全地签名?

编辑:我很欣赏谷歌的点击率,但他们提供的步骤不够完整,无法确定如何获得有效的证书。我的感觉让我想起了这个经典之作:

alt text

6 个答案:

答案 0 :(得分:4)

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

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

e.g。

SIgning could not be verified. -260

答案 1 :(得分:3)

我在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或   微软)。

答案 2 :(得分:3)

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

我在XPI Forma上写了几篇帖子,并使用java命令行工具为signing编写了一个howto。

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

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:1)

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

详细描述了获取证书本身的步骤here

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

  • 从您的浏览器中获取私钥(例如从您的钥匙串下载为.p12 - 不设置密码)并通过openssl pkcs12 -in key.p12 -nodes -out private.key -nocerts将其转换为PEM格式
  • 打开您从Unicert下载的.pem文件,在其下方添加私钥,以及私钥下方herePublic 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
  • 使用pip install https://github.com/nmaier/xpisign.py/zipball/master
  • 安装xpisign.py
  • 运行xpisign -k cert_with_key_and_ca.pem unsigned.xpi signed.xpi
  • 拖动&将signed.xpi放入Firefox,您应该看到作者姓名在扩展名旁边有(作者未验证)消息之前的位置。