トラスト・マネージャーによる X.509 証明書の信頼についての決定の制御
トラスト・マネージャーのロールは、ピアによって送信される Secure Sockets Layer (SSL) 証明書の検証 です。これには、証明書の署名の検証と有効期限の検査があります。 Java™ Secure Socket Extension (JSSE) トラスト・マネージャーは、リモート・ピアが信頼できるかどうかを SSL ハンドシェーク中に判別します。
WebSphere® Application Server には、SSL 接続中に複数のトラスト・マネージャーを呼び出す機能が備わっています。 デフォルトのトラスト・マネージャーは、標準的な証明書の検証を行います。カスタム・トラスト・マネージャー・ プラグインは、ホスト名の検証などのカスタマイズした検証を実行します。 詳しくは、例: カスタム SSL トラスト決定用のカスタム・トラスト・マネージャーの作成を参照してください。
トラスト・マネージャーをサーバー・サイドの SSL 構成内に構成する場合、 このサーバーは isClientTrusted メソッドを呼び出します。 トラスト・マネージャーをクライアント・サイドの SSL 構成内に構成する場合、 このクライアントは isServerTrusted メソッドを呼び出します。 ピア証明書チェーンは、これらのメソッドに渡されます。トラスト・マネージャーがピア情報を信頼しないと選択した場合は、例外を作成してハンドシェークを強制的に失敗させる場合があります。
オプションで、WebSphere Application Server は、追加情報をトラスト・マネージャーに渡すことができるように、 com.ibm.wsspi.ssl.TrustManagerExtendedInfo インターフェースを提供しています。詳しくは、com.ibm.wsspi.ssl.TrustManagerExtendedInfo インターフェースを参照してください。
デフォルトの IbmX509 トラスト・マネージャー
<trustManagers xmi:id="TrustManager_1132357815717" name="IbmX509" provider="IBMJSSE2"
algorithm="IbmX509" managementScope="ManagementScope_1132357815717"/>
トラスト・マネージャーは
署名者証明書を提供して、ハンドシェーク中に送信されるピア証明書を検証します。
SSL 構成のトラストストアに追加された署名者は、信頼できるものである必要があります。
署名者を信頼しないか、他人に自分のサーバーへの接続を許可したくない場合は、証明局 (CA) からデフォルトのルー
ト証明書を除去することを検討してください。また、発信元を確認できない証明書がある場合は、
これを除去することもできます。デフォルトの IbmPKIX トラスト・マネージャー
デフォルトの IbmPKIX トラスト・マネージャーを使用して、次のコード・サンプルで示される IbmX509 トラスト・マネージャーを置き換えることができます。<trustManagers xmi:id="TrustManager_1132357815719" name="IbmPKIX" provider="IBMJSSE2"
algorithm="IbmPKIX" trustManagerClass="" managementScope="ManagementScope_1132357815717">
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_1132357815717"
name="com.ibm.security.enableCRLDP" value="true" type="boolean"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_1132357815718"
name="com.ibm.jsse2.checkRevocation" value="true" type="boolean"/>
</trustManagers>
<trustManagers xmi:id="TrustManager_managementNode_2" name="IbmPKIX" provider=
"IBMJSSE2" algorithm="IbmPKIX" trustManagerClass=""
managementScope="ManagementScope_managementNode_1">
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_1" name="com.ibm.se
curity.enableCRLDP" value="false" type="boolean" displayNameKey="" nlsRangeKey="
" hoverHelpKey="" range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_2" name="com.ibm.js
se2.checkRevocation" value="false" type="boolean" displayNameKey="" nlsRangeKey=
"" hoverHelpKey="" range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_3" name="ocsp.enabl
e" value="false" type="String" displayNameKey="" nlsRangeKey="" hoverHelpKey=""
range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_4" name="ocsp.respo
nderURL" value="http://ocsp.example.net:80" type="String" displayNameKey=""
nlsRangeKey="" hoverHelpKey="" range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_5" name="ocsp.respo
nderCertSubjectName" value="" type="String" displayNameKey="" nlsRangeKey="" hov
erHelpKey="" range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_6" name="ocsp.respo
nderCertIssuerName" value="" type="String" displayNameKey="" nlsRangeKey="" hove
rHelpKey="" range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_7" name="ocsp.respo
nderCertSerialNumber" value="" type="String" displayNameKey="" nlsRangeKey="" ho
verHelpKey="" range="" inclusive="false" firstClass="false"/>
</trustManagers>
デフォルトの IbmPKIX トラスト・マネージャーの使用について詳しくは、例: デフォルトの IbmPKIX トラスト・マネージャーを使用した証明書の失効検査の有効化を参照してください。
標準的な証明書の検証というロールに加え、 IbmPKIX トラスト・マネージャーは、OCSP プロパティーがあるかどうか、および証明書失効リスト (CRL) 配布ポイントを含む証明書があるかどうかを検査します。このプロセスは、 拡張 CRL 検査 と呼ばれます。トラスト・マネージャーを選択する場 合、CRL 検査が使用可能になっていることを IBMCertPath および IBMJSSE2 プロバイダーが認識するように、関連付けられたプロパティーが Java システム・プロパティーとして 自動的に設定されます。
Ibmx509 トラスト・マネージャーと IbmPKIX トラスト・マネージャーの相違点
- IbmX509 トラスト・マネージャーは、クライアント/サーバーが信頼する証明書に関係なく、全体の証明書チェーンを検証します。 しかし、IbmPKIX トラスト・マネージャーは、たとえ、ユーザーが信頼したい証明書を IbmPKIX トラスト・マネージャーに指定したとしても、その証明書の検証を行いません。 IbmPKIX トラスト・マネージャーは、信頼する証明書によって署名されたものから、リーフ証明書までの証明書の検証のみをします。 さらに、
- IbmX509 では、すべてのルート CA 証明書に BASIC CONSTRAINTS 拡張が含まれている必要があります。 そうでないと、証明書をルート CA 証明書として使用することができません。 IbmPKIX には、ルート CA 証明書のために、この BASIC CONSTRAINTS 要件はありません。
- IbmX509 トラスト・マネージャーは、署名の妥当性検査と証明書の有効期限検査を実行して、証明書を検証します。 . IbmPKIX トラスト・マネージャーは、これらの同じ妥当性検査に加えて、さらに詳細な証明書失効リスト (CRL) 検査を行って、 認証局 (CA) が証明書を取り消しているかどうかを判断します。
- IbmPKIX トラスト・マネージャーは、証明書の受信時に、CRL 配布ポイント (DP) の拡張がある場合は CRL を自動取得します。
さらに、Online Certificate Status Protocol (OCSP) を使用して、証明書の妥当性についてオンライン検査を行うこともできます。 ただし、この機能を使用するには、「Java Certification Path API Programmer's Guide」に記載されているように追加のシステム・プロパティーの設定が必要です。この資料は、IBM® developerWorks® Web サイトで入手可能です。
カスタム・トラスト・マネージャー
カスタム・トラスト・マネージャーを定義して、追加の信頼関連の検査 を実行できます。この検査は、環境の必要に基づいて行います。 例えば、ある環境で、同じ Transmission Control Protocol (TCP) サブネットのみから接続を使用可能にする場合があります。com.ibm.wsspi.ssl.TrustManagerExtendedInfo インターフェースは、標準的な Java Secure Sockets Extension (JSSE) である javax.net.ssl.X509TrustManager インターフェースでは提供されない、接続についての拡張情報を提供します。 構成済みの trustManagerClass 属性によって、 どのクラスがランタイムによってインスタンス化されるかを判別します。 次のサンプル・コードを参考にしてください。<trustManagers xmi:id="TrustManager_1132357815718" name="CustomTrustManager"
trustManagerClass="com.ibm.ws.ssl.core.CustomTrustManager"
managementScope="ManagementScope_1132357815717"/>
trustManagerClass
属性は javax.net.ssl.X509TrustManager インターフェースを実装する必要があり、オプションで
com.ibm.wsspi.ssl.TrustManagerExtendedInfo インターフェースを実装できます。デフォルト・トラスト・マネージャーの使用不可化
場合によっては、IbmX509 および IbmPKIX デフォルト・トラス ト・マネージャーが提供する、標準的な証明書の検証を実行したくないことがあります。例えば、SSL クライアントまたはサーバー認証、保全性、または機密性が 関係しない内部的な自動化テスト・インフラストラクチャーを操作する場合などです。 次のサンプル・コードでは、プロパティーを true に設定した、基本的なカスタム・トラスト・マネージャー (com.ibm.ws.ssl.core.CustomTrustManager など) を示します。com.ibm.ssl.skipDefaultTrustManagerWhenCustomDefined=true
このプロパティーは、クライアントの ssl.client.props ファイル、またはサーバーの security.xml カスタム・プロパティー・ファイルの最上位にある、グローバル・プロパティーで設定できます。
デフォルトのトラスト・マネージャーを使用不可にする場合は、構成済みであってもデフォルトのトラスト・マネージャーをサーバーが呼び出すのを防ぐために、カスタム・トラスト・マネージャーを構成する必要があります。
デフォルトのトラスト・マネージャーを使用不可にすることは、一般的なやり方ではありません。
テスト環境ではまず、必ずデフォルトのトラスト・マネージャーを使用不可にしたシステムをテストしてください。
カスタム・トラスト・マネージャーのセットアップについて詳しくは、SSL 用のカスタム・トラスト・マネージャー構成の作成を参照してください。