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 サーバーの構成
クライアント証明書認証は、クライアント・サイドによる証明書の送信がサーバー・サイドから要求される場合に行われます。 SSL 構成で、Websphere サーバーをクライアント証明書認証用に構成できます。ただし、IIOP でクライアント認証が必要な場合は、CSIv2 構成でクライアント認証を構成する必要があります。
- とクリックします。
- SSL 構成を選択します。
- 「追加プロパティー」の下で、「保護品質 (QoP) 設定」をクリックします。
- 「クライアント認証」で「必要」を選択します。
- 「OK」をクリックして、変更を保存します。
- とクリックします。
- 「RMI/IIOP セキュリティー」の下の「CSIv2 インバウンド通信」を選択します。
- 「CSIv2 トランスポート・レイヤー」セクションの「クライアント証明書認証」で「必要」を選択します。
- 「OK」をクリックして、変更を保存します。
クライアント・サイドがクライアント認証用にセットアップされている場合、クライアントの署名者証明書をサーバーのトラストストアに追加する必要があります。証明書ファイルにクライアントの証明書が含まれている場合、この証明書をサーバーのトラストストアに追加できます。
- とクリックします。
- クライアント認証用に構成されているトラストストアを選択します。
- 「追加プロパティー」の下で、「署名者証明書」を選択します。
- 「追加」をクリックします。
- 「別名」フィールドに、格納する証明書の別名を入力します。
- 「ファイル名」ボックスに、証明書ファイルへの絶対パスを入力します。
- 「OK」をクリックして、変更を保存します。
クライアント認証用のクライアント・サイドのセットアップ
クライアント:
管理可能クライアント、シン・クライアント、またはピュア・クライアントでは、鍵ストアに個人証明書が格納されている必要があります。WebSphere® Application Server のインストール時に作成される WebSphere クライアントのデフォルト鍵ストアには、既に個人証明書が格納されています。この鍵ストアは、ssl.client.props ファイルの com.ibm.ssl.keyStore プロパティーに指定されています。 クライアント鍵ストアは WebSphere Application Server により管理されないため、証明書を証明書ファイルに抽出するには、Key Management ユーティリティー (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 Server SSL プロパティー・ファイル ssl.client.props が使用されないことがあります。これらのクライアントでは通常、Java システム・プロパティーを使用してクライアントの鍵ストアとトラストストアを設定します。java.net.ssl.trustStore システム・プロパティーに指定されているトラストストアにサーバーの署名者証明書を追加する必要があります。Keytool または iKeyman を使用して署名者証明書を追加できます。javax.net.ssl.keyStore システム・プロパティーで指定されている鍵ストアの個人証明書から署名者を抽出し、サーバーのトラストストアに追加する必要があります。
javax.net.ssl.keyStorejavax.net.ssl.keyStorePasswordjavax.net.ssl.keyStoreTypejavax.net.ssl.trustStorejavax.net.ssl.trustStorePasswordjavax.net.ssl.trustStoreType
クライアントとして動作するサーバー:
クライアントが、クライアントとして動作する WebSphere サーバーであることがあります。この場合、通信のクライアント・サイドとして使用されている SSL 構成を判別し、その証明書の署名者を抽出してサーバー・サイドのトラストストアに追加してください。ルート証明書署名者を使用することをお勧めします。
- 「セキュリティー」>「SSL 証明書および鍵管理」>「鍵ストアおよび証明書」とクリックします。
- 「鍵ストアの使用法」プルダウンの「ルート証明書鍵ストア」を選択します。
- DmgrDefaultRootStore (Network Deployment サーバーの場合) または NodeDefaultRootStore (アプリケーション・サーバーの場合) を選択します。
- 「追加プロパティー」の下の「個人証明書」を選択します。
- デフォルトのルート証明書 (通常 root と呼ばれます) を選択して「抽出」をクリックします。
- 「証明書ファイル名」ボックスに、証明書を含めるファイルの絶対パスを入力します。
- 「OK」をクリックして保存します。
作成される証明書ファイルをサーバー・サイドに移動し、サーバーのトラストストアに追加することができます。
サーバーがクライアントとして動作する場合、クライアント・サイド・サーバーには宛先サーバーからの署名者が必要です。署名者を取得するには、署名者証明書の「ポートから取得」オプションを使用します。
- とクリックします。
- コレクションからサーバーのトラストストアを選択します。
- 「追加プロパティー」の下で、「署名者証明書」を選択します。
- 「ポートから取得」をクリックします。
- 宛先ホスト名と宛先ポート名を入力します。
- 証明書用の別名を入力します。
- 「署名者情報の取得」をクリックします。
- 「OK」をクリックして保存します。
retrieveSignerFromPort コマンドを使用してポートから署名者を取得することもできます。このコマンドについて詳しくは、AdminTask オブジェクトの SignerCertificateCommands コマンド・グループの説明を参照してください。
クライアント認証用のブラウザーのセットアップ:
WebSphere Application Server がクライアント証明書認証用に構成されている場合に、ブラウザーからこのサーバーにアクセスするには、ブラウザーにクライアント証明書認証のための証明書が含まれている必要があります。サーバーのデフォルト SSL 構成が変更され、クライアント証明書認証が使用可能になると、管理コンソールにログインできなくなります。
管理コンソールを使用してブラウザーの証明書を作成できます。最初に鍵ストアを作成してから、チェーン証明書を作成する必要があります。証明書の作成後に、ご使用のブラウザーの手順に従って証明書をインポートします。ブラウザーでは、証明書を検証するためにチェーンの各部分が追加される必要があります。このため、ルート証明書を抽出してブラウザーに追加する必要があります。ルート証明書の抽出については、『クライアント認証用のクライアント・サイドのセットアップ』を参照してください。
- とクリックします。
- 「新規」をクリックします。
- 鍵ストアの名前を入力します。
- 鍵ストア・ファイルへの絶対パスを入力します。
- 鍵ストアのパスワードを入力し、確認します。
- 「OK」をクリックして保存します。
- とクリックします。
- 前述の手順で作成した鍵ストアを選択します。
- 「追加プロパティー」の下の「個人証明書」をクリックします。
- 「作成」ボタンのプルダウン・リストから「チェーン証明書」を選択します。
- 証明書用の別名を入力します。
- 証明書の共通名を入力します。これは、対象 DN の「CN=」部分です。
- その他の任意のフィールドに、チェーン証明書の対象 DN を作成するための情報を入力できます。
- 「OK」をクリックして保存します。
createKeyStore コマンドを使用して、鍵ストアを作成することもできます。このコマンドについて詳しくは、AdminTask オブジェクトの KeyStoreCommands コマンド・グループの説明を参照してください。
createChainedCertificate コマンドを使用して、チェーンされた証明書を作成することもできます。 このコマンドについて詳しくは、AdminTask オブジェクトの PersonalCertificateCommands コマンド・グループの説明を参照してください。
Web 証明書認証
Java 2 Platform, Enterprise Edition (J2EE) Web モジュールがクライアント証明書認証用に構成されている場合、証明書ベースの認証をこのモジュールで実行できます。これにより、ユーザーが認証用証明書を使用して Web モジュールにログインし、証明書をレジストリーのユーザーにマップできます。
Web 証明書認証を使用可能にするには、モジュールがインストールされているサーバーでクライアント証明書認証用にサーバーの SSL 構成が構成されている必要があります。
サーバー・サイドにより、クライアント認証が実行されることが判別されます。クライアント認証の構成方法については、『クライアント認証用の WebSphere サーバーの構成』セクションを参照してください。クライアント・サイドが、クライアント・トラストストアに追加するサーバーの署名者を取得している必要があります。詳しくは、『クライアント認証用のクライアント・サイドのセットアップ』セクションを参照してください。
Web モジュールの web.xml ファイルの login-config セクションで、認証方式が CLIENT-AUTH に設定されている必要があります。
<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() メソッドが実装されている場合に証明書をユーザーにマップできます。