IBM HTTP Server のヘルプ : クライアント認証

クライアント認証

サーバーはクライアント証明書の情報に基づいて、 3 つのレベルのクライアント認証と 2 つのタイプのアクセス制御をサポートしています。

クライアント認証のレベル

レベルは、SSLCLientAuth ディレクティブを使って設定されます。

「必須」を選択した場合...

必須」レベルのクライアント認証を選択すると、 セキュア・サーバーは https 要求を実行し、すべてのクライアントから証明書を要求します。 サーバーはローカルのキー・データベースにあるトラステッド CA ルート証明書を調べることにより、 クライアントを検証します。 トラステッド CA ルート証明書とは、 サーバー上にトラステッド CA として指定されている認証局によって署名された証明書のことです。

サーバーはクライアントが有効な証明書をもっている場合に、セキュア接続を確立します。 クライアントが期限切れの証明書をもっていたり、 トラステッド CA としてサーバー上に指定されていない証明局 (CA) によって証明書が署名されているような場合、 サーバーは要求を拒否します。

SSL クライアント認証によりネットワーク・トラフィックが増加する点に気を付けてください。

「オプション」を選択した場合...

オプション」レベルを選択すると、サーバーはクライアント証明書を要求します。 クライアントが証明書を提出しない場合でも、セキュア接続は確立されます。 クライアントが期限切れの証明書を提出したり、 トラステッド CA としてサーバー上に指定されていない証明局 (CA) によって証明書が署名されているような場合、 サーバーは要求を拒否します。

SSL クライアント認証によりネットワーク・トラフィックが増加する点に気を付けてください。

「なし」を選択した場合...

なし」を選択した場合は、セキュア・サーバーはクライアントに証明書を要求しません。

クライアント証明書の情報に基づいたアクセス制御タイプ

タイプは SSLFakeBasicAuth または SSLClientAuthRequire ディレクティブを使って設定されます。

注: SSLClientAuthRequire の方が、クライアント認証によく使われるタイプです。

SSLFakeBasicAuth ディレクティブ

SSLFakeBasicAuth の使用は推奨していません。 Apache SSL コード (または mod_ssl と Apache) で使用するために生成されたパスワード・ファイルは、 識別名の形式が異なるため、IBM HTTP Server には使用できません。

SSLFakeBasicAuth タイプは、非常に単純化されたクライアント認証メソッドです。 SSLFakeBasicAuth を指定した場合、クライアントの証明書の識別名とパスワード (「password」) は、 Base64 エンコードされ、許可ヘッダーに置かれます。 mod_ibm_ssl モジュールは、モジュール・リストの中の先頭のモジュールでなければなりません。 それにより、そのあとに続く認証モジュールは偽の基本認証ユーザー ID とパスワードをもちます。 指定された仮想ホスト内での基本認証はうまく機能しませんので気を付けてください。 これは、ユーザーが提供したユーザー ID とパスワードが、 クライアントの識別名とパスワード (「password」) によって上書きされてしまうためです。

クライアント証明書の識別名を表示するためには、 CGI プログラムを作成して SSL_CLIENT_DN 環境変数を印刷してください。

SSLClientAuthRequire ディレクティブ

さらに拡張された SSLClientAuthRequire サポート を使うと、 webmaster を使って x509 属性の入った論理式を定義することができます。 次にこれらの論理式は証明書の情報と比較されて、オブジェクトへのアクセスを許可または拒否します。 しかしこの処理をすべて実行する前に、GSK はまずクライアント証明書を検査して、 それがトラステッド CA (認証局) によって署名されていることを証明しなければなりません。

SSLClientAuthRequire ディレクティブを使うと、webmaster を使って AND、OR、 および NOT とリンクされた属性検査から成る論理式を作成することができます。 括弧も使用できます。たとえば次のように指定します。

SSLClientAuthRequire (CommonName = "Fred Smith" OR CommonName = "John Deere") AND Org = IBM
これは、クライアント証明書に「Fred Smith」か「John Deere」いずれかの共通名が含まれており、 会社名が IBM でないかぎり、オブジェクトは提供されないことを意味します。

属性検査で、唯一有効な比較は equal と not equal (= and !=) です。 各属性検査は、 AND、OR、または NOT (さらに &&, ||, および !) とリンクすることができます。 1 つのリソースに対して複数の SSLClientAuthRequire ディレクティブが指定された場合、 そのリソースに対する効果は、あたかもこの値がブールの AND 演算子で結合されたときのようになります。

比較をグループ化するために括弧を使用することができます。 属性の値に英数字以外の文字が含まれているような場合は、その値を二重引用符で区切る必要があります。

有効な属性は、次のとおりです。

IssuerStateOrProvinceIssuerCommonNameIssuerOrgUnitIssuerCountryIssuerLocalityIssuerOrgIssuerEmailStateOrProvinceCommonNameOrgUnitCountryLocalityOrgEmail

また、次の短縮名も有効です。

     IST, ICN, IOU, IC, IL, IO, IE, ST, CN, OU, C, L, O, E 

関連情報