clientcertificate
clientcertificate 集合从 web 浏览器发布请求中获取验证字段(由 x.509 标准指定)。
如果 web 浏览器使用 ssl3.0/pct1 协议(也就是说,它使用以 https:// 开头的 url,而不是 http://)连接服务器及服务器请求验证,则浏览器将发送验证字段。
如果没有发送验证,clientcertificate 集合将返回 empty。
必须先将 web 服务器配置为要求客户端验证,然后才能使用 clientcertificate 集合。
语法
request.clientcertificate( key[subfield] )
参数
- key
- 指定要获取的验证字段名称。客户端验证包括下列字段。
值 意义 certificate 按 asn.1 格式的二进制流字符串,其中包括完整的验证内容。 flags 一组标志,提供其他客户端验证信息。可以设置下面的标志: cecertpresent – 当前的客户端验证。
ceunrecognizedissuer – 该链上来自未知的发布者的最后一个验证。
注意 要使用以上标志,必须在 asp 页中包含客户端验证包含文件。若您正在使用 vbscript,则应包含 cervbs.inc。这些文件安装在 \inetpub\aspsamp\samples 目录下。
issuer 包含子字段值的列表的字符串,此列表包含验证发布者的信息。若该值在无 subfield 项的情况下指定,则 clientcertificate 集合返回一个以逗号分隔的子字段列表。例如,c=us, o=verisign 等。 serialnumber 包含验证的序列号的字符串,序列号以连字符 (-) 分隔的 16 进制 ascii 码表示。例如,04-67-f3-02。 subject 包含子字段值的列表的字符串,此列表包含有关验证的主题信息。若该值在无 subfield 项的情况下指定,则 clientcertificate 集合返回一个以逗号分隔的子字段列表。例如,c=us, o=verisign 等。 validfrom 指定验证何时有效。此日期遵循 vbscript 格式并随国家(地区)设置而变化。例如,在美国可表示为 9/26/96 11:59:59 pm. validuntil 指定验证何时到期。 - subfield
- 可选参数,用于按 subject 或 issuer 关键字检索单独的字段。此参数作为一个后缀添加到 key 参数中。例如,issuero 或 subjectcn。下表列出了一些通用的 subfield 值。
值 意义 c 指定原国家(地区)名。 cn 指定公用用户名。(此子字段仅同 subject 关键字一起使用。) gn 指定给定的名称。 i 指定一组首字母。 l 指定所在地。 o 指定公司或组织名称。 ou 指定机构的名称。 s 指定州或省。 t 指定此人或组织的头衔。 与在上述列表中所列的值不同,subfield 的值可被 asn.1 标识所识别。asn.1 标识的格式是一串通过句点 (.) 分隔的一系列数。例如: 3.56.7886.34。
注释
可以通过关键字用循环来遍历 clientcertificate 集合。下面的例子对此进行演示。
<% for each key in request.clientcertificate response.write( key & ": " & request.clientcertificate(key) & "<br>") next %>
示例
下面的示例使用 subject 关键字测试客户端验证是否存在。
<%
if len(request.clientcertificate("subject")) = 0
response.write("no client certificate was presented")
end if
%>
下面的示例获取发布客户端验证的公司的公用名。
<%= request.clientcertificate("issuercn") %>
下面的示例检查客户端验证主题的组织名。
<%
if (request.clientcertificate("subject")="msft")
response.write("good choice!")
end if
%>
下面的示例显示客户端验证何时到期。
this certification will expire on
<%= request.clientcertificate("validuntil") %>
下面的示例使用 flags 关键字测试客户端验证的发布者是不是已知的。第一行的 include 命令使脚本可使用已命名标志 ceunrecognizedissuer。
<!--#include file="cervbs.inc" -->
<%
if request.clientcertificate("flags") and ceunrecognizedissuer then
response.write "unrecognized issuer"
end if
%>
应用于
request 对象
