ClientCertificate
ClientCertificate コレクションは、Web ブラウザが発行した要求から (X.509 規格で規定されている) 証明書フィールドを取得します。
Web ブラウザがサーバーへの接続で SSL3.0/PCT1 プロトコルを使用していて (つまり http:// ではなく https:// で始まる URL を使用していて)、サーバーが証明書を要求している場合、ブラウザは証明書フィールドを送信します。
証明書がまったく送信されない場合、ClientCertificate コレクションは EMPTY を返します。
ClientCertificate コレクションを使用するときは、クライアント証明書を要求するように Web サーバーを構成する必要があります。
構文
Request.ClientCertificate( Key[SubField] )
パラメータ
Key
取得する証明書フィールドの名前を指定します。クライアント証明書を構成しているフィールドは、以下のとおりです。値 意味 Certificate ASN.1 形式による、証明書のコンテンツ全体のバイナリ ストリームを含む文字列です。 Flags クライアント証明書の補足情報となる一連のフラグです。次のフラグを設定できます。 ceCertPresent—クライアント証明書が存在します。
ceUnrecognizedIssuer— このチェインの最後の証明書は未知の発行者からのものです。
注 これらのフラグを使用する場合は、自分の ASP ページにクライアント証明書インクルード ファイルをインクルードする必要があります。VBScript を使用している場合は cervbs.inc を、JScript を使用している場合は cerjavas.inc を、それぞれインクルードします。これらのファイルは \Inetpub\ASPSamp\Samples ディレクトリにインストールされています。
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 識別子によって識別できます。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 then
Response.Write("No client certificate was presented")
End if
%>
次の例は、クライアント証明書を発行した企業の一般名を取得します。
<%= Request.ClientCertificate("IssuerCN") %>
次の例は、クライアント証明書のサブジェクトの組織名を調べます。
<%
If (Request.ClientCertificate("Subject")="Msft") then
Response.Write("Good Choice!")
End if
%>
次の例は、クライアント証明書の有効期限を表示します。
This certification will expire on
<%= Request.ClientCertificate("ValidUntil") %>
次の例は、Flags キーを使用して証明書の発行者が既知であるかどうかを調べます。1 行目のインクルード ステートメントでは、このスクリプトで ceUnrecognizedIssuer という名前付きフラグを使えるようにしています。
<!--#include file="cervbs.inc" -->
<%
If Request.ClientCertificate("Flags") and ceUnrecognizedIssuer then
Response.Write "Unrecognized issuer"
End If
%>