第4章 Interstage HTTP Serverの認証とアクセス制御の設定
4.3 クライアント認証
クライアント認証(証明書認証)は、SSL環境を構築して、SSL通信時にクライアントから送信されるクライアント証明書により アクセス制御を行います。
さらに、Interstage HTTP Serverの環境定義ファイル(httpd.conf)において、クライアント証明書の属性情報に対する認証条件
を設定することにより、クライアント証明書の条件設定によるアクセス制御を行うこともできます。
参照
クライアント認証の機能概要については、「3.3.3 クライアント認証(証明書認証)」を参照してください。
クライアント認証(証明書認証)を設定するための手順を以下に示します。
■クライアント認証(一般的な証明書認証)
1. Interstage HTTP ServerのSSL環境を構築します。
SSL環境の構築手順の詳細については、「第15章 Interstage HTTP ServerでSSLを利用する方法」を参照してくだ さい。
なお、SMEEコマンドで構築した証明書/鍵管理環境のSSLを利用する場合は、環境定義ファイル(httpd.conf)の設 定時に、「クライアント認証あり」を指定してください。
■クライアント認証(証明書の条件設定による認証)
1. Interstage HTTP ServerのSSL環境を構築します。
SSL環境の構築手順の詳細については、「第15章 Interstage HTTP ServerでSSLを利用する方法」を参照してくだ さい。
なお、SMEEコマンドで構築した証明書/鍵管理環境のSSLを利用する場合は、環境定義ファイル(httpd.conf)の設 定時に、「クライアント認証あり」を指定してください。
2. 環境定義ファイル(httpd.conf)を設定します。
環境定義ファイル(httpd.conf)の設定については、「4.3.1 環境定義ファイルの設定」を参照してください。
クライアント認証(証明書の条件設定による認証)の手順2「環境定義ファイルの設定」について、以降に説明します。
4.3.1 環境定義ファイルの設定
Interstage HTTP Serverの環境定義ファイル(httpd.conf)において、クライアント認証(証明書の条件設定による認証)による
アクセス制御を設定します。
Interstage HTTP Serverの環境定義ファイル(httpd.conf)の設定方法を以下に示します。
SSLCertExpand on (1) SSLNotifyVers on (2) RewriteEngine On (3) RewriteCond %{ENV:環境変数A} 条件パターンA (4) RewriteCond %{ENV:環境変数B} 条件パターンB RewriteRule .* - [L] (5) RewriteCond %{ENV:環境変数C} 条件パターンC RewriteCond %{ENV:環境変数D} 条件パターンD RewriteRule .* - [L]
RewriteRule .* - [F] (6)
1. SSLCertExpandディレクティブに「on」を指定します。省略可(省略時:on)。本指定により、クライアント証明書情報の環
境変数の設定を有効とします。
2. SSLNotifyVersディレクティブに「on」を指定します。省略可(省略時:on)。本指定により、SSL関連の環境変数の設定
を有効とします。
3. RewriteEngineディレクティブに「On」を指定します。本指定により、リライト機能を有効とします。
4. RewriteCondディレクティブに、指定した環境変数に対する条件パターンを指定します。本指定により、クライアント証
明書の属性情報に対する認証許可条件を設定します。手順4のRewriteRuleディレクティブ([L]フラグ付)の前に RewriteCondディレクティブを複数指定して、併用する認証許可条件を設定できます。
環境変数は、以下から選択します。なお、環境変数は、Webサーバの動作を制御するために使用する変数であり、オ ペレーティングシステムで制御している環境変数ではありません。環境変数の詳細については、「Interstage HTTP Server 運用ガイド」の「環境変数とサーバ変数」を参照してください。
環境変数名 クライアント証明書の項目
SSL_CLIENT_CN 氏名
SSL_CLIENT_C 国名
SSL_CLIENT_EMAIL メールアドレス
SSL_CLIENT_O 組織名
SSL_CLIENT_OU 組織単位名
SSL_CLIENT_T 肩書
SSL_CLIENT_PHONE 電話番号
SSL_CLIENT_ST 州/都道府県
SSL_CLIENT_L 市町村名
条件パターンは、指定した環境変数の値を判定するための条件を、正規表現で指定します。条件パターンの文字列の 前にエクスクラメーションマーク(!)を付加し、正規表現にマッチしないパターンを条件として指定することもできます。
文字列内に空白を指定する場合は、文字列をダブルクォーテーション(")で囲みます。
5. 手順3のRewriteCondディレクティブのあとに、RewriteRuleディレクティブ([L]フラグ付)を指定します。本指定により、
手順3の認証許可条件に従ってアクセス許可を設定します。なお、手順3のRewriteCondディレクティブと手順4の
RewriteRuleディレクティブを組み合わせて複数設定することにより、複数の認証許可条件を設定できます。
6. RewriteRuleディレクティブ([F]フラグ付)を指定します。本指定により、上記で設定した認証許可条件に不一致なク
ライアント証明書を送信したクライアントのアクセス拒否を設定します。
注意
ServletサービスのアプリケーションのURLに対してクライアント証明書によるアクセス制御を設定する場合は、<Location>セ クションの中に設定してください。
■組織による認証条件の設定
例
以下のいずれかの条件に一致するクライアント証明書のアクセスを許可する場合
・ 組織名「organizationA」、かつ組織単位名「organizationAunit1」/「organizationAunit2」
・ 組織名「organizationB」、かつ組織単位名「organizationBunit1」・「organizationBunit2」以外
・ 組織名が「organization」(大文字と小文字の区別なし)で始まる文字列、かつ肩書に「Manager」を含む文字列
LoadModule rewrite_module "C:/Interstage/F3FMihs/modules/mod_rewrite.so"
RewriteEngine On
RewriteCond %{ENV:SSL_CLIENT_O} ^organizationA$
RewriteCond %{ENV:SSL_CLIENT_OU} ^organizationAunit1$|^organizationAunit2$
RewriteRule .* - [L]
RewriteCond %{ENV:SSL_CLIENT_O} ^organizationB$
RewriteCond %{ENV:SSL_CLIENT_OU} !(^organizationBunit1$|^organizationBunit2$) RewriteRule .* - [L]
RewriteCond %{ENV:SSL_CLIENT_O} "^organization.*" [NC]
RewriteCond %{ENV:SSL_CLIENT_T} .*Manager.*
RewriteRule .* - [L]
RewriteRule .* - [F]
LoadModule rewrite_module "/opt/FJSVihs/modules/mod_rewrite.so"
RewriteEngine On
RewriteCond %{ENV:SSL_CLIENT_O} ^organizationA$
RewriteCond %{ENV:SSL_CLIENT_OU} ^organizationAunit1$|^organizationAunit2$
RewriteRule .* - [L]
RewriteCond %{ENV:SSL_CLIENT_O} ^organizationB$
RewriteCond %{ENV:SSL_CLIENT_OU} !(^organizationBunit1$|^organizationBunit2$) RewriteRule .* - [L]
RewriteCond %{ENV:SSL_CLIENT_O} "^organization.*" [NC]
RewriteCond %{ENV:SSL_CLIENT_T} .*Manager.*
RewriteRule .* - [L]
RewriteRule .* - [F]
■地域による認証条件の設定
例
以下のいずれかの条件に一致するクライアント証明書のアクセスを許可する場合
・ 国名「JP」、かつ都道府県「Tokyo」/「Osaka」/「Kyoto」
・ 国名「US」、かつ州「California」/「New York」
LoadModule rewrite_module "C:/Interstage/F3FMihs/modules/mod_rewrite.so"
RewriteEngine On
RewriteCond %{ENV:SSL_CLIENT_C} ^JP$
RewriteCond %{ENV:SSL_CLIENT_ST} ^Tokyo$|^Osaka$|^Kyoto$
RewriteRule .* - [L,E=REMOTE_USER:JP-user]
RewriteCond %{ENV:SSL_CLIENT_C} ^US$
RewriteCond %{ENV:SSL_CLIENT_ST} "^California$|^New York$"
RewriteRule .* - [L,E=REMOTE_USER:US-user]
RewriteRule .* - [F]
LoadModule rewrite_module "/opt/FJSVihs/modules/mod_rewrite.so"
RewriteEngine On
RewriteCond %{ENV:SSL_CLIENT_C} ^JP$
RewriteCond %{ENV:SSL_CLIENT_ST} ^Tokyo$|^Osaka$|^Kyoto$
RewriteRule .* - [L,E=REMOTE_USER:JP-user]
RewriteCond %{ENV:SSL_CLIENT_C} ^US$
RewriteCond %{ENV:SSL_CLIENT_ST} "^California$|^New York$"
RewriteRule .* - [L,E=REMOTE_USER:US-user]
RewriteRule .* - [F]
参考
関連ディレクティブ
・ LoadModule
・ RewriteCond
・ RewriteEngine
・ RewriteRule
・ SSLCertExpand
・ SSLNotifyVers