首页 | 新闻资讯 | 培训认证 | 安全管理 | 病毒分析 | 安全协议 | 网络安全 | 防火墙 | 黑客技术
DB安全 | Web安全 | 入侵检测 | 安全审计 | 设备安全 | 备份恢复 | 安全标准 | 法律法规 | 无线安全
OS安全 | PKI与PMI | 病毒防治 | 隔离网闸 | XML安全 | 网管专区 | 经典案例 | 技术论坛 |  
+ 文章搜索 +
当前位置:首页>>原创作品>>PKI与PMI>>正文
关键字:
范 围:
※相关文章※
※推荐文章※
在web上如何自动安装用户证书及根证书
作者:Rainbow(不经历风雨,怎么见彩虹) 文章出处:中国信息安全组织[原创] 发布时间:2004-08-03 点击: 字体: 【

/********************************************************************************************************************
声明:本文档用于学习与研究可以自由转载,无论以何种形式发布都必须保留完整的版权声明,商业用途不得转载.本人能力有限,如有问题欢迎交流与指正。
网站:
论坛:/forum/forum.html
邮件:rainbow_zrh@sina.com webmaster@infosecurity.org.cn
*********************************************************************************************************************/


一、证书的安装
    微软的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中第一次出现

 

返回顶部↑】 【推荐好友】 【查看评论
用户名: 新注册) 密码: 匿名评论 [查看评论] 发表评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  Copyright © 2004-2005 infosecurity.org.cn . All Rights Reserved
版权所有:中国信息安全组织 系统管理:webmaster@infosecurity.net.cn
本站部分资源来自互联网,如有侵犯您的版权或其他问题,请通知管理员,我们会尽快处理!