主页 PC知识 网管技术 黑客帝国 安全技术 开放系统 程序设计 搜索 技术论坛

 

相关联接
 
RHU本级分类

病毒防治
漏洞公告
基础入门
Windows 系统安全
Linux 系统安全
防火墙
IDS/IPS
数据库及Web安全

 
RHU阅读排行
·安全无止境:Oracle推出Database10g V2
·Web环境下SQL注入攻击的检测与防御
·手把手教程:怎样防范WEB SHELL
·保护(IIS)web服务器的15个技巧
·cle数据库产品中发现6个未打补丁漏洞
·对称、非对称和HASH加密的应用
·数据库防入侵探究
·专家谈补丁管理 不是毁掉而是拯救数据库
·十大绝招保护SQL Server数据库安全
·数据库系统 防止黑客入侵之技术综述

 
 
RHU最新文章
·调整重心 了解从IIS到SQL Server数据库安全
·几种oracle数据库恢复的练习示例
·_disable_logging如何禁止日志的生成
·SQL Server数据库日志清除的两个方法
·最好的虚拟主机安全配置方案
·防御DDoS攻击的实时监测模型
·教你轻松掌握如何保护MySQL中的重要数据
·安全基础之IIS 6 的 PHP 最佳配置方法
·安全探讨之用Win32汇编写双进程守护
·数据安全之MySQL安全的二十三条军规

 
 
RHU相关搜索









 
 
RHU广而告之

 
 
>您的位置:首页 -> 安全技术-> 数据库及Web安全
在web上如何自动安装用户证书及根证书

作者:RHU-TAC编辑员 来自:RHU网络采集 时间:2005-4-20 双击滚屏 收藏本页 字体:


点击 查看RHU2004全年文章


微软的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中第一次出现

OVER

[1] 页 RedHyphone.Union 投稿邮箱
[特别声明]:
本站文章大多搜索转载自网络中,如果侵犯了您的权利,请告之我们。本站将立即删除。
本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
查看评论】【向上滚屏】【关闭窗口】【 打印
-相关文章
  • 认知盲区 解惑双网卡双线路DNS解析
  • FlashFXP 简体中文版 3.7.5 Build 1303 Beta[烈火]
  • 确认:番茄花园作者洪磊被检察院批准逮捕
  • 1983年的今天 DNS诞生
  • Windows 2003 IIS 6.0搭建asp+.net+php+jsp+mysql+mssql
  • -文章评论 (关闭)
    ·还没有相关的评论!

    网上大名:
    红旋风网络技术联盟 RHUTech.Union
     
    Copyright © 2000-2007 RedHyphone.Union All Rights Reserved. 红旋风联盟版权所有.皖ICP备05011033号
    中国红旋风网络技术联盟 | www.RedHyphone.net
    Mailto:Redhyphone@gamil.com