使用CAPICOM实现证书管理.docx
《使用CAPICOM实现证书管理.docx》由会员分享,可在线阅读,更多相关《使用CAPICOM实现证书管理.docx(26页珍藏版)》请在冰豆网上搜索。
使用CAPICOM实现证书管理
使用CAPICOM实现证书管理
Posted二月16,2010
Comments
(1)
在基于ejbca搭建CA时候,需要实现如下功能:
1)、在客户端实现对页面关键数据(例如订单金额等)采用签名、数字信封等方式进行加密
2)、能够较好支持USBKEY集成
3)、用户申请数字证书导入浏览器后,能够通过Web页面对浏览器证书进行重新申请(renewal)、删除、显示、查询、验证等功能
单独依靠XEnroll.dll或CertEnroll.dll控件已经无法满足以上要求。
微软的CAPICOM组件封装了WindowsCryptAPI的各种操作,可以在Windows环境下各种语言中使用。
而且CAPICOM中的大多数接口都是“脚本安全”的,可以直接在网页脚本中安全使用CAPICOM接口所提供的功能。
需求1)、2)的实现思路:
在前台利用CAPICOM组件读取浏览器或USB盘中的用户证书,对页面表单的关键数据进行SHA1签名。
将签名后的密文与页面表单中的明文提交到服务器端。
服务器从用户请求密文解密得到用户证书及页面关键数据的摘要(利用Bouncycastle、ApacheCommonsCodec),验证证书的合法性及有效性。
然后对提交的页面明文计算SHA1,把得到的结果与从密文是解出摘要进行对比,从而实现数据完整性的校验。
需求3)的实现思路:
关键是要实现证书的删除、查询、验证功能,结合IE中自动安装用户数字证书、IE中自动安装根数字证书,可以很容易实现相关功能。
CAPICOM中常用的类主要包括:
Store、Certificates、Certificate
基本操作步骤为:
创建Store对象->打开Store对象->查找需要操作的证书集合(Certificates)->对单个证书(Certificate)进行操作
1、一个简单例子:
A996E48C-D3DC-4244-89F7-AFA33EC60679"VIEWASTEXT>
varCAPICOM_CURRENT_USER_STORE=2
varCAPICOM_MY_STORE="My"
varCAPICOM_CERTIFICATE_FIND_SUBJECT_NAME=1
varCAPICOM_STORE_OPEN_READ_WRITE=1
varmyStore=newActiveXObject("CAPICOM.Store");
myStore.Open(CAPICOM_CURRENT_USER_STORE,CAPICOM_MY_STORE,CAPICOM_STORE_OPEN_READ_WRITE);
varmyStoreCerts=myStore.Certificates;
varinfo="";
for(i=1;i<=myStoreCerts.Count;i++)
{info+="SubjectName:
"+myStoreCerts.Item(i).SubjectName+"
";
}
document.write(info);
.csharpcode,.csharpcodepre{font-size:
small;color:
black;font-family:
consolas,"CourierNew",courier,monospace;background-color:
#ffffff;/*white-space:
pre;*/}.csharpcodepre{margin:
0em;}.csharpcode.rem{color:
#008000;}.csharpcode.kwrd{color:
#0000ff;}.csharpcode.str{color:
#006080;}.csharpcode.op{color:
#0000c0;}.csharpcode.preproc{color:
#cc6633;}.csharpcode.asp{background-color:
#ffff00;}.csharpcode.html{color:
#800000;}.csharpcode.attr{color:
#ff0000;}.csharpcode.alt{background-color:
#f4f4f4;width:
100%;margin:
0em;}.csharpcode.lnum{color:
#606060;}
2、一个更复杂的例子:
2.1)、capicomtest.html
CAPICOM使用DEMO
A996E48C-D3DC-4244-89F7-AFA33EC60679"VIEWASTEXT>
1.读取用户证书
证书类型:
Personal
Root
AddressBook
CA
选择一个证书: