![]() ![]() ![]() ![]() |
WebLogic Security サービスは、X509 証明書チェーンを検索および検証するための証明書検索および検証 (Certificate Lookup and Validation : CLV) API を提供します。
証明書パスは、メモリ内に証明書チェーンを格納する JDK クラスです。「証明書パス」という用語は、証明書チェーンを検索および検証するための JDK アーキテクチャおよびフレームワークを指す場合にも使われます。この CLV フレームワークは、JDK CertPath 機能を拡張および完了します。証明書パス プロバイダは、WebLogic インタフェースと JDK インタフェースの緊密な統合に依存します。
アプリケーション コードでの証明書チェーンの作成および検証には、WebLogic Server に用意されたデフォルトの証明書パス プロバイダか、カスタム証明書パス プロバイダを使用できます。
アプリケーションで証明書パス ビルダを使用するには、次の手順に従います。
CertPathSelector インタフェース (weblogic.security.pk.CertPathSelector
) には、証明書パスを検索して検証するための選択条件が含まれています。証明書パスはさまざまな方法で検索できるため、選択条件ごとに派生クラスが実装されています。
各セレクタ クラスには、選択データおよびコンストラクタを取得するためのメソッドが 1 つまたは複数あります。
CertPathSelector インタフェースを実装する weblogic.security.pk
内のクラスは、次に示すように、サポートされている証明書チェーン検索の種類ごとに 1 つずつあります。
注意 : | サポートされるセレクタは、コンフィグレーション済みの証明書パス プロバイダによって異なります。コンフィグレーション済みの証明書パス プロバイダは管理者が決定します。 WebLogic 証明書パス プロバイダでは、 EndCertificateSelector セレクタのみを使用します。 |
コード リスト 10-1 に、セレクタの選択例を示します。
// 既に目的の証明書があり、
// それを使用して対応するチェーン
// を検索および検証する場合
X509Certificate endCertificate = ...
// 証明書チェーン セレクタを指定
CertPathSelector selector = new EndCertificateSelector(endCertificate);
JDK の CertPathBuilder.build()
メソッドに、CertPathBuilderParameters
のインスタンスを CertPathParameters
オブジェクトとして渡します。
public CertPathBuilderParameters(String realmName,
CertPathSelector selector,
X509Certificate[] trustedCAs,
ContextHandler context)
selector
を指定する必要があります。weblogic.security.pk.CertPathSelector
インタフェースのいずれかの派生クラスを使用します。証明書パスを検索および検証するための選択条件の指定については、「CertPathSelector をインスタンス化する」を参照してください。
コード リスト 10-2 に、CertPathBuilderParameters のインスタンスを渡す例を示します。
// 証明書チェーン セレクタを指定
CertPathSelector selector = new EndCertificateSelector(endCertificate);
String realm = _;
// 必要な場合はコンテキスト ハンドラを作成して値を指定する。不要な場合は null を設定する
ContextHandler context = _;
// 必要な場合は、信頼性のある CA のリストを渡す。不要な場合は null を設定する
X509Certificate[] trustedCAs = _;
// パラメータを指定する
CertPathBuilderParams params =
new CertPathBuilderParameters(realm, selector, context, trustedCAs);
java.security.cert.CertPathBuilder
インタフェースは、CertPathBuilder
クラスの API です。JDK の CertPathBuilder インタフェースを使用するには、次の手順に従います。
CertPathBuilder.getInstance
メソッドを呼び出して、CLV フレームワークの CertPathBuilder を取得します。呼び出しに渡すアルゴリズム名として「WLSCertPathBuilder」を指定する必要があります。weblogic.security.pk.CertPathBuilderParameters
のインスタンスを CertPathParameters オブジェクトとして渡す必要があります。詳細については、「CertPathBuilderParameters をインスタンス化する」を参照してください。import weblogic.security.pk.CertPathBuilderParameters;
import weblogic.security.pk.CertPathSelector;
import weblogic.security.pk.EndCertificateSelector;
import weblogic.security.service.ContextHandler;
import java.security.cert.CertPath;
import java.security.cert.CertPathBuilder;
import java.security.cert.X509Certificate;
// 既に目的の証明書があり、
// それを使用して対応するチェーン
// を検索および検証する場合
X509Certificate endCertificate = ...
// 証明書チェーン セレクタを指定
CertPathSelector selector = new EndCertificateSelector(endCertificate);
String realm = _;
// 必要な場合はコンテキスト ハンドラを作成して値を指定する
ContextHandler context = _;
// 必要な場合は、信頼性のある CA のリストを渡す
X509Certificate[] trustedCAs = _;
// パラメータを指定する
CertPathBuilderParams params =
new CertPathBuilderParameters(realm, selector, context, trustedCAs);
// WLS CertPathBuilder を取得
CertPathBuilder builder =
CertPathBuilder.getInstance(“WLSCertPathBuilder”);
// これを使用してチェーンを検索して検証
CertPath certpath = builder.build(params).getCertPath();
X509Certificate[] chain =
certpath.getCertificates().toArray(new X509Certificate[0]);
アプリケーションで証明書パス検証プロバイダを使用するには、次の手順に従います。
JDK の CertPathValidator.validate()
メソッドに、CertPathValidatorParameters
のインスタンスを CertPathParameters
オブジェクトとして渡します。
public CertPathValidatorParameters(String realmName,
X509Certificate[] trustedCAs,
ContextHandler context)
コード リスト 10-4 に、CertPathValidatorParameters のインスタンスを渡す例を示します。
// WLS CertPathValidator を取得
CertPathValidator validator =
CertPathValidator.getInstance("WLSCertPathValidator");
String realm = _;
// 必要な場合はコンテキスト ハンドラを作成して値を指定する。不要な場合は null を設定する
ContextHandler context = _;
// 必要な場合は、信頼性のある CA のリストを渡す。不要な場合は null を設定する
X509Certificate[] trustedCAs = _;
// (デフォルト セキュリティ レルムの) パラメータを指定する
CertPathValidatorParams params =
new CertPathValidatorParams(realm, context, trustedCAs);
java.security.cert.CertPathValidator
インタフェースは、CertPathValidator
クラスの API です。JDK の CertPathValidator インタフェースを使用するには、次の手順に従います。
CertPathValidator.getInstance
メソッドを呼び出して、CLV フレームワークの CertPathValidator を取得します。呼び出しに渡すアルゴリズム名として「WLSCertPathValidator」を指定する必要があります。CertPathValidator.validate()
メソッドに、weblogic.security.pk.CertPathValidatorParameters
のインスタンスを CertPathParameters オブジェクトとして渡す必要があります。詳細については、「CertPathValidatorParameters をインスタンス化する」を参照してください。CertPathValidator.validate()
メソッドから例外が送出されます。パラメータが WebLogic CertPathValidatorParameters でない場合や、レルム名がサーバ起動時のデフォルト レルムのレルム名と一致しない場合は、InvalidAlgorithmParameterException が送出されます。import weblogic.security.pk.CertPathValidatorParams;
import weblogic.security.service.ContextHandler;
import java.security.cert.CertPath;
import java.security.cert.CertPathValidator;
import java.security.cert.X509Certificate;
// 未検証の X509 証明書チェーンがあり、
// それを検証する場合
X509Certificate[] chain = ...
// チェーンを証明書パスに変換
CertPathFactory factory = CertPathFactory.getInstance("X509");
ArrayList list = new ArrayList(chain.length);
for (int i = 0; i < chain.length; i++) {
list.add(chain[i]);
}
CertPath certPath = factory.generateCertPath(list);
// WLS CertPathValidator を取得
CertPathValidator validator =
CertPathValidator.getInstance("WLSCertPathValidator");
String realm = _;
// 必要な場合はコンテキスト ハンドラを作成して値を指定する。不要な場合は null を設定する
ContextHandler context = _;
// 必要な場合は、信頼性のある CA のリストを渡す。不要な場合は null を設定する
X509Certificate[] trustedCAs = _;
// (デフォルト セキュリティ レルムの) パラメータを指定する
CertPathValidatorParams params =
new CertPathValidatorParams(realm, context, trustedCAs);
// これを使用してチェーンを検証
validator.validate(certPath, params);
![]() ![]() ![]() |