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. 关于EditText的android:maxLength属性的注意事项

    一直以为在xml布局文件中对EditText添加 android:maxLength="30";属性是控制EditText字符数的.想当然的以为一个中文占2个字符,一个英文占1个字 ...

  2. Windows7安装SQLServer 2008图解

    Windows7安装SQL Server 2008图解        这几天因为需要,一直想安装SQL Server 2008来作为Web后台的数据库进行些实验,但总是没有时间,今天终于有时间了,便安 ...

  3. Linux文件属性相关补充及软硬连接

    第1章 文件属性相关 1.1 文件的属性 1.1.1 扩展名 windows  通过扩展名区分不同的类型的文件 linux 扩展名是给人类看的 方便我们区分不同类型文件 .conf      配置文件 ...

  4. 父页面调用子页面js的方法

    iframe子页面调用父页面javascript函数的方法今天遇到一个iframe子页面调用父页面js函数的需求,解决起来很简单,但是在chrome浏览器遇到一点小问题.顺便写一下iframe的父页面 ...

  5. 拼接sql ()

    SELECT ID,FORMNAME,NODENAME,SEQUENCE, NAME, STATE, NOWTIMES,      WORK.FQREALNAME||'('||FQDEPT.FULLN ...

  6. Flask小总结+实例化Flask参数以及对app的配置

    Flask 小而精 三方组件全 稳定性相对较差 1.启动: from flask import Flask app = Flask(__name__) app.run("0.0.0.0&qu ...

  7. 浏览器被“hao123.3377.com”主页劫持的解决办法

    问题描述: 浏览器被一个叫做hao123.3377的类似hao123网址导航的家伙,强行贴上.狗皮膏药一样. 问题解决: 尝试了网上说的包括下载360什么的,都不咋好用.后来发现是在激活win10(盗 ...

  8. 重绘DataGridView的DataGridViewCheckBoxCell控件

    最近项目中要用到在DataGridView单元格里面放置一个带有文本的 DataGridViewCheckBoxCell控件但原有 的是不支持的然后我就想着重写个 DataGridViewCheckB ...

  9. Java_Web三大框架之Hibernate操作数据库(三)

    使用Hibernate操作数据库需要七个步骤: (1)读取并解析配置文件 Configuration conf = newConfiguration().configure(); (2)读取并解析映射 ...

  10. linux下vim命令汇总

    一. 进入vi的命令 vi filename : 打开或新建文件,并将光标置于第一行首 vi +n filename : 打开文件,并将光标置于第n行首 vi + filename : 打开文件,并将 ...