Symantec,Thawte,GlobalSign 签发的代码签名证书都可以签名火狐浏览器插件(XPI)文件。如果您还没有代码签名证书,请联系易维信(EVTrust)购买火狐代码签名证书。

第 1 步:下载有关签名工具

请先到 Mozilla FTP 网站下载最新的网络安全服务包 (Network Security Services ,简称: NSS) : ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/ ,对于 Windows 操作系统,NSS 包:nss-3.9.zip 的存放目录为: NSS_3_9_RTM/WINNT5.0_OPT.OBJ/ ,并解包到目录: c:\foxsign\nss-3.9\ ;

还需要下载最新的 Netscape Portable Runtime 包 ( 简称: NSPR) : http://ftp.mozilla.org/pub/mozilla.org/nspr/releases/ ,对于 Windows 操作系统, NSPR 包: nspr-4.6.zip 的存放目录为: v4.6/WINNT5.0_OPT.OBJ/ ,并解包到目录: c:\foxsign\ nspr-4.6\ ;

您还需要有压缩软件,推荐用 WinRAR ,并把 c:\foxsign\nss-3.9\bin\;c:\foxsign\nss-3.9\lib\; c:\foxsign\nspr-4.6\lib\;C:\Program Files\WinRAR 等目录添加系统路径上,以便 DOS 方式下能正常使用以上签名工具。

第 2 步:创建证书存储库文件

在 DOS 方式下输入以下命令,请不要漏了 -d 后面的“ . ”:

c:\foxsign> certutil -N -d .

Enter a password which will be used to encrypt your keys.

The password should be at least 8 characters long,

and should contain at least one non-alphabetic character.

Enter new password:

Re-enter password:

输入密钥管理密码后 (请记牢,以后签名时要用到),会在该目录下生成 3 个证书存储库文件: cert8.db 、 key3.db 和 secmod.db 。

第 3 步:导入PFX格式的代码签名证书到证书存储库

您已经申请了Symantec代码签名证书,并已经得到 PFX 格式的证书文件;请在 DOS 方式下输入以下命令,请不要漏了 -d 后面的“ . ”:

c:\foxsign> pk12util -i mycs.pfx -d .

Enter Password or Pin for "NSS Certificate DB":

Enter password for PKCS12 file:

pk12util: PKCS12 IMPORT SUCCESSFUL

先输入您在第 2 步设置的证书存储库管理密码,再输入您在导出 PFX 证书时设置的密码即可,会提示“ PKCS12 IMPORT SUCCESSFUL(PKCS12 格式证书导入成功 ) ” (PKCS12 格式就是 PFX 格式 ) 。

第 4步:导入根证书和中级根证书,并检查证书是否正常导入

PFX 格式证书中本身已经含有证书颁发者的根证书和中级根证书,但由于 NSS 签名工具Signtool 不支持证书链 (Mozilla 承认这是一个 Bug),您需要联系易维信(EVTrust)获取rootCA.cer,subCA.cer文件,并保存工作目录下,如: c:\foxsign\rootCA.cer 和 c:\foxsign\subCA.cer 。并在 DOS 方式下输入以下命令,请不要漏了 -d 后面的“ . ”:

c:\foxsign> certutil -A -n " Root CA " -t "TC,TC,TC" -d . -i "rootCA.cer"

c:\foxsign> certutil -A -n " Sub CA " -t "c,c,C" -d . -i "subCA.cer"

并输入以下命令检查根证书和代码签名证书是否成功导入证书存储库中:

c:\foxsign> certutil -L -d .

22689013c 2abed23ee 6c 9a 95410b4_7dc62150 -9c 81-4ee5-8d03-1b 67c 2ba1fc2 u,u,u

WoSign Code Signing Authority - The USERTRUST Network C,C,C

UTN - USERFirst-Object CT ,C,C

如果显示以上信息,就表明证书导入成功,请注意第 1 行一直到“ u,u,u ”之前的一长串字符,这是系统自动分配的您的代码签名证书的证书别名 (alias) ,后面签名时会用到。

第 5 步:数字签名火狐插件XPI文件

