兩種方案:一是本身製做證書,客戶端安裝證書後就能夠識別該控件;二就是買官方的嘍,在國內找verisign的代理,負責各類電子簽名,任何一臺瀏覽器均可以識別該證書。該公司官方網址:http://www.verisign.com/products-services/security-services/code-signing/digital-ids-code-signing/index.htmlhtml
沒錢的就本身作本身的證書吧 ,至少安裝一遍後之後就不用安裝了,全部的active控件都可以使用此證書。證書的效果如圖:git
證書的安裝位置:express
證書的製做以及控件打包過程,轉載以下:小程序
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)
若是服務器已加入「可信任網址」,而且已導入證書,則不提示任何信息,在用戶毫無感受狀況下下載。若是沒有加入「可信任網址「,控件能夠正常下載但仍然不能正常使用,與是否簽名無關。
4、問題:
1.是否能夠不添加「可信任網址」。
2.數字簽名的做用,受權證書與不受權證書的區別。