一.服務(wù)環(huán)境變量
Request.ServerVariables("Url")
返回服務(wù)器地址
Request.ServerVariables("Path_Info")
客戶端提供的路徑信息
Request.ServerVariables("Appl_Physical_Path")
與應(yīng)用程序元數(shù)據(jù)庫路徑相應(yīng)的物理路徑
Request.ServerVariables("Path_Translated")
通過由虛擬至物理的映射后得到的路徑
Request.ServerVariables("Script_Name")
執(zhí)行腳本的名稱
Request.ServerVariables("Query_String")
查詢字符串內(nèi)容
Request.ServerVariables("Http_Referer")
請求的字符串內(nèi)容
Request.ServerVariables("Server_Port")
接受請求的服務(wù)器端口號
Request.ServerVariables("Remote_Addr")
發(fā)出請求的遠(yuǎn)程主機(jī)的IP地址
Request.ServerVariables("Remote_Host")
發(fā)出請求的遠(yuǎn)程主機(jī)名稱
Request.ServerVariables("Local_Addr")
返回接受請求的服務(wù)器地址
Request.ServerVariables("Http_Host")
返回服務(wù)器地址
Request.ServerVariables("Server_Name")
服務(wù)器的主機(jī)名、DNS地址或IP地址
Request.ServerVariables("Request_Method")
提出請求的方法比如GET、HEAD、POST等等
Request.ServerVariables("Server_Port_Secure")
如果接受請求的服務(wù)器端口為安全端口時,則為1,否則為0
Request.ServerVariables("Server_Protocol")
服務(wù)器使用的協(xié)議的名稱和版本
Request.ServerVariables("Server_Software")
應(yīng)答請求并運(yùn)行網(wǎng)關(guān)的服務(wù)器軟件的名稱和版本
Request.ServerVariables("All_Http")
客戶端發(fā)送的所有HTTP標(biāo)頭,前綴HTTP_
Request.ServerVariables("All_Raw")
客戶端發(fā)送的所有HTTP標(biāo)頭,其結(jié)果和客戶端發(fā)送時一樣,沒有前綴HTTP_
Request.ServerVariables("Appl_MD_Path")
應(yīng)用程序的元數(shù)據(jù)庫路徑
Request.ServerVariables("Content_Length")
客戶端發(fā)出內(nèi)容的長度
Request.ServerVariables("Https")
如果請求穿過安全通道(SSL),則返回ON如果請求來自非安全通道,則返回OFF
Request.ServerVariables("Instance_ID")
IIS實例的ID號
Request.ServerVariables("Instance_Meta_Path")
響應(yīng)請求的IIS實例的元數(shù)據(jù)庫路徑
Request.ServerVariables("Http_Accept_Encoding")
返回內(nèi)容如:gzip,deflate
Request.ServerVariables("Http_Accept_Language")
返回內(nèi)容如:en-us
Request.ServerVariables("Http_Connection")
返回內(nèi)容:Keep-Alive
Request.ServerVariables("Http_Cookie")
返回內(nèi)容如:nVisiT%
Request.ServerVariables("Http_User_Agent")
返回內(nèi)容:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)
Request.ServerVariables("Https_Keysize")
安全套接字層連接關(guān)鍵字的位數(shù),如128
Request.ServerVariables("Https_Secretkeysize")
服務(wù)器驗證私人關(guān)鍵字的位數(shù)如1024
Request.ServerVariables("Https_Server_Issuer")
服務(wù)器證書的發(fā)行者字段
Request.ServerVariables("Https_Server_Subject")
服務(wù)器證書的主題字段
Request.ServerVariables("Auth_Password")
當(dāng)使用基本驗證模式時,客戶在密碼對話框中輸入的密碼
Request.ServerVariables("Auth_Type")
是用戶訪問受保護(hù)的腳本時,服務(wù)器用於檢驗用戶的驗證方法
Request.ServerVariables("Auth_User")
代證的用戶名
Request.ServerVariables("Cert_Cookie")
唯一的客戶證書ID號
Request.ServerVariables("Cert_Flag")
客戶證書標(biāo)志,如有客戶端證書,則bit0為0如果客戶端證書驗證無效,bit1被設(shè)置為1
Request.ServerVariables("Cert_Issuer")
用戶證書中的發(fā)行者字段
Request.ServerVariables("Cert_Keysize")
安全套接字層連接關(guān)鍵字的位數(shù),如128
Request.ServerVariables("Cert_Secretkeysize")
服務(wù)器驗證私人關(guān)鍵字的位數(shù)如1024
Request.ServerVariables("Cert_Serialnumber")
客戶證書的序列號字段
Request.ServerVariables("Cert_Server_Issuer")
服務(wù)器證書的發(fā)行者字段
Request.ServerVariables("Cert_Server_Subject")
服務(wù)器證書的主題字段
Request.ServerVariables("Cert_Subject")
客戶端證書的主題字段
Request.ServerVariables("Content_Type")
客戶發(fā)送的form內(nèi)容或HTTPPUT的數(shù)據(jù)類型
--------------------------------------------------------------------------------------
二.ASP獲取客戶端證書信息
1、環(huán)境要求
服務(wù)器端IIS并配置安全站點。
2、讀取數(shù)字證書(方法一)
數(shù)據(jù)集合:Request.ClientCertificate(key[SubField])
所有客戶證書的信息的集合。對于Key,該集合具有如下的關(guān)鍵字:
Subject 證書持有者的主題,數(shù)據(jù)格式以英文逗號分隔。(不建議使用)
Issuer 證書的發(fā)行頒發(fā)者主題,數(shù)據(jù)格式以英文逗號分隔。(不建議使用)
VadidFrom 證書發(fā)行的日期,證書生效日期。
ValidUntil 該證書不再有效的時間。
SerialNumber 證書的序列號。
Certificate 包含整個證書內(nèi)容的二進(jìn)制流,使用ASN.1格式。
對于SubField,Subject和Issuer關(guān)鍵字可以具有如下的子域后綴:(比如:SubjectOU或IssuerL)
C 國家。 S 州(或?。?BR>O 公司或組織名稱。 T 個人或公司的標(biāo)題。
OU 組織單元。 GN 給定名稱。
CN 用戶的常規(guī)名稱。 I 初始。
L 地區(qū)。
當(dāng)文件cervbs.inc(VBScript使用)或cerjavas.inc(Jscript使用)通過使用#i nclude導(dǎo)向包含在你的Active Server Page里時,下面兩個標(biāo)志可以使用:
ceCertPresent 指明客戶證書是否存在,其值為TRUE或FALSE。
ceUnrecongnizedIssure 指明在該鏈表中的最后的證書的發(fā)行者是否未知,其值為TRUE或FALSE。
3、讀取數(shù)字證書(方法二)
數(shù)據(jù)集合:Request.ServerVaribles(Server Environment Variable)
環(huán)境變量的集合,讀取HTTP頭??梢酝ㄟ^使用HTTP_前綴來讀取任何頭信息。比如,HTTP_USER_AGENT接受客戶代理HTTP頭(瀏覽器類型)。此外,可以使用下表所示的變量獲得數(shù)字證書相關(guān)信息。
CERT_COOKIE 唯一的客戶證書ID號。
CERT_FLAG 客戶證書標(biāo)志,如有客戶端證書,則bit0為0。如果客戶端證書驗證無效,bit1被設(shè)置為1。
CERT_ISSUER 用戶證書中的頒發(fā)者字段。
CERT_KEYSIZE 安全套接字層連接關(guān)鍵字的位數(shù),如128。
CERT_SECRETKEYSIZE 服務(wù)器驗證私人關(guān)鍵字的位數(shù)。如1024。
CERT_SERIALNUMBER 客戶證書的序列號字段。
CERT_SUBJECT 客戶端證書的主題字段。
CERT_SERVER_ISSUER 服務(wù)器證書的發(fā)行者字段
CERT_SERVER_SUBJECT 服務(wù)器證書的主題字段。
HTTPS 如果請求穿過安全通道(SSL),則返回ON。如果請求來自非安全通道,則返回OFF。
HTTPS_KEYSIZE 安全套接字層連接關(guān)鍵字的位數(shù),如128。
HTTPS_SECRETKEYSIZE 服務(wù)器驗證私人關(guān)鍵字的位數(shù)。如1024。
HTTPS_SERVER_ISSUER 服務(wù)器證書的發(fā)行者字段。
HTTPS_SERVER_SUBJECT 服務(wù)器證書的主題字段。
4、補(bǔ)充說明
2中提到的通過Subject和Issuer所獲得的相關(guān)主題信息在包含中文的情況下是亂碼;通過Request.ServerVaribles數(shù)據(jù)集合獲得證書持有者的主題信息和證書頒發(fā)機(jī)構(gòu)的主題信息沒有任何問題。
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 編輯過