SSLクライアント認証の設定


戻る

SSLクライアント認証とは

SSLクライアント認証とは、特定の認証局が発行した証明書を提示したクライアントに対してのみサーバへのアクセスを許すような仕組みのことです。SSL全体の説明や設定方法については、SSLの設定を参照して下さい。Esehttpdではクライアント証明書の正当性はチェックできますが、その証明書の内容によってアクセスコントロールする機能は未だサポートしていません。

クライアント認証のために必要なもの

Esehttpdでクライアント認証をおこなうには、サーバが信頼すると認める認証局の証明書を用意しなければなりません。その証明書をesehttpdの設定ファイルのSSLCACertificateFileディレクティブに指定すれば、クライアント認証が可能となります。たとえばSSLの設定説明した方法で自分で認証局を立てた場合は、その認証局の証明書(例ではca.crtファイル)をSSLCACertificateFileに指定し、その認証局がクライアント用の証明書を発行すればよいことになります。
クライアント認証を要求するか否かはディレクトリ単位で決めることができます。クライアント認証を要求するディレクトリには、SSLVerifyClient requireを指定します。
  SSLCACertificate      /usr/local/lib/esehttpd/conf/ca.crt
  <Directory /usr/local/lib/esehttpd/www/html>
    SSLVerifyClient     require
  </Directory>
このような設定をesehttpdの設定ファイルに書いておけば、指定したディレクトリへのアクセス要求が来た場合のみクライアントの証明書を要求するようになります。

クライアント証明書の獲得(自分で認証局を立てる方法)

認証局を自分で立てる方法については、サーバ証明書の獲得(自分で認証局を立てる方法)を参照してください。このようにして立てた認証局にクライアントの証明書を認証局に発行してもらうために、まずクライアント用の秘密鍵とCSRを作ります。
  $ openssl genrsa -out client.key 1024
  $ openssl req -new -key client.key -out client.csr
  Country Name (2 letter code) [AU]:JP
  State or Province Name (full name) [Some-State]:Hokkaido
  Locality Name (eg, city) []:Sapporo
  Organization Name (eg, company) [Internet Widgits Pty Ltd]:ESE User
  Organizational Unit Name (eg, section) []:ESE User
  Common Name (eg, YOUR name) []:Akira Higuchi
  Email Address []:a-higuti@math.sci.hokudai.ac.jp
次に、証明書を発行します。
  $ openssl ca -config ca.config -out client-ca.crt -infiles client.csr
念のため確認してみます。
  $ openssl verify -CAfile ca.crt client-ca.crt
  client.crt: OK
これでクライアントの証明書が得られました。

クライアント証明書をブラウザに組み込む

クライアント証明書をブラウザに組み込むには、秘密鍵と証明書をまとめてPKCS#12形式のファイルにする必要があります(ブラウザが対応していればPKCS#12以外の形式でも構いませんが、とりあえずPKCS#12なら大抵は対応しているようです)。
  $ cat client.key client-ca.crt | \
    openssl pkcs12 -export -out client.p12 -name "My Certificate 1"
  Enter Export Password: ********
  Verifying password - Enter Export Password: ********
ここではこの鍵を適当なパスワードで保護しておきます。

ブラウザに組み込む(Netscape Navigatorの場合)

まずメニューの編集→設定のダイアログを出し、「プライバシーとセキュリティー」以下にある「証明書」を開きます。

NN: 証明書の管理

「証明書の管理」をクリックして出るダイアログの「身分証明書」を開き、「復元」をクリックします。ファイルセレクタが出るので、先ほど作ったclient.p12ファイルを選択すると取り込むことができます。先の「証明書」のダイアログで、「クライアントの証明書の選択」の項目を「毎回尋ねる」にしておけば、Webサーバがクライアント証明書を要求した際に下のようなダイアログが出ます。

NN: クライアント証明書の要求

ここで「OK」を押せばクライアント証明書をサーバに送り、ページが表示されます。「クライアントの証明書の選択」が「自動的に選択」ではサーバが受け入れるCAに応じて自動的にクライアント証明書を送るようですのでこのダイアログは出ずにページが表示されます。

ブラウザに組み込む(Microsoft Internet Explorerの場合)

MSIEではclient.p12ファイルを開くだけでインポートするためのダイアログが出ます。

MSIE: 証明書のインポート

指示にしたがってインポートすれば、Webサーバががクライアント認証を要求した際に下のようなダイアログが出ます。

MSIE: クライアント証明書の要求

ここで「OK」を押せばクライアント証明書をサーバに送り、ページが表示されます。
戻る
Akira Higuchi