Activex 控件签名证书得来

 

      对控件签名的证书一般来说有两种方式,一种用makecert.exe命令生成证书,另一种在线申请,。下面对两种证书进行说明。

1.用makecert.exe命令生成证书

    MSDN上由makecert.exe详细使用说明和下载。

http://msdn.microsoft.com/en-us/library/bfsktky3(VS.80).aspx

    makecert.exe利用默认的Root Agency根证书来生成进行签名所用的证书。但因为Root Agency根证书并不是存放在“受信任的根证书颁发机构”中所以,其生成的签名证书只能用于测试。如果要发布到网络上让他人下载控件进行使用是不可行的。

    这里对证书的存放进行以下说明。能够查看到证书存放位置的有两种方式,一种是:

    IE->属性->内容->证书

    这样的方式仅能看到当前用户的证书。我们可以采用另一种进行查看。我们需要能较方便的操作证书,因为后面需要经常删除,安装证书来进行测试。

另一种方式:

    在“开始”->“运行”中输入mmc,出现控制台,点击“文件”下的“添加/删除管理单元”。出现下面窗口。

    点击“添加”找到证书一项如图:

   点击“证书”然后点击“添加”。有三项“我的用户帐户”,“服务帐户”和“计算机帐户”,选择“我的用户帐户”和“计算机帐户”添加进入。最后效果

如下:

   这样就能看到你电脑上的所有证书了。

    虽然makecert.exe生成的证书只能做测试使用,下面还是说明一下如何通过命令生成证书。

    makecert /sv "storapp.pvk" /n "CN=www.storapp.com.cn " storapp.cer

创建过程中会提示输入密钥,生成公私密钥对。生成的证书私钥文件为.pvk文件,证书公钥文件为.spc文件,但这里生成的是.cer文件。你可以选择转换成.spc文件也可以不用转换,在签名的时候都可以使用。通过上面命令你就拥有了进行前面的公私文件了。

2.在线申请证书

    中国数字认证网提供免费,测试,企业三种根证书。并提供免费证书申请。登陆www.ca365.com后会提示要安装根证书,选择接受安装即可,不然无法进行后续证书的申请。接受完其根证书安装后,可以在前面提高的证书管理中的“受信任的根证书颁发机构中”看到如下三项:

    CA365 Enterprise Root Certificate

    CA365 Free Root Certificate

    CA365 Test Root Certificate

    对我们有用的是Free Root Certificate其他两项可以在直接删除。

    在免费证书一栏点击“用表格申请证书”填写相关信息,证书用途选择“代码签名证书”,加密服务提供选择“Microsoft Strong Cryptographic Provider

下面选择“创建新密钥对”,钩选“启用严格密钥保护”和“标记密钥为可导出”。

提交申请。

    提交完申请,选择“下载和安装证书”。点击完后需要一段时间,下载下来的证书会先出现在证书控制台的“证书注册申请”一栏中,当页面提示证书安装完成后会出现在“个人”一栏中。这样,证书就申请成功了。

    申请成功的证书是.der格式的,这并不是我们要使用的.cer.pvk文件。如何生成这两个文件是一个稍微麻烦一点的问题。下面对这个问题进行说明。

3.从.der文件导出,并生成.cer.pvk文件

    .der文件到.cer.pvk文件要经过两个步骤。

    3.1 .der文件导出形成.pfx文件

    从证书控制台的“个人”一栏中找到刚申请成功的证书,右键将其导出。这里要选择,“导出私钥”这一步很重要,不然后面无法生成私钥。刚在在申请私钥的时候并没有填写密码,这是在后面将证书导出后,在本机再生成。重命名后将生成一个.pfx文件。

    3.2 .pfx文件生成.pvk文件

    .pfx文件转化为.pvk文件可以参见:

    http://thawte.wosign.com/support/PVK_SPC2PFX.htm该页面,有详细的讲解。在生成密钥文件的时候一定要记住密码,这个在后面的签名中需要使用。

四、控件签名

    经过认证文件格式转化和密钥生成后我们现在手中有如下文件:

    Storapp.cab Storapp.der Storapp.pvk三个文件,现在是如何使用Storapp.der文件和Storapp.pvk文件对Storapp.cab文件进行签名了。这里可以发现我们使用的公钥是.der文件既不是.cer文件也不是.spc文件。这个经过测试是没有问题的。也就没有必要进行特别的转换了。

    对控件进行签名采用的是signcode.exe工具。详细流程可以参见:

http://www.cnblogs.com/babyt/archive/2005/03/14/118264.html

该作者对控件的签名过程进行了截图说明,步骤十分详细,这里就不再累述了。

    最后一步要选择时间戳服务器,这里有个免费的:http://timestamp.verisign.com/scripts/timstamp.dll写上去就完了,这样就完成了签名

五、控件发布

    进行完上面的工作了,很值得庆幸我们的工作没有多少了。但后面的工作还很关键,不然用户是无法使用控件的。现在我来说明一下控件打开方式的不同。

1. 控件注册和不注册的区别

简而言之控件如果不注册就不能使用。手动通过Regsvr32命令进行注册和编写DllRegisterServer实现自动注册有什么却别?很遗憾这个问题我也没有研究过,个人DllRegisterServer猜测认为,DllRegisterServer是给控件的嵌入容器进行调用的。如果控件的嵌入页面在本机,就是说你在本机开发,进行调试时,IE可能没有调用DllRegisterServer这样为了能使用进行调试,必须手动注册该控件才能使用。

2. 控件嵌入页面在本机,从本机直接打开

如上面所说的本机现在含有了.ocx文件,以及.ocx的嵌入页面文件,这样我们手动注册后就可以使用控件了。这里强调要手工注册是因为,从本地打开嵌入页面IE不会调用DllRegisterServer进行注册,至于为什么不调用,我也没有研究过,只是经过测试,IE确实没有调用而已。

3. 访问WEB站点,打开控件嵌入页面

本机不含有.ocx文件,并且也将进行测试时在注册表中的注册信息删除了,通过访问WEB站点的嵌入页面进行控件使用。这种方式就是最终用户的使用方式。用户通过IE访问嵌有.ocx文件的页面,首先会更怒object对象中指定的CLSID检索注册表,看是否已经安装了该控件,如果安装则对比两个版本。如果本机没有安装,或则版本较低则会访问.cab包,将该包下载下来,进行解压,然后将包中的DLL拷贝到指定的目录(destdir指定了目录),然后再调用DllRegisterServer注册安装.ocx文件。这样控件就可以使用了。

为什么要检查控件对DLL库的依赖性,因为控件运行需要这些DLL库,而并不是所有的用户电脑上都有这些DLL库。我们电脑上有因为我们安装了VS2005,安装了JDK所有DLL库很完善。对于一般的客户而言并没有这些东西,所以需要将所依赖的DLL打包进入.cab文件中。

 

 

 

你可能感兴趣的:(ActiveX控件制作)