次の方法で共有


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
%>
 
対象

Request オブジェクト

関連項目

CookiesFormQueryStringServerVariables