zoukankan      html  css  js  c++  java
  • 关于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.数字签名的作用,授权证书与不授权证书的区别。
  • 相关阅读:
    .net注册iis
    hdu 1081To The Max
    hdu 1312Red and Black
    hdu 1016Prime Ring Problem
    hdu 1159Common Subsequence
    hdu 1372Knight Moves
    hdu 1686Oulipo
    hdu 1241Oil Deposits
    hdu 1171Big Event in HDU
    hdu 4006The kth great number
  • 原文地址:https://www.cnblogs.com/catvi/p/1952976.html
Copyright © 2011-2022 走看看