Secure Sockets Layer のクライアント証明書の認証
Secure Socket Layer (SSL) プロトコルを使用してサーバーとのセキュア接続を確立するクライアント・ソフトウェアは、開始時に SSL プロトコルまたは Transport Layer Security (TLS) と呼ばれる拡張プロトコルを使用して SSL 証明書との SSL ハンドシェークを実行します。 個人証明書はサーバーまたは特定のクライアントを表すことがあります。個人証明書は、正しく識別されるようにするために認証局 (CA) により署名されます。
SSL により、個人証明書の署名に使用される CA 署名者証明書を管理者が使用できるようになり、この証明書がクライアントまたはサーバー (あるいはこの両方) のトラステッド・ストアに格納されます。 SSL クライアント証明書認証は、接続ハンドシェーク中に SSL 証明書を使用して行われます。
- クライアント認証が実行されるかどうかをサーバー・サイドが判別する必要があります。 Inter-ORB Protocol (IIOP) が使用されている場合は、サーバーの SSL 構成と Common Secure Interoperability バージョン 2 (CSIv2) 構成でクライアント認証を使用可能にする必要があります。
- CSIv2 構成がセキュリティー・ドメインではなくグローバル・セキュリティーで行われる必要があります。
- クライアントの署名者証明書がクライアントの鍵ストアから抽出され、サーバーのトラストストアに追加される必要があります。
- サーバーの署名者証明書がサーバーの鍵ストアから抽出され、クライアントのトラストストアに追加される必要があります。
設定WebSphereクライアント認証用サーバー
クライアント証明書認証は、クライアント・サイドによる証明書の送信がサーバー・サイドから要求される場合に行われます。 あWebSphere® SSL 構成でクライアント証明書認証用にサーバーを構成できます。 この設定はWebSphereクライアントとして動作しているときではなく、サーバーとしてのみ動作しているとき。
- クリック。
- SSL 構成を選択します。
- 「追加プロパティー」の下で、「保護品質 (QoP) 設定」をクリックします。
- クライアント認証で、Required 。
- 「OK」をクリックして、変更を保存します。
-clientAuthentication フラグに true を設定した modifySSLConfig コマンドを使用してクライアント認証を使用可能にすることもできます。 このコマンドについて詳しくは、AdminTask オブジェクトの SSLConfigCommands コマンド・グループについての項目を参照してください。
- クリック。
- RMI/IIOPセキュリティの下で、CSIv2 inbound communications 。
- の中にCSIv2トランスポート層セクションのクライアント証明書認証で、Required 。
- 「OK」をクリックして、変更を保存します。
-clientCertAuth フラグに Required を設定した configureCSIInbound コマンドを使用して CSIv2 のクライアント認証を使用可能にすることもできます。 このコマンドについて詳しくは、AdminTask オブジェクトの SecurityConfigurationCommands コマンド・グループの説明を参照してください。
クライアント・サイドがクライアント認証用にセットアップされている場合、クライアントの署名者証明書をサーバーのトラストストアに追加する必要があります。 証明書ファイルにクライアントの証明書が含まれている場合、この証明書をサーバーのトラストストアに追加できます。
- クリック。
- クライアント認証用に構成されているトラストストアを選択します。
- 「追加プロパティー」の下で、「署名者証明書」を選択します。
- Add をクリックします。
- 「別名」フィールドに、格納する証明書の別名を入力します。
- 「ファイル名」ボックスに、証明書ファイルへの絶対パスを入力します。
- 「OK」をクリックして、変更を保存します。
addSignerCertificate コマンドを使用して、サーバーのトラストストアに署名者を追加することもできます。 このコマンドについて詳しくは、AdminTask オブジェクトの SignerCertificateCommands コマンド・グループの説明を参照してください。
クラスター環境でクライアント認証を使用する場合、クラスターのサーバーが存在する各ノードでクラスター認証を構成する必要があります。
クライアント認証用のクライアント・サイドのセットアップ
クライアント:
管理可能クライアント、シン・クライアント、またはピュア・クライアントでは、鍵ストアに個人証明書が格納されている必要があります。 のWebSphereクライアントのデフォルトキーストアは、 WebSphere Application Serverすでに個人証明書がインストールされています。 この鍵ストアは、ssl.client.props ファイルの com.ibm.ssl.keyStore プロパティーに指定されています。 クライアントのキーストアは、 WebSphere Application Serverなので、キー管理ユーティリティ(iKeyman) または Java™ keytool ユーティリティを使用して、証明書を証明書ファイルに抽出できます。
- iKeyman を開始します。
- 選択する。
- 鍵ストア・ファイルへのパスを入力します。 これは ssl.client.props ファイルから入手できます。
- OK をクリックします。
- 鍵ストアのパスワードを入力して「OK」をクリックします。
- 「個人証明書」でクライアントのデフォルト証明書を選択します。
- 証明書ファイルのパスとファイル名を入力して「OK」をクリックします。
署名者をサーバーのトラストストアに追加するには、抽出された証明書が含まれているファイルを使用できます。 以下の手順に従ってください設定WebSphereクライアント認証用サーバーセクションで、その署名者をサーバーの信頼ストアに追加します。
- SSL を使用可能にします。
com.ibm.CSI.performTransportAssocSSLTLSSupported=true com.ibm.CSI.performTransportAssocSSLTLSRequired=false - メッセージ層でクライアント認証を使用不可にします。
com.ibm.CSI.performClientAuthenticationRequired=false com.ibm.CSI.performClientAuthenticationSupported=false - トランスポート層でクライアント認証を使用可能にします (これはサポートされていますが必須ではありません)。
com.ibm.CSI.performTLClientAuthenticationRequired=false com.ibm.CSI.performTLClientAuthenticationSupported=true
シンクライアントとピュアクライアントは、 WebSphere Application ServerSSLプロパティファイル、ssl.client.props 。 おそらく、Java システム プロパティを使用してクライアント キー ストアと信頼ストアを設定します。 java.net.ssl.trustStore システム・プロパティーに指定されているトラストストアにサーバーの署名者証明書を追加する必要があります。 Keytool または iKeyman を使用して署名者証明書を追加できます。 javax.net.ssl.keyStore システム・プロパティーで指定されている鍵ストアの個人証明書から署名者を抽出し、サーバーのトラストストアに追加する必要があります。
javax.net.ssl.keyStore
javax.net.ssl.keyStorePassword
javax.net.ssl.keyStoreType
javax.net.ssl.trustStore
javax.net.ssl.trustStorePassword
javax.net.ssl.trustStoreTypeクライアントとして動作するサーバー:
クライアントはWebSphereクライアントとして機能するサーバー。 この場合、通信のクライアント・サイドとして使用されている SSL 構成を判別し、その証明書の署名者を抽出してサーバー・サイドのトラストストアに追加してください。 ルート証明書署名者を使用することをお勧めします。
- クリック。
- キーストアの使用法のプルダウンで、Root certificate keystore 。
- DmgrDefaultRootStore (Network Deployment サーバーの場合) または NodeDefaultRootStore (アプリケーション・サーバーの場合) を選択します。
- 追加プロパティで、Personal certificates 。
- デフォルトのルート証明書(通常はroot)をクリックし、Extract 。
- 「証明書ファイル名」ボックスに、証明書を含めるファイルの絶対パスを入力します。
- 「OK」をクリックして保存します。
extractCertificate コマンドを使用してルート証明書を抽出することもできます。 このコマンドについて詳しくは、AdminTask オブジェクトの PersonalCertificateCommands コマンド・グループの説明を参照してください。
作成される証明書ファイルをサーバー・サイドに移動し、サーバーのトラストストアに追加することができます。
サーバーがクライアントとして動作する場合、クライアント・サイド・サーバーには宛先サーバーからの署名者が必要です。 署名者を取得するには、署名者証明書の「ポートから取得」オプションを使用します。
- クリック。
- コレクションからサーバーのトラストストアを選択します。
- 「追加プロパティー」の下の「署名者証明書」を選択します。
- Retrieve from port をクリックします。
- 宛先ホスト名と宛先ポート名を入力します。
- 証明書用の別名を入力します。
- 署名者情報検索をクリックする
- クリックわかりました保存する。
retrieveSignerFromPort コマンドを使用してポートから署名者を取得することもできます。 このコマンドについて詳しくは、AdminTask オブジェクトの SignerCertificateCommands コマンド・グループの説明を参照してください。
クライアント認証用のブラウザーのセットアップ:
いつWebSphere Application Serverクライアント証明書認証が設定されており、ブラウザからサーバーにアクセスしようとする場合、ブラウザにはクライアント証明書認証用の証明書が必要です。 サーバーのデフォルト SSL 構成が変更され、クライアント証明書認証が使用可能になると、管理コンソールにログインできなくなります。
管理コンソールを使用してブラウザーの証明書を作成できます。 最初に鍵ストアを作成してから、チェーン証明書を作成する必要があります。 証明書の作成後に、ご使用のブラウザーの手順に従って証明書をインポートします。 ブラウザーでは、証明書を検証するためにチェーンの各部分が追加される必要があります。このため、ルート証明書を抽出してブラウザーに追加する必要があります。 ルート証明書の抽出については、『クライアント認証用のクライアント・サイドのセットアップ』を参照してください。
- クリック。
- New をクリックします。
- 鍵ストアの名前を入力します。
- 鍵ストア・ファイルへの絶対パスを入力します。
- 鍵ストアのパスワードを入力し、確認します。
- 「OK」をクリックして保存します。
- クリック。
- 前述の手順で作成した鍵ストアを選択します。
- 下追加プロパティ、 クリックPersonal certificates。
- プルダウンリストで作成するボタン、選択Chained Certificate。
- 証明書用の別名を入力します。
- 証明書の共通名を入力します。 この名前は、対象 DN の CN 部分です。
- その他の任意のフィールドに、チェーン証明書の対象 DN を作成するための情報を入力できます。
- 「OK」をクリックして保存します。
createKeyStore コマンドを使用して、鍵ストアを作成することもできます。 このコマンドについて詳しくは、AdminTask オブジェクトの KeyStoreCommands コマンド・グループの説明を参照してください。
createChainedCertificate コマンドを使用して、チェーンされた証明書を作成することもできます。 このコマンドについて詳しくは、AdminTask オブジェクトの PersonalCertificateCommands コマンド・グループの説明を参照してください。
クライアント証明書認証が使用可能になっている場合、Web 証明書認証を実行できます。これについては次のセクションで説明します。
Web 証明書認証
証明書ベースの認証はJava 2プラットフォーム上で実行できます。Enterprise Edition( J2EE ) Web モジュールがクライアント証明書認証用に構成されている場合。 これにより、ユーザーが認証用証明書を使用して Web モジュールにログインし、証明書をレジストリーのユーザーにマップできます。
Web 証明書認証を使用可能にするには、モジュールがインストールされているサーバーでクライアント証明書認証用にサーバーの SSL 構成が構成されている必要があります。
サーバー・サイドにより、クライアント認証が実行されることが判別されます。 を参照してください設定WebSphereクライアント認証用サーバークライアント認証を構成する方法については、セクションを参照してください。 クライアント・サイドが、クライアント・トラストストアに追加するサーバーの署名者を取得している必要があります。 詳しくは、『クライアント認証用のクライアント・サイドのセットアップ』セクションを参照してください。
Web モジュールの web.xml ファイルで、認証メソッドを CLIENT-AUTH に設定しておく必要があります。 この設定は、web.xml ファイルの login-config セクションで行います。
<login-config>
<auth-method>CLIENT-CERT</auth-method>
</login-config>証明書がレジストリー内のユーザーにマップされている必要があります。マップされていない場合、Web モジュールにログインできません。
localOS ユーザー・レジストリーの場合、証明書の対象 DN の CN 値がローカル OS ユーザー・レジストリー内のユーザーにマップされている必要があります。 例えば、証明書の対象 DN が CN=tester,o=ibm,c=us の場合、ローカル・ユーザー・レジストリー内で検索されるユーザーは tester です。 このユーザーがローカル・レジストリー内に存在していない場合は認証が失敗します。
Lightweight Directory Access Protocol (LDAP) ユーザー・レジストリーでは、証明書をユーザー ID にマッピングするためのオプションが前述の場合よりも多くなります。 LDAP のデフォルト証明書マッピング・モードは、LDAP レジストリーの項目と証明書の対象 DN の間の厳密な DN マッチングに使用されます。 例えば証明書 DN が CN=user1,o=ibm,c=us の場合、LDAP レジストリー内に正確に一致する値を持つ項目が存在している必要があります。 LDAP ユーザー・レジストリーには証明書フィルター・オプションもあります。この証明書フィルター・オプションでは、証明書の対象 DN の特定部分と LDAP リポジトリー内の項目のマッチングが行われます。 LDAP 証明書マッピングの詳細については、『Lightweight Directory Access Protocol リポジトリーの構成設定』を参照してください。
統合リポジトリー構成の場合、デフォルトでは、ファイル・ベースのリポジトリーに対するクライアント証明書ログインはサポートされません。 ファイル・ベース・リポジトリー内での証明書マッピングのサポートを有効にするには、『統合リポジトリー・ファイル・ベース・リポジトリーでのクライアント証明書ログインのサポートの有効化』トピックの手順に従います。
統合リポジトリー LDAP レジストリーは証明書マッピングをサポートします。 この場合、LDAP ユーザー・レジストリーが使用するものと同じマッピング・ルールとプロパティーが使用されます。
カスタム・ユーザー・レジストリーでは、mapCertificate() メソッドが実装されている場合に証明書をユーザーにマップできます。