本签名指南使用 Mozilla 网站上的一个插件 (Adblock Plus),原插件是没有签名的 ( 参见后面附图 ) ,在 c:\foxsign 目录下新建一个 signed 目录,再把 XPI 文件解包后的文件拷到此目录下,并在 DOS 方式下输入以下命令,请不要漏了 -d 后面的“ . ”,命令中的 alias 复制上一步看到的证书别名,如: 22689013c 2abed23ee 6c 9a 95410b4_7dc62150 -9c 81-4ee5-8d03-1b 67c 2ba1fc2 ,而命令中的 password 就是证书存储库管理密码:

c:\foxsign> signtool -d . -k alias -p password signed/

using certificate directory: .

Generating signed/META-INF/manifest.mf file..

--> chrome/adblockplus.jar

--> chrome.manifest

--> components/nsAdblockPlus.js

--> components/nsAdblockPlus.xpt

--> defaults/preferences/adblockplus.js

--> install.js

--> install.rdf

Generating zigbert.sf file.

tree "signed/" signed successfully

从最后一行可以看出:已经签名成功!会在 signed/ 目录下生成一个 META-INF 子目录,此目录中有 3 个文件: zigbert.rsa 、 manifest.mf 和 zigbert.sf ,请注意:文件 zigbert.rsa 含有签名信息,签名后不得修改和删除 signed/ 目录下的所有文件,否则会提示签名验证失败而无法安装 。

第6步:重新打包为XPI文件

把 signed/ 目录下的文件使用压缩工具打包成 zip 文件,推荐使用 WinRAR ,并使用 DOS 方式打包,因为 XPI 签名要求打包文件中的第一个文件是含有签名信息的 zigbert.rsa ,否则无法正常验证签名,而一般的压缩软件是按照字母顺序排列文件的。所以,必须先做一个指定压缩顺序的列表文件 list.txt ,如本例:

META-INF\zigbert.rsa

META-INF\manifest.mf

META-INF\zigbert.sf

chrome\adblockplus.jar

chrome.manifest

install.rdf

install.js

components\nsAdblockPlus.js

components\nsAdblockPlus.xpt

defaults\preferences\adblockplus.js

再在 DOS 方式下输入: c:\foxsign> winrar a test.zip @list.txt 然后把.zip 文件改名为 .xpi 文件即可: c:\foxsign> ren test.zip test.xpi 这样,完成了XPI文件的签名,可以放到网上供用户下载安装了!

第7步:测试和演示已经签名的XPI插件

本指南的签名过程使用了 Mozilla 网站上的一个插件 (Adblock Plus),原插件是没有签名的,在火狐浏览器中点击运行时会显示“未签名”,如图1所示:

