如何给未签名的activex控件加数字签名

请完成以下验证码
请完成以下验证码
查看: 3408|回复: 0
如何给ActiveX控件做数字签名
这一阵子自己的一套系统遇到了在高版本IE下无法访问的问题,后来发现是其中嵌入的一个控件没有数字签名导致的。在高版本IE中对于此类控件已经做了严格的限制,无法通过参数的设置来打开这个缺口。为此在网上寻觅了一下如何申请、制作数字签名,如何打包cab,如何给控件、cab添加数字签名的方法,如下:
在IE7下无法执行的问题,签名后出现该对话框,控件包无法安装
o_1.jpg (29.26 KB, 下载次数: 0)
12:46 上传
因为IE7默认是禁止没有使用国际认证的代码签名证书进行签名的ActiveX,看IE7的安全设置就知道了。
让用户改设置是不可能的,测试用的数字签名又无效,所以只好用经过认证的数字证书,但是~~ 基本上都是要钱的
花了点时间查找和试验,相比之下中国数字认证网()提供的一年免费的证书是最好用的
o_17.jpg (31.28 KB, 下载次数: 2)
12:46 上传
选用表格申请证书,在下面的界面中按图示设置对应项目
o_16.jpg (40.79 KB, 下载次数: 2)
12:46 上传
提交后出现的界面选择“在线安装”,然后你的机器中就会安装好这个“个人”免费证书
后面的对控件签名时直接用signcode.exe就可以了,不用自己再makecert了
选择证书时,从存储区中选择这个“个人”
o_19.jpg (62.11 KB, 下载次数: 1)
12:46 上传
后面的下一步中出现的界面最好都添上,给用户更多的信息
时间戳服务器可以使用:
然后再浏览之前的页面,就可以了:)
o_15.jpg (30.03 KB, 下载次数: 0)
12:46 上传
1:注意使用的是代码签名证书
2:免费数字证书有一年的有效期
3:要更改数字证书的名称和附带信息等,需购买其他收费版本
4:国内CA站点
中国数字认证网()
广东省电子商务认证中心()
博大证书()
天威诚信()
其他参考资料:
IE7 大大增强了安全性能
ActiveX控件数字签名的实现
数字证书应用全攻略——如何获取数字证书
==============
过高压缩技术(比ZIP压缩度还高3成)——打包成Cab压缩文件。当用户第一次浏览你控件所在的网页时,它会自动提示控件下载,下载后会根据cab文件中的*.inf文本文件的来寻找你电脑的上相应的DLL(控件依赖库及控件本身,ocx本就是一种特殊的DLL)是否注册过,如果没有,会自动帮你注册,然后控件既可以正常使用。
(注:关于cab压缩技术,请参考MSDN或是网上相关搜索)
创建cab文件:
1.&&创建 INF 文件。
INF 文件是一个文本文件,用以指定为控件的运行而需要显示或下载的文件(如 DLL 文件或其他 OCX 文件)。INF 文件使您得以将所有所需的文件捆绑在一个压缩的 CAB 文件中。默认情况下,版本号同用户硬盘上的现有文件相同的文件不下载。有关 INF 文件及其选项的更多信息,包括如何创建与平台无关的 INF 文件,请参见 Platform SDK 文档中的关于 INF 文件和使用 INF 文件(在 MSDN Library/Setup 和 System Administration/Setup/Setup API/Overview/Setup Applications 目录下)。
举例来说,下面的 INF 文件用于为AxYourControl控件创建 CAB 文件。AxYourControl是由某一库支持开发的(MFC,ATL或其他),假设他所支持库的主要由 Need1.dll,Need2.dll,Need3.dll三个DLL库(具体有哪些库文件根据情况查阅MSDN相关内容)。
; Sample INF file for AxYourControl.OCX
[version]
signature=&$CHINA[& && &&&DISCUZ_CODE_1& && &&&]
AdvancedINF=2.0&&
[Add.Code]
AxYourControl.ocx= AxYourControl.ocx
Need1.dll= Need1.dll
Need2.dll= Need2.dll
Need3.dll= Need3.dll
; needed DLL
[Need1.dll]
file-win32-x86=thiscab
FileVersion=2,00,0,7024
DestDir=11
RegisterServer=yes
; needed DLL
[Need2.dll]
file-win32-x86=thiscab
FileVersion=2,00,0,7024
DestDir=11
RegisterServer=yes
; needed DLL
[Need3.dll]
file-win32-x86=thiscab
FileVersion=2,00,0,7024
DestDir=11
RegisterServer=yes
[AxYourControl.ocx]
file-win32-x86=thiscab
clsid={4CBBC676-507F-11D0-B98B-}
FileVersion=1,0,0,1
RegisterServer=yes&&
; end of INF file复制代码
此 INF 文件指定需要在系统上安装给定版本的 Need1.DLL, Need2.DLL和Need3.DLL。如果这些DLL尚未存在于系统中,它将从用此 INF 创建的 CAB 文件中下载。“thiscab”是一个关键字,表示 CAB 包含此 INF。也可通过指定一条绝对或相对路径,从一个 HTTP 位置下载所需的 DLL,例如:
& & file-win32-x86=/mydir/NEEDED.DLL
关键字“file-win32-x86”将平台标识为 x86 特定的。
可通过在 Windows 资源管理器中的文件上单击鼠标右键来获取文件的版本号。从显示的列表中选择“属性”,然后在显示的对话框中选择“版本”选项卡。有时需要在文件版本中额外插入一个 0。例如,在对话框中 ATL.DLL 的版本号显示为 2.00.7024。而在 INF 文件中,这变为 2, 00, 0, 7024。
“DestDir”是将要加载文件的目录所在的位置:11 指定系统目录为 WINDOWS/SYSTEM 或 WINNT/SYSTEM32;10 指定 Windows 目录、WINDOWS 或 WINNT。如果未指定任何 DestDir(典型情况),则代码安装在固定的 OCCACHE 目录中。
“clsid”是将要安装的控件的 CLSID。
2.&&运行 CABARC 实用工具。
Cabarc.exe 是微软的一个cab文件制作工具。你可以到微软的官方网站下载CABIN SDK 工具包。下载后解压安装,在其目录下有一个Bin目录下可以找到。
& && &应在包含源文件的目录下运行 CABARC。在命令行上,按源文件出现在 INF 中的顺序排列它们,并将 INF 文件放在最后。例如,若要从上面的 INF 文件生成 AxYourControl控件的 CAB 文件,请使用下面的命令:
…/BIN/CABARC -s 6144 n AxYourControl.CAB Need1.DLL Need2.DLL Need3.DLL AxYourControl.OCX AxYourControl.INF复制代码
-s 选项在压缩文件中保留用于代码签名的空间。n 命令指定希望创建 CAB 文件。有关 CABARC 命令和选项的列表,请在命令行上仅键入 CABARC:
…/BIN/CABARC复制代码
其他的一些补充:
1.&&需要MFC控件中包含的DLL文件有MSVCRT.DLL、MFC42.DLL 和OLEPRO32.DLL,其中MFC42.DLL视你开发环境的MFC版本所定,例如本人是在vc7环境下开发控件的,所以,应该为MFC71.DLL。
2.&&为ActiveX空间创建cab文件还有一个重要的话题就是将其打包为签名压缩 (CAB) 文件。签名文件使用户可以放心地下载代码安全的控件。关于这个话题,需要申请发行证书,详细情况可参见MSDN:
ms-help://MS.MSDNQTR.2003FEB.2052/vccore/html/Creating_Signed_CAB_Files_for_MFC_and_ATL_Controls.htm
3.&&关于在创建INF时DLL的版本,你可以鼠标右击点出他的属性对话框,在版本一栏就可以看到了,注意,填写时,版本号之间的“.”号变换为“,”。
心得网 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、管理员和版主有权不事先通知发贴者而删除本文
Powered by怎样制作数字签名
怎样制作数字签名
1、 获得软件发行证书(测试)
一、找到或下载signcode.exe、makecert.exe和cert2spc.exe这三个程序,如果装了VS.NET的话,可以在其目录下找到,或者去微软网上下载也可以的。
二、:创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。
输入makecert -sk lyl -n "CN=johnlya" c:\lyl.cer。
就会在你的C:生成lyl.cer文件。
说明:参数-n指定主题的证书名称。此名称必须符合 X.500
标准。最简单的方法是在双引号中指定此名称,并加上前缀
CN=;例如,"CN=myName"。注意这里的CN必须大写。-sk指定主题的密钥容器位置,该位置包含私钥。如果密钥容器不存在,系统将创建一个。输入makecert
-?可以查看其他参数的用法。
三:创建发行者证书 (SPC)。
注意,发行者证书测试工具通过一个或多个 X.509 证书创建发行者证书
(SPC)。Cert2spc.exe 仅用于测试目的。可以从证书颁发机构(如 VeriSign 或 Thawte)获得有效的
输入命令:cert2spc c:\lyl.cer
c:\lyl.spc,在C:盘生成证书文件。至此,你已经拥有了仅用于测试的软件证书。其实,我们开发的程序或ActiveX控件只要仅用于企业内部,完全可以用这种办法作数字签名,使你的控件可以在浏览器里自动下载,而不必去专门的证书办法机构获得证书。
2、 创建CAB文件
CAB文件是一种WINDOWS的标准压缩格式文件,在网页上发布ActiveX的时候经常使用该压缩格式对文件进行包装,目的是使文件便于在Internet上传输。创建CAB文件的方法有很多,可以压缩工具CABARC.EXE。
也可不使用 CAB 文件而直接签名 DLL 和 OCX。CAB 文件的优势在于压缩,而且如果与 INF
文件一起使用,它可将所有必要的代码绑定在一起。
INF文件如下:
========================= johnlya.inf
========================
&& ; version signature (same for
both NT and Win95) do not remove
&& signature="$johnlya$"
&& AdvancedINF=3.0
[Add.Code]
&& johnlya.ocx= johnlya.ocx
&& PEGRP32C.DLL =
PEGRP32C.DLL
&& ; These are the necessary
supporting DLLs for MFC 4.2 ActiveX Controls
&& mfc42.dll=mfc42.dll
&& msvcrt.dll=msvcrt.dll
olepro32.dll=olepro32.dll
&& ; thiscab is a keyword which,
in this case, means that johnlya.ocx
&& ; can be found in the same
.cab file as this .inf file
&& ; file-win32-x86 is an x86
platform specific identifier
&& ; See the ActiveX SDK -
ActiveX Controls - Internet Component Download -
&& ; Packaging component code for
automatic download
&; needed DLL
&&[PEGRP32C.DLL]
&&file-win32-x86=thiscab
&&FileVersion=5,0,0,0
&&DestDir=11
&&RegisterServer=yes
[johnlya.ocx]
&& file-win32-x86=thiscab
&& ; *** add your controls CLSID
clsid={D63A6E56-E666-49F2-99B5-D0EFE1B7647F}
&& ; Add your ocx's file version
&& FileVersion=3,0,2,1
&& RegisterServer=yes
&& ; dependent DLLs
&& [msvcrt.dll]
&& ; This is an example of
conditional hook. The hook only gets processed
&& ; if msvcrt.dll of the
specified version is absent on client machine.
&& FileVersion=6,0,8168,0
&& hook=mfc42installer
[mfc42.dll]
&& FileVersion=6,0,8168,0
&& hook=mfc42installer
[olepro32.dll]
&& FileVersion=5,0,4261,0
&& hook=mfc42installer
[mfc42installer]
file-win32-x86=VALUE=/controls/vc/mfc42.cab
&& ; If dependent DLLs are
packaged directly into the above cabinet file
&& ; along with an .inf file,
specify that .inf file to run as follows:
&& ;InfFile=mfc42.inf
&& ; The mfc42.cab file actually
contains a self extracting executable.
&& ; In this case we specify a
run= command.
run=%EXTRACT_DIR%\mfc42.exe
====================== end of johnlya.inf
=====================
然后在命令行模式下输入:
cabarc -s 6144 n johnlya.cab PEGRP32C.DLL
johnlya.ocx johnlya.inf
3、 签署文件
在上面打开的dos窗口里,输入如下命令:
signcode /spc c:\lyl.spc /k johnlya -t
c:\lyl.cab
至此,已经对成功对lyl.cab文件签名。可以查看文件的属性,查看数字签名。
4、注意一点:对于WINXP需要将Internet/工具/选项/高级里将允许和安装未授权的数字签名选项打上勾!
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。数字签名工具
数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。
用户评分:8分
软件大小:20.7MB
企业多级数字签名系统( MDSS )适合于企业、事业单位、研发型组织内部的文件电...
用户评分:8分
软件大小:6.8MB
&&新一代的驱动程序数字签名工具,完全图形化,支持64位系统下的驱动必...
用户评分:8分
软件大小:1.1MB
图形化数字签名工具专业版,支持应用程序数字签名、ActiveX控件数字签名、64...
用户评分:8分
软件大小:0.2MB
本工具实现对微软数字签名和第三方CA签名的检查和系统文件的可信性验证,可以...
用户评分:8.5分
软件大小:8.2MB
本程序是针对WORD/EXCEL文档、AUTOCAD图档文件内部进行电子签名的软件,...
用户评分:8分
软件大小:48.4MB
本工具主要用于在DWG图纸文件的指定位置插入多个电子签名,运行环境需要首先...
用户评分:8分
软件大小:48.3MB
本工具主要用于在DWG图纸文件的指定位置插入多个电子签名,运行环境需要首先...
12345678910
12345678910
12345678910
应用导航:||||||||||
资讯导航:||||||||||
论坛导航:||||||||
推荐合集:

我要回帖

更多关于 activex数字签名 的文章

 

随机推荐