ClientCertificate

ClientCertificate コレクションは、クライアント ブラウザが Web サーバーに送信するセキュリティ証明書のキーおよび値に関するフィールド群を保持しています。このフィールド群は、公開キー証明書の X.509 Version 3 規格で定められています。X.509 は公的な規格ではないため、各証明機関が発行する証明書の間には差異が認められます。World Wide Web Consortium Web サイト の「X509 Certificate」という記事を参照してください。

ClientCertificate コレクションのフィールド群を読み込むには、Web サーバーとクライアント ブラウザの両方で SSL3.0/PCT1.0 プロトコルをサポートしている必要があります。Web サイトでは SSL を有効にして、クライアント証明書を要求します。SSL が有効になると、Web サイトの URL は "http://" ではなく、"https://" で始まります。クライアント ブラウザでは、証明書の送信を有効にしておきます。証明書がまったく送信されない場合、ClientCertificate コレクションは EMPTY を返します。

Web サーバーを構成してクライアント証明書を要求する方法については、「サーバーに SSL をセットアップする」を参照してください。

ClientCertificate コレクションの各フィールドの値を読み込むには、キー名と省略可能なサブフィールド名を渡します。

構文

Request.ClientCertificate( Key[SubField] )

 

パラメータ
Key
取得する証明書フィールドの名前を指定します。クライアント証明書を構成しているフィールドは、次のとおりです。
意味
Certificate ASN.1 形式による、証明書のコンテンツ全体のバイナリ ストリームを含む文字列です。このフィールドは、以下で取り上げていない特別な SubField が存在するかどうかを検出するために使用できます。
Flags クライアント証明書の補足情報となる一連のフラグです。Flags が 1 に設定されている場合、クライアント証明書は存在します。Flags が 2 に設定されている場合、このチェインの最後の証明書は未知の発行者からのものです。
Issuer サブフィールド値のリストからなる文字列です。サブフィールドには証明書の発行者に関する情報が含まれています。この値を SubField なしで指定した場合、ClientCertificate コレクションはカンマで区切られたサブフィールドのリストを返します。たとえば、"C=US, O=Verisign, ..." などです。
SerialNumber 証明書のシリアル番号からなる文字列です。16 進バイト値をハイフン (-) で区切って ASCII 文字で表現したものです。たとえば、"04-67-F3-02" などとなります。
Subject サブフィールド値のリストからなる文字列です。サブフィールドには証明書のサブジェクトに関する情報が含まれています。この値を SubField なしで指定した場合、ClientCertificate コレクションはカンマで区切られたサブフィールドのリストを返します。たとえば、"C=US, O=Msft, ..." などとなります。
ValidFrom 証明書がいつから有効かを表す日付です。この日付は VBScript の形式に従い、各国対応設定によって変化します。たとえば、米国では 9/26/96 11:59:59 PM という形式になります。年の値は 4 桁の数値で表示されます。
ValidUntil 証明書の有効期限がいつ切れるかを表す日付です。年の値は 4 桁の数値で表示されます。


SubField
"Subject" または "Issuer" のどちらかのキーの中の個々のフィールドを取得するために使用する、省略可能なパラメータです。このパラメータはサフィックスとして Key パラメータの後に追加します。たとえば、"IssuerO"、"SubjectCN"、などとなります。次の表は、一般的な SubField の値のいくつかを示しています。
意味
C 発行国名/地域名を指定します。
CN ユーザーの一般名を指定します。(このサブフィールドは必ず "Subject" キーと共に使用されます。)
GN 名前を指定します。
I イニシャルを指定します。
L 地域名を指定します。
O 企業名または組織名を指定します。
OU 部署名を示します。
S 州名または地方名を指定します。
T 役職名を指定します。

この表で列挙したもの以外の SubField 値については、それらの ASN.1 オブジェクト識別子 (OID) によって識別できます。OID の形式は、ピリオド (.) で区切られた数値のリストです。証明書における OID のリストは、発行元の証明機関から入手できます。

ループを使用すると ClientCertificate コレクションのすべてのキーを解析できます。この例を次に示します。

<%
  For Each strKey in Request.ClientCertificate
    Response.Write strkey & " = " & Request.ClientCertificate(strkey) & "<BR>"
  Next
%>
 

次の例は、クライアント証明書を発行した企業の一般名を取得します。

<%= Request.ClientCertificate("IssuerCN") %>
 

次の例は、クライアント証明書の有効期限を表示します。

This certification will expire on 
<%= Request.ClientCertificate("ValidUntil") %>
 
The following example uses the Flags key to test whether the issuer of the certificate is known.
<%
  Const ceCertPresent = 1
  Const ceUnrecognizedIssuer = 2
  If Request.ClientCertificate("Flags") = ceUnrecognizedIssuer Then
    Response.Write "Unrecognized issuer"
  End If
%>
 

次の例は、クライアント証明書のすべてのフィールドを表示します。

Issuer: <%=Request.ClientCertificate("Issuer")%><br>
Subject: <%=Request.ClientCertificate("Subject")%><br>

<% cer=Request.ClientCertificate("Certificate") %>
Certificate Raw Data: <%=cer%><br>
Certificate length: <%=len(cer)%><br>
Certificate Hex Data:
<% For x=1 To 100 %>
  <%=hex(asc(mid(cer,x,1)))%>&nbsp;
<% Next %>
対象

Request オブジェクト

関連項目

CookiesFormQueryStringServerVariablesSecurity and Cryptography


© 1997-2001 Microsoft Corporation.All rights reserved.