使用火狐浏览器运行 Google 为火狐浏览器定制的 搜索工条插件,会显示软件发行者名称为: Google Inc.( http://dl.google.com/firefox/google-toolbar-win.xpi ) ,如图2所示:

火狐浏览器插件(XPI 文件)签名指南的更多相关文章

  1. FireFox 插件xpi文件签名2

    上一篇https://www.cnblogs.com/nightnine/p/6140676.html 提交到官方网站上的签名,官方已经拒绝了 于是手动自己签名 官方文档:https://develo ...

  2. php开发工具之火狐浏览器插件

    相信做开发的都有一种火狐情怀吧!  下面来介绍下一些自己在php开发工程中用到几个火狐浏览器插件. 1.[firebug]: 这个插件可以说是一个神奇,功能不用过对介绍. 2.[hostAdmin]: ...

  3. windows下使用火狐浏览器插件AutoProxy+MyEnTunnel+SSH访问海外站点(转)

    windows下使用火狐浏览器插件AutoProxy+MyEnTunnel+SSH访问海外站点   平时需要查阅一些技术资料,光走VPN太浪费流量,所以这儿教大家一种使用火狐浏览器的插件 AutoPr ...

  4. 解决 Firefox 火狐浏览器下载 .exe 文件卡住的问题 以及关闭测试版cache2

    解决 Firefox 火狐浏览器下载 .exe 文件卡住的问题 在firefox浏览器地址栏里输入:about:config 点“我保证会小心”,显示firefox的高级配置列表 在配置页面的搜索框里 ...

  5. 火狐浏览器插件Modify Headers伪造IP地址

    安装插件:先打开火狐浏览器 => 找到下载好的 modify_headers.xpi 插件文件 => 鼠标按住插件文件不放,拖拽到火狐浏览器界面 => 按提示重启浏览器 => ...

  6. 在NPAPI开发火狐浏览器插件在NPAPI插件

    1.插件是什么 插件是一种遵循一定规范的应用程序接口编写出来的程序.插件必须依附于一个宿主程序,为宿主程序提供增强功能.插件的种类有很多,这里主要讨论浏览器插件. IE下利用OLE和COM技术开发的浏 ...

  7. 火狐浏览器打开html文件,中文乱码

    当html文件为: 解决方法: 将   <meta http-equiv="Content-Type" content="text/html; charset=UT ...

  8. 火狐浏览器插件--xpath利器

    以前在做web自动化的时候,免不了要找定位啊什么的.一层层找下来太痛苦了,时间也浪费了一天写不了啥.特别是在最开始接触自动化的时候,我们系统坑爹的只支持IE.后来换公司了,在偶然情况下,得知了fire ...

  9. 火狐浏览器安装 Modify Headers 插件

    一.火狐浏览器插件安装 这里以火狐浏览器的Modify Headers插件安装为例,展示火狐插件的安装: 1.打开火狐浏览器,右上角选择“附加组件” 2.搜索Modify Headers插件 3.安装 ...

随机推荐

  1. 【转】webview的几个问题

    我们在native与网页相结合开发的过程中,难免会遇到关于WebView一些共通的问题.就我目前开发过程中遇到的问题以及最后得到的优化方案都将在这里列举出来.有些是老生常谈,有些则是个人摸索得出解决方 ...

  2. string转date

    /*util-->sql*/ java.util.Date utdt; java.sql.Date sqldt =null; SimpleDateFormat simFormat = new S ...

  3. ajax接收处理json格式数据

    ajax在前后端的交互中应用非常广泛,通过请求后台接口接收处理json格式数据展现在前端页面. 下面我们来简单用 ajax在本地做一个接收并处理json的小例子 首先我们要新建一个叫做data的jso ...

  4. Django day27 认证组件,权限组件()

    一:认证组件 1.写一个类 class LoginAuth(): # 函数名一定要叫authenticate,接收必须两个参数,第二个参数是request对象 def authenticate(sel ...

  5. 51nod 1222 莫比乌斯反演

    思路: yhx找的反演题 题解已经烂大街了 #pragma GCC optimize("O3") //By SiriusRen #include <bits/stdc++.h ...

  6. 【Leetcode】92. Reverse Linked List II && 206. Reverse Linked List

    The task is reversing a list in range m to n(92) or a whole list(206). All in one : U need three poi ...

  7. Unity学习-摄像机的使用(六)

    快速对齐摄像机 [选择摄像机-GameObject-Align With View] Game模板中显示的界面,就是摄像机拍摄后的画面 本次学习案例 添加一个地形,一个点光源,三个Cube   了解摄 ...

  8. ansible publishing service

    # ansible 初始化服务机 - hosts: newserver vars: - basedir: opt tasks: - name: 安装常用依赖环境 yum: name={{ item } ...

  9. 如何扒取一个网站的HTML和CSS源码

    一个好的前端开发,当看到一个很炫的页面的时候会本着学习的心态,想知道网站的源码.以下内容只是为了大家更好的学习,拒绝抄袭,支持正版. 1 首先我们要有一个chrome浏览器 2 在本地创建相关文件夹 ...

  10. CSS知识点整理(2):框模型,定位

    1. 框模型:Box Model 规定了元素处理元素框处理元素内容.外边距.边框.内边距的方式. 2. 当边距给定的值 可以小于4个.CSS定义了一些规则.处理这中情况: 如果缺少左外边距的值,则使用 ...