80端口-80勃客♂
80端口悄悄提示:数据载入中……  
80端口悄悄提示:数据载入中……
时间记忆
80端口悄悄提示:数据载入中……
勃客管理
80端口悄悄提示:数据载入中……
用户公告
80端口悄悄提示:数据载入中……
我的相册
最新日志
80端口悄悄提示:数据载入中……
最新评论
80端口悄悄提示:数据载入中……
最新回复
80端口悄悄提示:数据载入中……
我的好友
站点信息
80端口悄悄提示:数据载入中……
 
2008-3-5 15:31:00
ASP获取客户端证书信息

1、环境要求
     服务器端IIS并配置安全站点。
2、读取数字证书(方法一)
数据集合:Request.ClientCertificate(key[SubField])
所有客户证书的信息的集合。对于Key,该集合具有如下的关键字:
Subject      证书持有者的主题,数据格式以英文逗号分隔。(不建议使用)
Issuer      证书的发行颁发者主题,数据格式以英文逗号分隔。(不建议使用)
VadidFrom      证书发行的日期,证书生效日期。
ValidUntil      该证书不再有效的时间。
SerialNumber      证书的序列号。
Certificate      包含整个证书内容的二进制流,使用ASN.1格式。
对于SubField,Subject和Issuer关键字可以具有如下的子域后缀:(比如:SubjectOU或IssuerL)
C      国家。      S      州(或省)。
O      公司或组织名称。      T      个人或公司的标题。
OU      组织单元。      GN      给定名称。
CN      用户的常规名称。      I      初始。
L      地区。           

当文件cervbs.inc(VBScript使用)或cerjavas.inc(Jscript使用)通过使用#i nclude导向包含在你的Active Server Page里时,下面两个标志可以使用:
ceCertPresent      指明客户证书是否存在,其值为TRUE或FALSE。
ceUnrecongnizedIssure      指明在该链表中的最后的证书的发行者是否未知,其值为TRUE或FALSE。
3、读取数字证书(方法二)
数据集合:Request.ServerVaribles(Server Environment Variable)
环境变量的集合,读取HTTP头。可以通过使用HTTP_前缀来读取任何头信息。比如,HTTP_USER_AGENT接受客户代理HTTP头(浏览器类型)。此外,可以使用下表所示的变量获得数字证书相关信息。
CERT_COOKIE      唯一的客户证书ID号。
CERT_FLAG      客户证书标志,如有客户端证书,则bit0为0。如果客户端证书验证无效,bit1被设置为1。
CERT_ISSUER      用户证书中的颁发者字段。
CERT_KEYSIZE      安全套接字层连接关键字的位数,如128。
CERT_SECRETKEYSIZE      服务器验证私人关键字的位数。如1024。
CERT_SERIALNUMBER      客户证书的序列号字段。
CERT_SUBJECT      客户端证书的主题字段。
CERT_SERVER_ISSUER      服务器证书的发行者字段
CERT_SERVER_SUBJECT      服务器证书的主题字段。
HTTPS      如果请求穿过安全通道(SSL),则返回ON。如果请求来自非安全通道,则返回OFF。
HTTPS_KEYSIZE      安全套接字层连接关键字的位数,如128。
HTTPS_SECRETKEYSIZE      服务器验证私人关键字的位数。如1024。
HTTPS_SERVER_ISSUER      服务器证书的发行者字段。
HTTPS_SERVER_SUBJECT      服务器证书的主题字段。

4、补充说明
2中提到的通过Subject和Issuer所获得的相关主题信息在包含中文的情况下是乱码;通过Request.ServerVaribles数据集合获得证书持有者的主题信息和证书颁发机构的主题信息没有任何问题。

 

asp的代码:

<%

Dim SerialNumber
Dim ValidFrom
Dim ValidUntil
Dim UniqueID
Dim Flags
Dim UserName
SerialNumber =Request.ClientCertificate("SerialNumber")
ValidFrom =Request.ClientCertificate("ValidFrom")
ValidUntil =Request.ClientCertificate("ValidUntil")
UniqueID = Request.ClientCertificate("Certificate")
Flags = Request.ClientCertificate("Flags")
UserName = Request.ClientCertificate("Subject")
//Response.Write "<p>证书用户:"& UserName &"</p>"
Response.Write "<p>证书序列号:"& SerialNumber &"</p>"
Response.Write "<p>有效期起始时间:"& ValidFrom &"</p>"
Response.Write "<p>有效期终止时间:"& ValidUntil &"</p>"
Response.Write "<p>Flags:"& Flags &"</p>"
//Response.BinaryWrite  UniqueID

%>

80 | 阅读全文 | 回复(0) | 引用通告 | 编辑
发表评论:
80端口悄悄提示:数据载入中……
http://www.waasai.com/blog/f/80/index.html
Link to waasai.com Home