« shared/lib | Main | JTrac »

2007.06.15

複数のSSL証明書を併用

 1つのApacheに複数のSSL証明書を組み込むテスト。それぞれのSSL証明書をテストCAのレベルから別々に生成し、ついでにクライアント証明書も生成。

 いろいろと調べてみると、VirtualHostを名前ベースで使用している場合、ポート番号を分けないと正しく動作できないようです。逆に、同じポート番号を使用したい場合は、異なるIPアドレスを利用する必要があるようです。

 ホスト名はヘッダー情報から取得しますが、SSL通信環境下では復号処理を行うまでヘッダー情報を取得できないため、結果的に名前ベースでのVirtualHostは使えないとのこと(処理の順番ってことですね)。

 とりあえず、ポート番号を分ける方法で設定を行ってみました。もっとも、一般公開するサーバの場合、ポート番号を変えるとなるとFirewallの設定等を変更する必要がありますが(まぁ、複数のIPアドレスを割り当てる場合でも設定の変更は必要となると思いますが)。

 んで、SSLの設定は以下のような感じ。ホスト名はtestsvrで、ポート番号を8443と8444で開くこととします(設定は、初期設定のままの部分はかなり端折っています)。

Listen 8443
Listen 8444
NameVirtualHost *:8443
NameVirtualHost *:8444
<VirtualHost *:8443>
  DocumentRoot "c:/apache2/htdocs"
  ServerName testsvr:8443
  ServerAdmin you@example.com
  ErrorLog logs/ssl_error.log
  TransferLog logs/ssl_access.log
  SSLCertificateFile conf/cert/server.crt
  SSLCertificateKeyFile conf/cert/server.key
  SSLCACertificatePath conf/cert
  SSLCACertificateFile conf/cert/cacert.crt
  SSLVerifyClient require
  SSLVerifyDepth 1
</VirtualHost>
<VirtualHost *:8444>
  DocumentRoot "c:/apache2/htdocs"
  ServerName testsvr:8444
  ServerAdmin you@example.com
  ErrorLog logs/ssl_error2.log
  TransferLog logs/ssl_access2.log
  SSLCertificateFile conf/cert/server2.crt
  SSLCertificateKeyFile conf/cert/server2.key
  SSLCACertificatePath conf/cert
  SSLCACertificateFile conf/cert/cacert2.crt
  SSLVerifyClient require
  SSLVerifyDepth 1
</VirtualHost>

 これで、ポート番号8443でアクセスした場合はcacert.crtにつながるクライアント証明書を有している場合のみ、ポート番号8444でアクセスした場合はcacert2.crtにつながるクライアント証明書を有している場合のみアクセスできるようになります。
 もちろん、SSLVerifyClientの設定を無効にした場合、無効にしたVirtualHostに関してはクライアント証明書が不要となるので、8444でアクセス時のみクライアント証明書を要求するような設定も可能となります。

 ちなみに、今回のテストはApache2.0系列で行いましたが、Tomcatと連携する場合POSTリクエストで405エラーが発生してしまうため、注意が必要となります(といっても、Apache2.2に変更するくらいしか回避方法は無いようですが)。

|

« shared/lib | Main | JTrac »

Subversion・Trac・etc.」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/15444827

Listed below are links to weblogs that reference 複数のSSL証明書を併用:

« shared/lib | Main | JTrac »