この特集のトップページへ
Chapter 8:プレゼンテーション層の構築

8.3.3 クライアント証明書を使った認証
●クライアント証明書の設定
 IISでクライアント証明書を使うには,クライアント証明書を使いたいサイトまたは仮想ディレクトリに対して,プロパティを設定しなければならない。

 具体的には,サイトや仮想ディレクトリのプロパティで[ディレクトリセキュリティ]ページを開き,[セキュリティ保護された通信]内の[編集]ボタンを押し,[クライアント証明書を受諾する]または[クライアント証明書を要求する]にチェックを付ける(Fig.8-100)。

Fig.8-100 セキュリティで保護された通信
fig8_100

 [クライアント証明書を受諾する]を選択した場合には,SSL通信が有効であれば,クライアント証明書を受け取ることになる。[クライアント証明書を要求する]を選択した場合には,Webブラウザからクライアント証明書が送信されてこないとアクセスを拒否する。


One Point! クライアント証明書は,SSLによる暗号化通信時だけ利用できる。そのため,[SSLを要求する]に設定しないと[クライアント証明書を要求する]は選択できない。

 [クライアント証明書を受諾する]または[クライアント証明書を要求する]を選択した場合,その設定をしたサイトや仮想ディレクトリにアクセスしようとすると,Webブラウザ側でFig.8-101に示すウィンドウが表示され,どのクライアント証明書を送信するのかを選ぶことになる。[クライアント証明書を要求する]に設定していた場合には,ここでクライアント証明書を選ばないと,そのサイトや仮想ディレクトリへのアクセスは失敗する。

Fig.8-101 クライアント証明書の選択
fig8_101


One Point! Internet Explorer 5.0以降の場合,Webブラウザにクライアント証明書が1つしかインストールされていなければ,Fig.8-101の画面は表示されず,自動的にインストールされているクライアント証明書が送信される。ただし,この設定は,Internet Explorerのオプション設定で変更することもできる。

●クライアント証明書の情報をASPから読み取る
 クライアント証明書は,ユーザーが登録した情報(Fig.8-95にて入力した情報)を含むデータ列である。クライアント証明書に格納された情報は,ASPファイルにおいて,RequestオブジェクトのClientCertificateコレクションを使って取得することができる。


<%= Request.ClientCertificate("キー名") %>

 キー名には,読み取りたい情報の種類を指定する。キー名として指定できるのは,Table 8-5に示すいずれかの文字列である。

Table 8-5 ClientCertificateコレクションで指定するキー名
キー名解説
Subjectクライアント証明書の内容(ユーザー情報)。
Issuerクライアント証明書を発行した証明機関(証明書サービス)の情報。
ValidFromクライアント証明書が発行された日時
ValidUntilクライアント証明書の期限が失効する日時
SerialNumberクライアント証明書のシリアル番号
CertificatePKCS(ASN.1)形式による証明書全体のバイナリ文字列。http://www.rsasecurity.com/rsalabs/pkcs/を参照
Flagsクライアント証明書の情報を示すフラグ。1のときクライアント証明書が送信されてきていることを,2のときクライアント証明書が無効であることを示す

 指定するキー名SubjectまたはIssuerであれば,それぞれの各フィールド名をキー名の後ろに付加することで,それぞれのフィールドの情報を取得することができる(Table 8-6)。

Table 8-6 クライアント証明書のフィールド名
フィールド名解説
C国/地域コード
CNユーザーの名前
EMAILメールアドレス
GN名前
Iイニシャル
L地域名(市区町村名)
O会社名
OU部署名
S地方名(都道府県名)
T役職名

 たとえば,クライアント証明書に含まれるユーザー名を取得するには,次のようにSubjectキーのCNフィールドを参照すればよい。


<%= Request.Certificate("SubjectCN") %>

 クライアント証明書を使ってユーザーを識別するWebアプリケーションでは,一般にSubjectCNを使ってユーザーを判定したり,IssuerCNを使って自分が管理する証明機関(証明書サービス)から発行されたクライアント証明書を保持するユーザーかどうかを調べたりすることで,正しいユーザーであるかどうかを判定することになる。

Prev 42/43 Next