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数据集合获得证书持有者的主题信息和证书颁发机构的主题信息没有任何问题。
推荐阅读