ASP - ClientCertificate
Семейтво ClientCertificate извлекает поля сертификата (определенные стандартом X.509) из запроса, выданного веб-обозревателем.
Если веб-обозреватель использует протокол SSL3.0/PCT1 (другими словами, использует адрес URL, начинающийся с https://, а не с of http://) для подключения к серверу, а сервер запрашивает сертификацию, обозреватель передает поля сертификата.
Если сертификат не был передан, семейство ClientCertificate возвращает EMPTY(«пусто»).
Перед использованием семейства ClientCertificate необходимо настроить веб-сервер на запрос клиентских сертификатов.
Синтаксис
Request.ClientCertificate( Ключ[дополнительное_поле] )
Параметры
Ключ
Указывает имя извлекаемого поля сертификата. Сертификат клиента состоит из перечисленных ниже полей.
Значение | Описание |
Certificate | Строка, содержащая последовательность двоичных данных всего содержимого сертификата в формате ASN.1. |
Flags | Набор флагов, обеспечивающих дополнительные сведения о клиентском сертификате. Могут быть установлены следующие флаги:
ceCertPresent—Клиентский сертификат присутствует. ceUnrecognizedIssuer—Последняя сертификация в этой цепочке была проведена неизвестной службой. Примечание. Чтобы использовать предыдущие флаги, необходимо включить в ASP-страницу файл, вставляющий сертификат клиента. Если используется VBScript, включите файл cervbs.inc. Если используется JScript, включите файл cerjavas.inc. Эти файлы устанавливаются в каталоге \Inetpub\ASPSamp\Samples. |
Issuer | Строка, содержащая список значений дополнительных полей со сведениями о службе, выпустившей сертификат. Если это значение указано без дополнительного_поля, семейство ClientCertificate возвращает список дополнительных полей, разделенных запятыми. Например, C=US, O=Verisign, и так далее. |
SerialNumber | Строка, содержащая порядковый номер сертификата в виде символьного представления шестнадцатеричных цифр с байтами, разделенными дефисами (-). Например, 04-67-F3-02. |
Subject | Строка, содержащая список значений дополнительных полей. Значения дополнительных полей содержат сведения о клиенте. Если это значение указано без дополнительного_поля, семейство ClientCertificate возвращает список дополнительных полей, разделенных запятыми. Например, C=US, O=Msft, и так далее. |
ValidFrom | Дата вступления сертификата в силу. Эта дата записывается в формате VBScript и может изменяться в соответствии с национальными настройками. Например, для России, 26.09.1996 11:59:59. Значение года отображается четырьмя цифрами. |
ValidUntil | Дата истечения срока действия сертификата. Значение года отображается четырьмя цифрами. |
Дополнительное_поле
Необязательный параметр, используемый для извлечения отдельных полей для ключей Subject и Issuer. Этот параметр добавляется к параметру Ключ в виде суффикса. Например, IssuerO или SubjectCN. В приведенной ниже таблицы перечислены некоторые общеупотребительные значения дополнительного_поля.
Значение | Описание |
C | Указывает название страны. |
CN | Указывает общее имя пользователя. (Это дополнительное поле используется только с ключом Subject.) |
GN | Указывает присвоенное имя. |
I | Указывает набор инициалов. |
L | Указывает город. |
O | Указывает название компании или организации. |
OU | Указывает название подразделения. |
S | Указывает область или регион. |
T | Указывает должность. |
Значения дополнительного_поля, отличные от перечисленных выше, могут быть распознаны по их идентификатору ASN.1. Формат идентификатора ASN.1 представляет собой список чисел, разделенных точками (.). Например, 3.56.7886.34.
Замечания
Можно перебирать ключи семейства ClientCertificate. Это показано в приведенном ниже примере.
<%
For Each strKey in Request.ClientCertificate
Response.Write strkey & " = " & Request.ClientCertificate(strkey) & "<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
%>
Область применения
См. также
Cookies, Form, QueryString, ServerVariables