關於Active控件的電子簽名

兩種方案:一是自己製作證書,客戶端安裝證書後就可以識別該控件;二就是買官方的嘍,在國內找verisign的代理,負責各種電子簽名,任何一臺瀏覽器都可以識別該證書。該公司官方網址:http://www.verisign.com/products-services/security-services/code-signing/digital-ids-code-signing/index.html

沒錢的就自己做自己的證書吧 ,至少安裝一遍後以後就不用安裝了,所有的active控件均可以使用此證書。證書的效果如圖:

證書的安裝位置:

證書的製作以及控件打包過程,轉載如下:

1. 將ocx文件以及第三方dll文件打包成cab文件:
Internet軟件分發單位是“軟件包”,它由包含.INF文件或軟件分發.OSD文件(或兩者都包括)的.CAB文件所組成。一個分發單位也可以包含軟件組件,如 ActiveX 控件(.OCX)、.DLL文件、.EXE文件、Java類文件或小程序。當Web頁上OBJECT元素的CODEBASE特性引用包含.INF文件的.CAB文件時,Internet Explorer將自動把.CAB文件作爲軟件分發單位下載並安裝,每次訪問時還會自動檢測版本並進行更新。
INF文件是一個文本文件,指定運行控件所需要下載或者呈交的文件(比如.DLL或者其它.OCX)。一個.INF文件就捆綁了.CAB壓縮文件所有的必須文件。 缺省情況下,與現有硬盤中文件版本號相同的文件不被下載。
先自己寫了一個inf文件,其中信息包括將.ocx文件,以及相關的.dll文件打包,並下載到文件夾:/WINDOWS/system32,詳細標註如下:
[version]    
signature="$CHICAGO$"
AdvancedINF=2.0
 
[DefaultInstall]    
CopyFiles=install.files
RegisterOCXs=RegisterFiles
[RInstallApplicationFiles]
CopyFiles=install.files
RegisterOCXs=RegisterFiles
[DestinationDirs]
install.files=11 
[SourceDisksNames]    
1=%DiskName%,TestCAB.CAB,1 
 
[Add.Code]
pcpos.ocx=pcpos.ocx
Comm.dll=comm.dll
pcpos.dll=pcpos.dll
TCPCLNT.dll=TCPCLNT.dll
 
[install.files]
pcpos.ocx=pcpos.ocx
Comm.dll=comm.dll
pcpos.dll=pcpos.dll
TCPCLNT.dll=TCPCLNT.dll
 
[SourceDisksFiles]
pcpos.ocx=1
Comm.dll=1
pcpos.dll=1
TCPCLNT.dll=1
 
[pcpos.ocx]
file-win32-x86=thiscab    
RegisterServer=yes    
clsid={719A1D6E-7099-4123-9D63-F0118AFF2D61}    
DestDir=11    
FileVersion=1,0,0,1
 
[Comm.dll]
file-win32-x86=thiscab    
RegisterServer=yes                         
DestDir=11    
FileVersion=1,0,0,1
 
[pcpos.dll]
file-win32-x86=thiscab    
RegisterServer=yes      
DestDir=11    
FileVersion=1,0,0,1
 
[TCPCLNT.dll]
file-win32-x86=thiscab    
RegisterServer=yes      
DestDir=11    
FileVersion=1,0,0,1
 
[RegisterFiles]    
%11%/pcpos.ocx
 
註釋:
"thiscab" 是一個關鍵字,意指包含該INF的CAB文件。也可以從網上下載所需要的DLL文件,只要指定一個HTTP 網址即可,如:
file-win32-x86=http://www.mysite.com/mydir/NEEDED.DLL
關鍵字"file-win32-x86" 指定平臺是 x86。
文件版本號可見屬性。
"DestDir"指的是裝載目錄或者文件的地址: 11 指定爲系統目錄 WINDOWS/ /SYSTEM32;
"clsid" 指的是要安裝控件的CLSID。
 
製作cab:
使用/WINDOWS/system32/iexpress.exe。
1)        選擇“Create new Self Extraction Directive file”,點擊下一步。
2)        選擇“Create compressed files only(ActiveX Installs)”,點擊下一步。
3)        點擊Add,文件添加(pcpos.ocx,pcpos.dll,comm.dll,tcpclnt.dll),點擊下一步。
4)        點擊Browse,輸入.CAB文件的存放地址(包含所取文件名),這裏取TestCAB.CAB,並且要選中 “Store files using Long File Name inside Package”。點擊下一步。
5)        選擇“Don’t save”,一直點擊下一步,直到完成。
 
注意:
如果控件已經在客戶機註冊,並且不是通過.CAB的方式註冊,那麼通過.CAB自動註冊的時候,該控件將無法被更新。必須先手動刪除該文件。
 
2. 對CAB文件進行數字簽名
傳說中數字簽名之後就可以不出現提示而自動下載,所以也試試:
在/Microsoft Visual Studio .NET 2003/SDK/v1.1/Bin 中間有三個小工具,就用他們來實現數字簽名。
1.Makecert.exe ---證書創建工具
2.Cert2Spc.exe ---發行者證書測試工具
3.Signcode.exe ---文件簽名工具
 
步驟:
1)        makecert -ss name -n "CN=公司名" -sv d:/pos.pvk -r d:/pos.cer 其中sk-表示主題的密鑰容器位置,ss-主題的證書存儲名稱, n-證書頒發對象,r-證書存儲位置,-sv 導出私鑰文件(爲了簽名使用)。注意:這個時候會讓輸入三次密碼,三次要完全一致。
2)        使用Cert2Spc生成spc發行者證書(可選):cert2spc d:/pos.cer c:/pos.spc
3)        雙擊signcode,不帶參數會啓動簽名嚮導。先選擇要簽名文件,下一步,選擇“自定義”,下一步,選擇“從文件選擇”,添加剛生成的pos.cer證書,下一步,選擇剛生成的私鑰pos.pvk,再下一步,可spc證書,再一直下一步。添加時間戳,在時間戳填入http: //timestamp.verisign.com/scripts/timstamp.dll TestCAB.CAB,再下一步完成。
 
這樣就對CAB文件進行了簽名,但是這個時候點擊這個文件會發現證書不可用,原因是證書沒有安轉。文件屬性->數字證書->詳細信息-〉查看證書-〉安裝證書,進入安裝證書嚮導,存放區域選擇“受信任的根證書頒發機構”,點擊完成即可。
 
在客戶端測試:
1)        加入證書,瀏覽器-〉工具-〉Internet選項-〉內容-〉證書-〉受信任的頒發機構-〉導入證書。
2)        在有證書的情況下,如果服務器沒有加入“可信任網址”,提示下載的時候會顯示證書所籤內容,沒有證書則提示爲“未知”。
3)        如果服務器已加入“可信任網址”,並且已導入證書,則不提示任何信息,在用戶毫無感覺情況下下載。如果沒有加入“可信任網址“,控件可以正常下載但仍然不能正常使用,與是否簽名無關。
 
四、問題:
1.是否可以不添加“可信任網址”。
2.數字簽名的作用,授權證書與不授權證書的區別。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章