ClientCertificate

(PWS4 IIS4 IIS5)
ClientCertificate — HTTP 要求の中で送信されたクライアント証明書に格納されているフィールドの値です。

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 コレクションは、Web ブラウザが発行した要求から (X.509 規格で規定されている) 証明書フィールドを取得します。 Web ブラウザがサーバーへの接続で SSL3.0/PCT1 プロトコルを使用していて (つまり http:// ではなく https:// で始まる URL を使用していて)、サーバーが証明書を要求している場合、ブラウザは証明書フィールドを送信します。 証明書がまったく送信されない場合、ClientCertificate コレクションは EMPTY を返します。 ClientCertificate コレクションを使用するときは、クライアント証明書を要求するように Web サーバーを構成する必要があります。

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

例1.ClientCertificateの例

1
2
3
4
5
<%
    For Each strKey in Request.ClientCertificate
        Response.Write strkey & " = " & Request.ClientCertificate(strkey) & "<br />"
    Next
%>

次の例は、Subject キーを使って、クライアント証明書が提示されているかどうかを調べます。

1
2
3
4
5
<%
  If Len(Request.ClientCertificate("Subject")) = 0 then
    Response.Write("No client certificate was presented")
  End if
%>

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

1
2
3
<%
Response.Write Request.ClientCertificate("IssuerCN")
%>

次の例は、クライアント証明書のサブジェクトの組織名を調べます。

1
2
3
4
5
<%
  If (Request.ClientCertificate("Subject")="Msft") then
    Response.Write("Good Choice!")
  End if
%>

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

1
2
This certification will expire on
<%= Request.ClientCertificate("ValidUntil") %>

次の例は、Flags キーを使用して証明書の発行者が既知であるかどうかを調べます。1 行目のインクルード ステートメントでは、このスクリプトで ceUnrecognizedIssuer という名前付きフラグを使えるようにしています。

1
2
3
4
5
6
<!--#include file="cervbs.inc" -->
<%
  If Request.ClientCertificate("Flags") and ceUnrecognizedIssuer then
    Response.Write "Unrecognized issuer"
  End If
%>

ServerBariablesコレクション も参照ください。