(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コレクション も参照ください。