赛迪网 > IT技术 网络安全 > 杂文赏析
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

在web上如何自动安装用户证书及根证书

发布时间:2005.04.18 13:33     来源:中国信息安全组织    作者:Rainbow

微软的xenroll中有一个接口acceptpkcs7提供了证书的安装功能,本文将为您讲述如何通过该接口实现在web上自动安装用户证书及根证书,并提供部分实例代码。

一、证书的安装

微软的xenroll中有一个接口acceptpkcs7提供了证书的安装功能。具体的参数如下:

HRESULT acceptPKCS7(BSTR PKCS7) 其中参数pkcs7就是经过base64编码的证书。

如果要在web页中安装证书,过程如下:

1、初始化xenroll.dll

在html代码中加入

<OBJECT id=XEnroll classid=clsid:127698e4-e730-4e5c-a2b1-21490a70c8a1 codebase="xenroll.dll">
</OBJECT>

2、读证书

证书可以从LDAP或数据库中读取,这不是我们的主题,所以在这里略过。有关细节可以参看本站的LDAP等主题。

3、调用acceptPKCS7接口

代码示例如下:

on error resume next
sPKCS7 = 你取到证书内容
err.clear
XEnroll.AcceptPkcs7(sPKCS7)
if err.Number <> 0 then
if err.number = -2146885628 then
MsgBox "系统中已经存在该证书,或证书不是在这台机器申请的"
else
MsgBox "证书下载时出错,错误号="&err.description
end if
else

MsgBox "证书已成功装入"
end if

说明:只有在本机生成的证书请求才可以这样安装证书。

二、根证书的安装

微软的xenroll中的另外一个接口acceptpkcs7提供了根证书的安装功能。具体的参数如下:

[ c++]HRESULT InstallPKCS7(BSTR PKCS7)
[ vb ]Sub InstallPKCS7( ByVal PKCS7 As String )

其中参数pkcs7就是经过base64编码的根证书,如果要在web页中安装证书,过程和安装用户证书一样。

1、在asp如何自动下载并安装根证书

注://开头的为注解

<%

Dim fso, ts
dim line,newcert
newcert=" sPKCS7=" & chr(34)&chr(34) & vbcrlf
Const ForReading = 1
Set fso = CreateObject("Scripting.FileSystemObject")
// 这样要求根证书与这个网页必须放在同一个目录下。
Set ts = fso.OpenTextFile(Request.ServerVariables ("APPL_PHYSICAL_PATH")&"RootCert.cer", ForReading, False)
do while Not ts.AtEndOfStream
line = ts.ReadLine
newcert=newcert & " sPKCS7=sPKCS7 & " & chr(34) & line & chr(34) & " & vbcrlf " & vbcrlf
loop
%>
<html>
<object id="XEnroll" classid="clsid:127698e4-e730-4e5c-a2b1-21490a70c8a1" codebase="xenroll.dll"></object>
<script Language="VBScript">
ON ERROR resume next
<%
response.write(newcert)
%>
XEnroll.InstallPKCS7 sPKCS7
If err.number = 438 then
msgbox "install root certificate fail ."
Elseif err.number <> 0 then
msgbox "install root certificate fail ."
Else
msgbox "install root certificate success ."
End if
window.close()
</script>
</html>

其中do while...loop的目的就是想生成一段vbscript代码,生成的结果如下:

sPKCS7=""
sPKCS7=sPKCS7 & "-----BEGIN CERTIFICATE-----" & vbcrlf
sPKCS7=sPKCS7 & "MIICMjCCAZugAwIBAgIBATANBgkqhkiG9w0BAQUFADAUMRIwEAYDVQQKEwlIWWRy" & vbcrlf
sPKCS7=sPKCS7 & "b2luZm8wHhcNMDQwNDExMDczMzI0WhcNMzQwNDA0MDczMzI0WjAUMRIwEAYDVQQK" & vbcrlf
......
......
sPKCS7=sPKCS7 & "BQADgYEAjYHzQkIp1dE5zyPcrybDvpoT/MmMcZ3q7GANncp9Kq8b0Bj0It8kPPyN" & vbcrlf
sPKCS7=sPKCS7 & "JPit6rmgErPqPdj789Sr1H7/XjY+tuBJLV1idDPlqV44b3rBk/8GjYmTmLuDOYBI" & vbcrlf
sPKCS7=sPKCS7 & "XKqIEuO50QNJIdinCsCRyZ8h9O/VDTyMH4VUQsJ3YdZk2w3PrwU=" & vbcrlf
sPKCS7=sPKCS7 & "-----END CERTIFICATE-----" & vbcrlf

2、在php如何自动下载并安装根证书

首先也要取到证书,假如放在变量$cert中。

这样只需要将asp中生成sPKCS字符串部分替换成下面这段代码就可以了,生成的新内容在$newcert中。

$newcert = "sPKCS7=\"\"\r\n";
$line=strtok($cert,"\r\n");
while($line)
{
$newcert=$newcert." sPKCS7=sPKCS7 & \"".$line."\" & vbcrlf\r\n";
$line=strtok("\r\n");
}
echo $newcert;
?>

三、installPKCS7与acceptPKCS7的不同

1、InstallPKCS7可以安装证书链

2、在ICEnroll3中第一次出现

(T114)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· Network Appliance支持微软iSCSI (04-18) · 微软将花重金大力推广WinXP Longhorn受冷落 (04-18)
· 微软顶级研发密布京城 北京成微软战略智库 (04-18) · 福布斯:十年之后,回首比尔盖茨"未来之路" (04-18)
· 隐居七天都在干些什么 盖茨"闭关"日历揭秘 (04-16) · 可挪用Windows下数据 Linux新软件威胁微软 (04-16)
· 10年内不会过时 微软开发下代视窗有6大原则 (04-16) · MSN漏洞成为新目标 网上黑客蠢蠢欲动 (04-15)
· 视窗媒体播放器有漏洞 微软不发补丁遭质疑 (04-15) · 漏洞补丁何时了?微软再现新高危漏洞 (04-15)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管