Symantec,Thawte,GlobalSign 簽發的代碼簽名證書均可以簽名火狐瀏覽器插件(XPI)文件。若是您尚未代碼簽名證書,請聯繫易維信(EVTrust)購買火狐代碼簽名證書。html
請先到 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\ ;chrome
還須要下載最新的 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 方式下能正常使用以上簽名工具。安全
在 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.google
Enter new password:操作系統
Re-enter password:
輸入密鑰管理密碼後 (請記牢,之後簽名時要用到),會在該目錄下生成 3 個證書存儲庫文件: cert8.db 、 key3.db 和 secmod.db 。
您已經申請了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 格式 ) 。
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) ,後面簽名時會用到。
本簽名指南使用 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/ 目錄下的全部文件,不然會提示簽名驗證失敗而沒法安裝 。
把 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文件的簽名,能夠放到網上供用戶下載安裝了!
本指南的簽名過程使用了 Mozilla 網站上的一個插件 (Adblock Plus) ,原插件是沒有簽名的,在火狐瀏覽器中點擊運行時會顯示「未簽名」,如圖1所示:
使用火狐瀏覽器運行 Google 爲火狐瀏覽器定製的 搜索工條插件 ,會顯示軟件發行者名稱爲: Google Inc.( http://dl.google.com/firefox/google-toolbar-win.xpi ) ,如圖2所示: