ClientCertificate コレクションは、Web ブラウザが発行した要求から (X.509 規格で規定されている) 証明書フィールドを取得します。
Web ブラウザがサーバーへの接続で SSL3.0/PCT1 プロトコルを使用していて (つまり "http://" ではなく "https://" で始まる URL を使用していて)、サーバーが証明書を要求している場合、ブラウザは証明書フィールドを送信します。
証明書がまったく送信されない場合、ClientCertificate コレクションは EMPTY を返します。
ClientCertificate コレクションを使うときは、クライアント証明書を要求するように Web サーバーの設定を行う必要があります。詳細については、「Active Server Pages スクリプト ガイド」の「クライアント証明書の使用」を参照してください。
Request.ClientCertificate( Key[SubField] )
Key
取得する証明書フィールドの名前を指定します。クライアント証明書は次の各フィールドで構成されています。
値 |
意味 |
Subject |
サブフィールド値のリストからなる文字列です。サブフィールド自身には証明書の主題に関する情報が含まれています。この値を SubField なしで指定した場合、ClientCertificate コレクションはカンマで区切られたサブフィールドのリストを返します。たとえば、"C=US, O=Msft, ..." などとなります。 |
Issuer |
サブフィールド値のリストからなる文字列です。サブフィールドには証明書の発行者に関する情報が含まれています。この値を SubField なしで指定した場合、ClientCertificate コレクションはカンマで区切られたサブフィールドのリストを返します。たとえば、"C=US, O=Verisign, ..." などとなります。 |
ValidFrom |
証明書が有効になったときに指定される日付です。この日付は VBScript の形式に従い、[タイムゾーン] の設定によって変化します。たとえば、米国では 9/26/96 11:59:59 PM という形式になります。 |
ValidUntil |
証明書の有効期限が切れたときに指定される日付です。 |
SerialNumber |
証明書のシリアル番号からなる文字列です。ASCII 文字が 16 進バイト値で表現され、ハイフン (-) で区切られます。たとえば、"04-67-F3-02" などとなります。 |
Certificate |
ASN.1 形式による、証明書のコンテンツ全体のバイナリ ストリームからなる文字列です。 |
Flags |
クライアント証明書の補足情報となる一連のフラグです。次のフラグを設定できます。 ceCertPresent - クライアント証明書が存在する。 ceUnrecognizedIssuer - このチェインの最後の証明書は未知の発行者からのものである。 注意 これらのフラグを使用する場合は、自分の ASP ページにクライアント証明書インクルード ファイルをインクルードする必要があります。VBScript を使っている場合は Cervbs.inc を、JScript を使っている場合は Cerjavas.inc を、それぞれインクルードします。これらのファイルは \Inetpub\ASPSamp\Samples ディレクトリにインストールされています。 |
SubField
"Subject" または "Issuer" のどちからのキーの中の個々のフィールドを取得するために使う、省略可能なパラメータです。このパラメータはサフィックスとして Key パラメータの後に追加されます。たとえば、"IssuerO"、"SubjectCN"、などとなります。通常使用する SubField の値のいくつかを次の表に示します。
値 |
意味 |
C |
発行国名を指定します。 |
O |
企業名または組織名を指定します。 |
OU |
部署名を示します。 |
CN |
ユーザーの公開名を指定します (このサブフィールドは "Subject" キーとともに使われます)。 |
L |
地域名を指定します。 |
S |
州名または地方名を指定します。 |
T |
役職名を指定します。 |
GN |
名前を指定します。 |
I |
イニシャルを指定します。 |
この表で列挙したもの以外の SubField 値については、それらの ASN.1 識別子により識別できます。ASN.1 識別子の形式はピリオド (.) で区切られた数値のリストです。たとえば、"3.56.7886.34" などとなります。
ループを使うと ClientCertificate コレクションのすべてのキーを解析できます。この例を次に示します。
<% For Each key in Request.ClientCertificate Response.Write( key & ": " & Request.ClientCertificate(key) & "<BR>") Next %>
次の例は、Subject キーを使ってクライアント証明書が提示されているかどうかを調べます。
<% If Len(Request.ClientCertificate("Subject")) = 0 Response.Write("提示されているクライアント証明書はありませんでした。") End if %>
次の例は、クライアント証明書を発行した企業の公開名を取得します。
<%= Request.ClientCertificate("IssuerCN") %>
次の例は、クライアント証明書の主題の組織名を調べます。
<% If (Request.ClientCertificate("SubjectO")="Msft") Response.Write("良い選択です !") End if %>
次の例は、クライアント証明書の有効日付を表示します。
この証明書の有効日付は <%= Request.ClientCertificate("ValidUntil") %> です。
次の例は、Flags キーを使って証明書の発行者が既知であるかどうかを調べます。1 行目のインクルード ステートメントでは、このスクリプトで ceUnrecognizedIssuer という名前付きフラグを使えるようにしています。
<!--#include file="cervbs.inc" --> <% if Request.ClientCertificate("Flags") and ceUnrecognizedIssuer then Response.Write "発行者不明" end if %>
Cookies、Form、QueryString、 ServerVariables