標籤:windows network Firefox瀏覽器 作業系統 網路安全
Symantec,Thawte,GlobalSign 簽發的程式碼簽署認證都可以簽名Firefox瀏覽器外掛程式(XPI)檔案。如果您還沒有程式碼簽署認證,請聯絡易維信(EVTrust)購買Firefox程式碼簽署認證。
第 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 步:數位簽章Firefox外掛程式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) ,原外掛程式是沒有簽名的,在Firefox瀏覽器中點擊運行時會顯示“未簽名”,1所示:
650) this.width=650;" width="367" height="357" alt="測試和示範已經簽名的XPI外掛程式" src="http://www.evtrust.com/support/images/unSigned-FireFox.gif" />
使用Firefox瀏覽器運行 Google 為Firefox瀏覽器定製的 搜尋工條外掛程式 ,會顯示軟體發行者名稱為: Google Inc.( http://dl.google.com/firefox/google-toolbar-win.xpi ) ,2所示:
650) this.width=650;" width="367" height="357" alt="測試和示範已經簽名的XPI外掛程式" src="http://www.evtrust.com/support/images/Signed-FireFox-google.gif" />
Firefox瀏覽器外掛程式(XPI 檔案)簽名指南