asp获取服务器信息大全(包括客户端证书信息)
|
admin
2011年1月27日 22:32
本文热度 3068
|
一.服务环境变量
Request.ServerVariables("Url")
返回服务器地址
Request.ServerVariables("Path_Info")
客户端提供的路径信息
Request.ServerVariables("Appl_Physical_Path")
与应用程序元数据库路径相应的物理路径
Request.ServerVariables("Path_Translated")
通过由虚拟至物理的映射后得到的路径
Request.ServerVariables("Script_Name")
执行脚本的名称
Request.ServerVariables("Query_String")
查询字符串内容
Request.ServerVariables("Http_Referer")
请求的字符串内容
Request.ServerVariables("Server_Port")
接受请求的服务器端口号
Request.ServerVariables("Remote_Addr")
发出请求的远程主机的IP地址
Request.ServerVariables("Remote_Host")
发出请求的远程主机名称
Request.ServerVariables("Local_Addr")
返回接受请求的服务器地址
Request.ServerVariables("Http_Host")
返回服务器地址
Request.ServerVariables("Server_Name")
服务器的主机名、DNS地址或IP地址
Request.ServerVariables("Request_Method")
提出请求的方法比如GET、HEAD、POST等等
Request.ServerVariables("Server_Port_Secure")
如果接受请求的服务器端口为安全端口时,则为1,否则为0
Request.ServerVariables("Server_Protocol")
服务器使用的协议的名称和版本
Request.ServerVariables("Server_Software")
应答请求并运行网关的服务器软件的名称和版本
Request.ServerVariables("All_Http")
客户端发送的所有HTTP标头,前缀HTTP_
Request.ServerVariables("All_Raw")
客户端发送的所有HTTP标头,其结果和客户端发送时一样,没有前缀HTTP_
Request.ServerVariables("Appl_MD_Path")
应用程序的元数据库路径
Request.ServerVariables("Content_Length")
客户端发出内容的长度
Request.ServerVariables("Https")
如果请求穿过安全通道(SSL),则返回ON如果请求来自非安全通道,则返回OFF
Request.ServerVariables("Instance_ID")
IIS实例的ID号
Request.ServerVariables("Instance_Meta_Path")
响应请求的IIS实例的元数据库路径
Request.ServerVariables("Http_Accept_Encoding")
返回内容如:gzip,deflate
Request.ServerVariables("Http_Accept_Language")
返回内容如:en-us
Request.ServerVariables("Http_Connection")
返回内容:Keep-Alive
Request.ServerVariables("Http_Cookie")
返回内容如:nVisiT%
Request.ServerVariables("Http_User_Agent")
返回内容:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)
Request.ServerVariables("Https_Keysize")
安全套接字层连接关键字的位数,如128
Request.ServerVariables("Https_Secretkeysize")
服务器验证私人关键字的位数如1024
Request.ServerVariables("Https_Server_Issuer")
服务器证书的发行者字段
Request.ServerVariables("Https_Server_Subject")
服务器证书的主题字段
Request.ServerVariables("Auth_Password")
当使用基本验证模式时,客户在密码对话框中输入的密码
Request.ServerVariables("Auth_Type")
是用户访问受保护的脚本时,服务器用於检验用户的验证方法
Request.ServerVariables("Auth_User")
代证的用户名
Request.ServerVariables("Cert_Cookie")
唯一的客户证书ID号
Request.ServerVariables("Cert_Flag")
客户证书标志,如有客户端证书,则bit0为0如果客户端证书验证无效,bit1被设置为1
Request.ServerVariables("Cert_Issuer")
用户证书中的发行者字段
Request.ServerVariables("Cert_Keysize")
安全套接字层连接关键字的位数,如128
Request.ServerVariables("Cert_Secretkeysize")
服务器验证私人关键字的位数如1024
Request.ServerVariables("Cert_Serialnumber")
客户证书的序列号字段
Request.ServerVariables("Cert_Server_Issuer")
服务器证书的发行者字段
Request.ServerVariables("Cert_Server_Subject")
服务器证书的主题字段
Request.ServerVariables("Cert_Subject")
客户端证书的主题字段
Request.ServerVariables("Content_Type")
客户发送的form内容或HTTPPUT的数据类型
--------------------------------------------------------------------------------------
二.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
%>
该文章在 2011/1/27 22:32:31 编辑过