zoukankan      html  css  js  c++  java
  • 关于Active控件的电子签名 转

    关于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文件打包,并下载到文件夹:WINDOWSsystem32,详细标注如下:
    [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:
    使用WINDOWSsystem32iexpress.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 2003SDKv1.1Bin 中间有三个小工具,就用他们来实现数字签名。
    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.数字签名的作用,授权证书与不授权证书的区别。
  • 相关阅读:
    SQlite数据库
    关于如何获取剪切板的多个图片处理
    aes 和 Md5 分析
    SIP消息
    getItemAt
    C++ map的方法
    C++ 解析Json
    CentOS 6.3安装配置LAMP服务器(Apache+PHP5+MySQL)
    阿里云服务器CentOS 5.7(64位)安装配置LAMP服务器(Apache+PHP5+MySQL)
    Apache虚拟主机(vhost)配置教程
  • 原文地址:https://www.cnblogs.com/xiaogelove/p/4207784.html
Copyright © 2011-2022 走看看