ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発
12cリリース1(12.1.1)
B65927-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

15 証明書パス・プロバイダ

この章では、カスタム・セキュリティ・プロバイダに証明書の検索および検証機能を追加する前に理解しておく必要がある基本情報と、カスタム・セキュリティ・プロバイダに証明書の検索および検証機能を追加する手順について説明します。

WebLogicセキュリティ・サービスは、着信双方向SSL、発信SSL、アプリケーション・コード、およびWebLogic Webサービスについて、X509証明書チェーンを検索および検証するフレームワークを提供します。証明書の検索と検証(CLV)フレームワークは、証明書チェーンを検索および検証する新しいセキュリティ・プラグイン・フレームワークです。このフレームワークは、JDK証明書パス機能を拡張および完了し、カスタム証明書パス・プロバイダを作成できるようにします。

以下の節では、カスタム・セキュリティ・プロバイダに証明書の検索および検証機能を追加する前に理解しておく必要がある基本情報と、カスタム・セキュリティ・プロバイダに証明書の検索および検証機能を追加する手順について説明します。

証明書の検索と検証の概念

証明書パスは、メモリー内に証明書チェーンを格納するJDKクラスです。「証明書パス」という用語は、証明書チェーンを検索および検証するためのJDKアーキテクチャおよびフレームワークを指す場合にも使われます。

証明書パス・プロバイダには、証明書パス検証プロバイダと証明書パス・ビルダーの2種類があります。

WebLogic証明書パス・プロバイダは、JDKとWebLogic証明書パスSPIの両方を使用して作成します。

証明書の検索と検証のプロセス

証明書の検索と検証のプロセスを図15-1に示します。

図15-1 証明書の検索と検証のプロセス

図15-1の説明が続きます
「図15-1 証明書の検索と検証のプロセス」の説明

証明書パス検証プロバイダと証明書パス・ビルダーを実装する必要があるか

証明書パス・プロバイダはいくつかの方法で実装できます。

  • 作成と検証を行う証明書パス・ビルダーを実装できます。この場合は、以下の操作を行います。

    1. 検証プロバイダSPIを実装します。

    2. ビルダーSPIを実装します。

    3. ビルダーSPIの一部として作成する証明書チェーンを検証する必要があります。プロバイダは一度だけ呼び出されます。検証用に改めて呼び出す必要はありません。

    4. 検証アルゴリズムとして何を使用するか、どのセレクタをサポートするか、および信頼性のあるCAを使用するかどうかを指定します。

  • 検証のみを行う証明書パス検証プロバイダを実装できます。この場合は、以下の操作を行います。

    1. 検証プロバイダSPIを実装します。

    2. 検証アルゴリズムとして何を使用するか、および信頼性のあるCAを使用するかどうかを指定します。

  • 作成のみを行う証明書パス・ビルダーを実装できます。この場合は、以下の操作を行います。

    1. ビルダーSPIを実装します。

    2. 作成した証明書チェーンを検証するかどうかを指定します。

    3. どのセレクタをサポートするか、および信頼性のあるCAを使用するかどうかを指定します。

証明書パス・プロバイダSPI MBean

WebLogic Serverには、以下の2種類の証明書パス・プロバイダSPI MBeanがあります。いずれもCertPathProviderMBeanの拡張です。

  • CertPathBuilderMBeanは、プロバイダが証明書チェーンを検索できることを示します。追加の属性またはメソッドはありません。CertPathBuilderプロバイダは、このMBeanを拡張するカスタムMBeanを実装する必要があります。

  • CertPathValidatorMBeanは、プロバイダが証明書チェーンを検証できることを示します。追加の属性またはメソッドはありません。CertPathValidatorプロバイダは、このMBeanを拡張するカスタムMBeanを実装する必要があります。

証明書パス・プロバイダは、その種類によって、MBeanのいずれか1つまたは両方を拡張する必要があります。作成と検証の両方をサポートするセキュリティ・プロバイダは、例15-1で示すように、両方のMBeanを拡張するMBeanを作成する必要があります。

例15-1 サンプル証明書パスMBean MDF

<?xml version="1.0" ?>
<!DOCTYPE MBeanType SYSTEM "commo.dtd">

<MBeanType
Name          = "MyCertPathProvider"
DisplayName   = "MyCertPathProvider"
Package       = "com.acme"
Extends       = "weblogic.management.security.pk.CertPathBuilder"
Implements    = "weblogic.management.security.pk.CertPathValidator"
PersistPolicy = "OnUpdate"
>
<MBeanAttribute
Name          = "ProviderClassName"
Type          = "java.lang.String"
Writeable     = "false"
Default       = "&quot;com.acme.MyCertPathProviderRuntimeImpl&quot;"
/>

<MBeanAttribute
Name          = "Description"
Type          = "java.lang.String"
Writeable     = "false"
Default       = "&quot;My CertPath Provider&quot;"
/>

<MBeanAttribute
Name          = "Version"
Type          = "java.lang.String"
Writeable     = "false"
Default       = "&quot;1.0&quot;"
/>

 <!-- add custom attributes for the configuration data needed by this provider -->
<MBeanAttribute
Name          = "CustomConfigData"
Type          = "java.lang.String"
/>

WebLogic証明書パス検証プロバイダSSPI

WebLogic証明書パス検証プロバイダSSPIは、以下の4つの部分で構成されています。

WebLogic証明書パス・ビルダーSSPI

WebLogic証明書パス・ビルダーSSPIは、以下の4つの部分で構成されています。

WebLogic Server証明書パスSSPIとJDK SPIとの関係

WebLogicセキュリティ・フレームワーク・プロバイダとは異なり、証明書パス・プロバイダの現在の実装は、WebLogicインタフェースおよびJDKインタフェースの緊密な統合に依存します。この統合は、証明書パス・プロバイダを作成する際に最も明らかになります。

証明書パス検証プロバイダを作成する場合は、次のタスクを実行する必要があります。

  1. 「WebLogic MBeanMakerを使用してMBeanタイプを生成する」の説明に従って、CertPathProviderMBeanを拡張するCertPathValidatorMBeanを作成します。

  2. 「JDK CertPathBuilderSpiインタフェース、CertPathValidatorSpiインタフェースのいずれか、または両方の実装」の説明に従って、JDK java.security.cert.CertPathValidatorSpiを実装します。

    JDK実装には、WebLogic CertPathValidatorParametersSpiにキャストできるJDK CertPathParametersオブジェクトが渡されます。これにより、信頼性のあるCAおよびContextHandlerを取得するWebLogicメソッドにアクセスできるようになります。また、このオブジェクトを使用すると、WebLogic証明書パス・プロバイダ・オブジェクトにもアクセスできます。

    信頼性のあるCA、ContextHandler、MBeanで提供されるカスタム構成データへのアクセスを許可する証明書パス・プロバイダSSPI実装など、証明書チェーンの検証に必要なデータを指定するには、「CertPathValidatorSpi実装でCertPathValidatorParametersSpi SSPIの使用」で説明されているようにCertPathValidatorParametersSpiを使用します。

    CertPathValidatorSpi実装からMBeanのカスタム構成データを直接取得する方法はないので、WebLogic証明書パス・プロバイダは重要な役割を果たします。WebLogic証明書パス・プロバイダは、カスタムMBeanデータをJDK実装で使用可能にするための固有のメカニズムを提供できます。

  3. 「証明書パス・プロバイダSSPIの実装」の説明に従って、WebLogic証明書パス・プロバイダSSPIを実装します。特に、MBeanへのフックを実行し、そのカスタム構成データをCertPathValidatorSpi実装で利用できるようにするには、例15-2で示すように、証明書パス・プロバイダSSPIのinitializeメソッドを使用します。

  4. 「JDKセキュリティ・プロバイダSPIの実装」の説明に従って、CertPathValidatorSpi実装を登録するJDKセキュリティproviderを実装します。このコーディングは直感的にはわかりにくいこともあるため、例15-5に実例を示しています。

証明書パス・ビルダーを作成する場合は、次のタスクを実行する必要があります。

  1. 「WebLogic MBeanMakerを使用してMBeanタイプを生成する」の説明に従って、CertPathProviderMBeanを拡張するCertPathBuilderMBeanを作成します。

  2. 「JDK CertPathBuilderSpiインタフェース、CertPathValidatorSpiインタフェースのいずれか、または両方の実装」の説明に従って、JDK java.security.cert.CertPathBuilderSpiを実装します。

    JDK実装には、WebLogic CertPathBuilderParametersSpiにキャストできるJDK CertPathParametersオブジェクトが渡されます。これにより、信頼性のあるCA、セレクタ、およびContextHandlerを取得するWebLogicメソッドにアクセスできるようになります。また、このオブジェクトを使用すると、WebLogic証明書パス・プロバイダ・オブジェクトにもアクセスできます。

    信頼性のあるCA、ContextHandler、MBeanで提供されるカスタム構成データへのアクセスを許可する証明書パス・プロバイダSSPI実装など、証明書チェーンの検証に必要なデータを指定するには、「CertPathBuilderSpi実装でCertPathBuilderParametersSpi SSPIの使用」で説明されているようにCertPathBuilderParametersSpiを使用します。

    CertPathBuilderSpi実装からMBeanのカスタム構成データを直接取得する方法はないので、WebLogic証明書パス・プロバイダは重要な役割を果たします。WebLogic証明書パス・プロバイダは、カスタムMBeanデータをJDK実装で使用可能にするための固有のメカニズムを提供できます。

  3. 「証明書パス・プロバイダSSPIの実装」の説明に従って、WebLogic証明書パス・プロバイダSSPIを実装します。特に、MBeanへのフックを実行し、そのカスタム構成データをCertPathBuilderSpi実装で利用できるようにするには、例15-2で示すように、証明書パス・プロバイダSSPIのinitializeメソッドを使用します。

  4. 「JDKセキュリティ・プロバイダSPIの実装」の説明に従って、CertPathBuilderSpi実装を登録するJDKセキュリティproviderを実装します。このコーディングは直感的にはわかりにくいこともあるため、例15-5に実例を示しています。

カスタム証明書パス・プロバイダを開発する必要があるか

WebLogic Serverには、証明書パス・プロバイダと証明書レジストリがあります。

WebLogic Server証明書パス・プロバイダは、証明書パス・ビルダーと証明書パス検証プロバイダの両方です。証明書パス・プロバイダは、証明書のパスを完了させ、特定のWebLogic Serverインスタンスのために構成された、信頼性のあるCAを使用して、証明書を検証します。証明書パス・プロバイダは、自己署名型のチェーンまたは自己署名型の認証局によって発行されたチェーンのみを作成できます。認証局は、サーバーの信頼性のあるCAにリストされている必要があります。未完成の証明書チェーンの場合は、無効です。プロバイダは、EndCertificateSelectorセレクタのみを使用します。

また、WebLogic Server証明書パス・プロバイダは、チェーン内の署名をチェックして、チェーンが期限切れでないことを確認し、チェーン内のいずれかの証明書が、サーバー用に構成された信頼性のあるCAによって発行されたものであることを確認します。いずれかのチェックが失敗した場合、そのチェーンは有効ではありません。最後に、プロバイダは、各証明書の基本的な制約(証明書が他の証明書を発行できるかどうか)をチェックし、証明書がチェーン内の適切な場所にあることを確認します。

WebLogic Server証明書パス・プロバイダは、セキュリティ・レルム内の証明書パス・ビルダーおよび証明書パス検証プロバイダとして使用できます。

WebLogic Server証明書レジストリは、初期状態の証明書パス・プロバイダです。管理者は、信頼性のある目的の証明書のリストを管理コンソールから構成できます。証明書レジストリはビルダー/検証プロバイダです。選択条件は、EndCertificateSelectorSubjectDNSelectorIssuerDNSerialNumberSelectorSubjectKeyIdentifierのいずれかです。返される証明書チェーンには、目的の証明書のみがあります。プロバイダでは、チェーンを検証する際に目的の証明書が登録されていることのみを確認し、それ以上のチェックは行いません。

証明書パス・プロバイダと証明書レジストリの両方を構成できます。これは、信頼性のあるCAによって署名された場合にのみ証明書チェーンが有効であり、目的の証明書がレジストリにあることを確認するために行うことができます。

WebLogic Server証明書パス・プロバイダが開発者のニーズを満たさない場合、カスタム証明書パス・プロバイダを開発することができます。

カスタム証明書パス・プロバイダの開発方法

WebLogic証明書パス・プロバイダまたは証明書レジストリが開発者のニーズを満たさない場合、次の手順でカスタム証明書パス・プロバイダを開発することができます。

適切なSSPIによるランタイム・クラスの作成

ランタイム・クラスを作成する前に、以下の作業が必要です。

この情報を理解し、設計に関する判断を下したら、次の手順でカスタム証明書パス・プロバイダのランタイム・クラスを作成します。

JDK CertPathBuilderSpiインタフェース、CertPathValidatorSpiインタフェースのいずれか、または両方の実装

java.security.cert.CertPathBuilderSpiインタフェースは、CertPathBuilderクラスのサービス・プロバイダ・インタフェース(SPI)です。すべてのCertPathBuilder実装は、このインタフェース(CertPathBuilderSpi)を実装するクラスを含む必要があります。

java.security.cert.CertPathValidatorSpiインタフェースは、CertPathValidatorクラスのサービス・プロバイダ・インタフェース(SPI)です。すべてのCertPathValidator実装は、このインタフェース(CertPathValidatorSpi)を実装するクラスを含む必要があります。

例15-6では、CertPathBuilderSpiインタフェースとCertPathValidatorSpiインタフェースの実装例を示します。

証明書パス・プロバイダSSPIの実装

CertPathProvider SSPIインタフェースは、JDK CertPathValidator SPIおよびCertPathBuilder SPIによって提供されるサービスを公開し、プロバイダの操作(初期化、開始、停止など)を可能にします。

特に、MBeanへのフックを実行し、そのカスタム構成データをCertPathBuilderSpi実装またはCertPathValidatorSpi実装で利用できるようにするには、例15-2で示すように、証明書パス・プロバイダSSPIのinitializeメソッドを使用します。

より詳細な例については、例15-6に示します。

例15-2 コード(抜粋) : MBeanからのカスタム構成データの取得

public class MyCertPathProviderRuntimeImpl implements CertPathProvider
{
:
:
   public void initialize(ProviderMBean mBean, SecurityServices securityServices)
   {
     MyCertPathProviderMBean myMBean = (MyCertPathProviderMBean)mBean;
     description = myMBean.getDescription();
     customConfigData = myMBean.getCustomConfigData();
:
}
:
   // make my config data available to my JDK CertPathBuilderSpi and    
   // CertPathValidatorSpi impls
   private String getCustomConfigData() { return customConfigData; }
}
:
static public class MyJDKCertPathBuilder extends CertPathBuilderSpi
{
:
//get my runtime implementation instance which holds the configuration
//data needed to build and validate the cert path
MyCertPathProviderRuntimeImpl runtime =
(MyCertPathProviderRuntimeImpl)params.getCertPathProvider();
String myCustomConfigData = runtime.getCustomConfigData();

例15-5では、使用するJDK実装をJDKに登録する方法を示します。

CertPathProvider SSPIを実装するには、「「Provider」SSPIの目的について」で説明されているメソッドおよび次のメソッドの実装を提供する必要があります。

  • getCertPathBuilder

    public CertPathBuilder getCertPathBuilder()
    

    例15-3で示すように、JDK CertPathBuilderSpi実装を呼び出す証明書パス・プロバイダのJDK CertPathBuilderを取得します。CertPathBuilderは、証明書チェーンを検索し、必要に応じて検証します。

例15-3 コード(抜粋) : getCertPathBuilder

public void initialize(ProviderMBean mBean, SecurityServices securityServices)   
{
:
     // get my JDK cert path impls
     try {
       certPathBuilder = CertPathBuilder.getInstance(BUILDER_ALGORITHM);
     } catch (NoSuchAlgorithmException e) { throw new AssertionError("..."); }
  • getCertPathValidator

    public CertPathValidator getCertPathValidator()
    

    例15-4で示すように、JDK CertPathValidatorSpi実装を呼び出す証明書パス・プロバイダのJDK CertPathValidatorを取得します。CertPathValidatorは、証明書チェーンを検証します。

例15-4 コード(抜粋) : getCertPathValidator

public void initialize(ProviderMBean mBean, SecurityServices securityServices)   
{
:
     // get my JDK cert path impls
     try {
       certPathValidator = CertPathValidator.getInstance(VALIDATOR_ALGORITHM);
     } catch (NoSuchAlgorithmException e) { throw new AssertionError("..."); }
   }

JDKセキュリティ・プロバイダSPIの実装

JDKセキュリティprovider SPIを実装し、そのSPIを使用してCertPathBuilderSpi実装またはCertPathValidatorSpi実装をJDKに登録します。その実装を使用して、JDK実装をプロバイダのinitializeメソッドに登録します。

例15-6に、サンプル証明書パス・プロバイダのランタイム・クラスの作成例を示します。例15-5では、JDKセキュリティproviderを実装するサンプル・コードの一部を示します。

例15-5 JDKセキュリティ・プロバイダの実装

public class MyCertPathProviderRuntimeImpl implements CertPathProvider
{
private static final String MY_JDK_SECURITY_PROVIDER_NAME = "MyCertPathProvider";
private static final String BUILDER_ALGORITHM = MY_JDK_SECURITY_PROVIDER_NAME + "CertPathBuilder";
private static final String VALIDATOR_ALGORITHM = MY_JDK_SECURITY_PROVIDER_NAME + "CertPathValidator";
:
:
   public void initialize(ProviderMBean mBean, SecurityServices securityServices)
   {
     MyCertPathProviderMBean myMBean = (MyCertPathProviderMBean)mBean;

     description = myMBean.getDescription();

     customConfigData = myMBean.getCustomConfigData();

// register my cert path impls with the JDK
// so that the CLV framework may invoke them via
// the JDK cert path apis.
if (Security.getProvider(MY_JDK_SECURITY_PROVIDER_NAME) == null) {
   AccessController.doPrivileged(
     new PrivilegedAction() {
       public Object run() {
         Security.addProvider(new MyJDKSecurityProvider());
         return null;
       }
     }
   );
}
:
// This class implements the JDK security provider that registers 
// this provider's cert path builder and cert path validator implementations 
// with the JDK.
private class MyJDKSecurityProvider extends Provider
 {
   private MyJDKSecurityProvider()
    {
      super(MY_JDK_SECURITY_PROVIDER_NAME, 1.0, "MyCertPathProvider JDK CertPath provider");
      put("CertPathBuilder." + BUILDER_ALGORITHM,
 "com.acme.MyPathProviderRuntimeImpl$MyJDKCertPathBuilder");
      put("CertPathValidator." + VALIDATOR_ALGORITHM,
 "com.acme.MyCertPathProviderRuntimeImpl$MyJDKCertPathValidator");
    }
 }
}

CertPathBuilderSpi実装でCertPathBuilderParametersSpi SSPIの使用

JDK実装には、WebLogic CertPathBuilderParametersSpiにキャストできるJDK CertPathParametersオブジェクトが渡されます。これにより、信頼性のあるCA、セレクタ、およびContextHandlerを取得するWebLogicメソッドにアクセスできるようになります。また、このオブジェクトを使用すると、WebLogic証明書パス・プロバイダ・オブジェクトにもアクセスできます。以下のメソッドを利用できます。

  • getCertPathProvider

    CertPathProvider getCertPathProvider() 
    

    証明書パス・プロバイダで提供されているサービスをWebLogicセキュリティ・フレームワークに公開する証明書パス・プロバイダSSPIインタフェースを取得します。特に、MBeanへのフックを実行し、そのカスタム構成データをCertPathBuilderSpi実装で利用できるようにするには、例15-2で示すように、証明書パス・プロバイダSSPIのinitializeメソッドを使用します。

  • getCertPathSelector

    CertPathSelector getCertPathSelector() 
    

    証明書パスを検索する際の選択条件を保持するCertPathSelectorインタフェースを取得します。

    WebLogic Serverでは、サポートされている証明書チェーン検索の種類ごとに1つずつのCertPathSelectorインタフェースを実装するweblogic.security.pk内の一連のクラスを使用できます。そのため、getCertPathSelectorメソッドは、以下の派生クラスのいずれか1つを返します。

  • EndCertificateSelector: 目的の証明書がある証明書チェーンを検索および検証する場合に使用します。

  • IssuerDNSerialNumberSelector: 目的の証明書の発行者DNとシリアル番号から証明書チェーンを検索および検証する場合に使用します。

  • SubjectDNSelector: 目的の証明書のサブジェクトDNから証明書チェーンを検索および検証する場合に使用します。

  • SubjectKeyIdentifierSelector: 目的の証明書のサブジェクト・キー識別子(X509証明書のオプション・フィールド)から証明書チェーンを検索および検証する場合に使用します。

    各セレクタ・クラスには、選択データおよびコンストラクタを取得するためのメソッドが1つまたは複数あります。

    CertPathBuilderSpi実装は、どのセレクタをサポートするかを決めます。CertPathBuilderSpi実装は、CertPathBuilderParametersSpi SSPIのgetCertPathSelectorメソッドを使用して、証明書パスを検索する際の選択条件を保持するCertPathSelectorを取得する必要があります。その種類のセレクタをサポートしている場合、CertPathBuilderSpi実装は、そのセレクタを使用して証明書チェーンを作成および検証します。その種類のセレクタをサポートしていない場合は、呼出し側に伝播されるInvalidAlgorithmParameterExceptionをスローします。

  • getContext()

    ContextHandler getContext() 
    

    証明書パスの作成および検証に使用可能な追加パラメータを渡すことができるContextHandlerを取得します。

  • getTrustedCAs()

    X509Certificate[] getTrustedCAs() 
    

    証明書チェーンの作成に使用できる、信頼性のある認証局のリストを取得します。信頼性のあるCAでチェーンを作成する必要がある場合、CertPathBuilderSpi実装は、このリスト内のCAを使用する必要があります。

  • clone

    Object clone()
    

    このインタフェースのクローンは作成できません。

CertPathValidatorSpi実装でCertPathValidatorParametersSpi SSPIの使用

JDK実装には、WebLogic CertPathValidatorParametersSpiにキャストできるJDK CertPathParametersオブジェクトが渡されます。これにより、信頼性のあるCAおよびContextHandlerを取得するWebLogicメソッドにアクセスできるようになります。また、このオブジェクトを使用すると、WebLogic証明書パス・プロバイダ・オブジェクトにもアクセスできます。CLVフレームワークは、検証プロバイダSPIに渡された証明書チェーンが適切な順序になっている(目的の証明書から開始される)こと、および各証明書が次の証明書に署名していることを確認します。以下のメソッドを利用できます。

  • getCertPathProvider

    CertPathProvider getCertPathProvider() 
    

    証明書パス・プロバイダで提供されているサービスをWebLogicセキュリティ・フレームワークに公開する証明書パス・プロバイダSSPIインタフェースを取得します。特に、MBeanへのフックを実行し、そのカスタム構成データをCertPathValidatorSpi実装で利用できるようにするには、例15-2で示すように、証明書パス・プロバイダSSPIのinitializeメソッドを使用します。

  • getContext()

    ContextHandler getContext() 
    

    証明書パスの作成および検証に使用可能な追加パラメータを渡すことができるContextHandlerを取得します。

    SSLは、1つまたは複数のCertPathValidatorオブジェクトを呼び出して追加検証を実行する前に、一部の組込み検証を実行します。検証プロバイダは、実行済みの検証を検出することで、必要な検証の規模を縮小できます。

    たとえば、WebLogic証明書パス・プロバイダは、SSLが実行するものと同じ検証を実行します。SSLによって呼び出された場合でも、その検証を繰り返す必要はありません。そのため、SSLは、検証プロバイダに渡すコンテキストに一部の情報を保存し、どの検証がすでに実行済みかを示します。weblogic.security.SSL.SSLValidationConstants CHAIN_PREVALIDATED_BY_SSLフィールドは、SSLが証明書チェーンを検証済みかどうかを示すブール値です。アプリケーション・コードは、このフィールドをテストできます。フィールドは、SSLが証明書チェーンを検証済みの場合はtrue、まだ検証していない場合はfalseに設定されます。

  • getTrustedCAs()

    X509Certificate[] getTrustedCAs() 
    

    証明書チェーンの検証に使用できる、信頼性のある認証局のリストを取得します。信頼性のあるCAでチェーンを検証する必要がある場合、CertPathBuilderSpi実装は、このリスト内のCAを使用する必要があります。

  • clone

    Object clone() 
    

    このインタフェースのクローンは作成できません。

ビルダーまたは検証プロバイダの結果の返し

JDK CertPathBuilder実装またはCertPathValidator実装は、java.security.cert.CertPathValidatorResultインタフェースまたはjava.security.cert.CertPathValidatorResultインタフェースを実装するオブジェクトを返す必要があります。

ユーザー独自の結果の実装を作成することも、WebLogic Serverコンビニエンス・ルーチンを使用することもできます。

WebLogic Serverには、WLSCertPathBuilderResultWLSCertPathValidatorResultという2つの便利な結果実装クラスがあります。どちらのクラスもweblogic.security.pkにあり、java.security.cert.CertPathValidatorResultまたはjava.security.cert.CertPathValidatorResultのインスタンスを返す場合に使用できます。


注意:

返される結果は、WebLogicセキュリティ・フレームワーク内を通りません。


例:サンプル証明書パス・プロバイダの作成

例15-6では、証明書パス・ビルダー/検証プロバイダの例を示します。例には、コード・フローを説明する拡張コメントが記載されています。

例15-6で使用する証明書パスMBeanは、例15-1に示されています。

例15-6 サンプル証明書パス・プロバイダの作成

package com.acme;

import weblogic.management.security.ProviderMBean;
import weblogic.security.pk.CertPathSelector;
import weblogic.security.pk.SubjectDNSelector;
import weblogic.security.pk.WLSCertPathBuilderResult;
import weblogic.security.pk.WLSCertPathValidatorResult;
import weblogic.security.service.ContextHandler;
import weblogic.security.spi.CertPathBuilderParametersSpi;
import weblogic.security.spi.CertPathProvider;
import weblogic.security.spi.CertPathValidatorParametersSpi;
import weblogic.security.spi.SecurityServices;
import weblogic.security.SSL.SSLValidationConstants;

import java.security.InvalidAlgorithmParameterException;
import java.security.NoSuchAlgorithmException;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.Provider;
import java.security.Security;
import java.security.cert.CertPath;
import java.security.cert.CertPathBuilder;
import java.security.cert.CertPathBuilderResult;
import java.security.cert.CertPathBuilderSpi;
import java.security.cert.CertPathBuilderException;
import java.security.cert.CertPathParameters;
import java.security.cert.CertPathValidator;
import java.security.cert.CertPathValidatorResult;
import java.security.cert.CertPathValidatorSpi;
import java.security.cert.CertPathValidatorException;
import java.security.cert.X509Certificate;

public class MyCertPathProviderRuntimeImpl implements CertPathProvider
{
   private static final String MY_JDK_SECURITY_PROVIDER_NAME = "MyCertPathProvider";
   private static final String BUILDER_ALGORITHM = MY_JDK_SECURITY_PROVIDER_NAME + "CertPathBuilder";
   private static final String VALIDATOR_ALGORITHM = MY_JDK_SECURITY_PROVIDER_NAME + "CertPathValidator";

   // Used to invoke my JDK cert path builder / validator implementations
   private CertPathBuilder   certPathBuilder;
   private CertPathValidator certPathValidator;

   // remember my custom configuration data from my mbean
   private String customConfigData;

   private String description;

   public void initialize(ProviderMBean mBean, SecurityServices securityServices)
   {
     MyCertPathProviderMBean myMBean = (MyCertPathProviderMBean)mBean;

     description = myMBean.getDescription();

     customConfigData = myMBean.getCustomConfigData();

     // register my cert path impls with the JDK
     // so that the CLV framework may invoke them via
     // the JDK cert path apis.
     if (Security.getProvider(MY_JDK_SECURITY_PROVIDER_NAME) == null) {
       AccessController.doPrivileged(
         new PrivilegedAction() {
           public Object run() {
            Security.addProvider(new MyJDKSecurityProvider());
             return null;
           }
         }
       );
     }

     // get my JDK cert path impls
     try {
       certPathBuilder = CertPathBuilder.getInstance(BUILDER_ALGORITHM);
     } catch (NoSuchAlgorithmException e) { throw new AssertionError("..."); }

     try {
       certPathValidator = CertPathValidator.getInstance(VALIDATOR_ALGORITHM);
     } catch (NoSuchAlgorithmException e) { throw new AssertionError("..."); }
   }

   public void             shutdown          () {                     }
   public String           getDescription       () { return description;    }
   public CertPathBuilder  getCertPathBuilder   () { return certPathBuilder;}
   public CertPathValidator getCertPathValidator () { return certPathValidator;}

   // make my config data available to my JDK CertPathBuilderSpi and    
   // CertPathValidatorSpi impls
   private String getCustomConfigData() { return customConfigData; }

   /**
   * This class contains JDK cert path builder implementation for this provider.
   */

   static public class MyJDKCertPathBuilder extends CertPathBuilderSpi
    {
     public CertPathBuilderResult
      engineBuild(CertPathParameters genericParams)
       throws CertPathBuilderException, InvalidAlgorithmParameterException
     {

   // narrow the CertPathParameters to the WLS ones so we can get the
   // data needed to build and validate the cert path
   if (!(genericParams instanceof CertPathBuilderParametersSpi)) {
     throw new InvalidAlgorithmParameterException("The CertPathParameters must be a
 weblogic.security.pk.CertPathBuilderParametersSpi instance.");
   }

   CertPathBuilderParametersSpi params = (CertPathBuilderParametersSpi)genericParams;

   // get my runtime implementation instance which holds the configuration
   // data needed to build and validate the cert path
   MyCertPathProviderRuntimeImpl runtime = (MyCertPathProviderRuntimeImpl)params.getCertPathProvider();
   String myCustomConfigData = runtime.getCustomConfigData();

   // get the selector which indicates which cert path the caller wants built.
   // it can be an EndCertificateSelector, SubjectDNSelector,    
   // IssuerDNSerialNumberSelector
   // or a SubjectKeyIdentifier.
   CertPathSelector genericSelector = params.getCertPathSelector();

   // decide which kinds of selectors this builder wants to support.

   if (genericSelector instanceof SubjectDNSelector) {

    // get the subject dn of the end certificate of the cert path the caller     
   // wants built
    SubjectDNSelector selector = (SubjectDNSelector)genericSelector;
    String subjectDN = selector.getSubjectDN();

   // if your implementation requires trusted CAs, get them.
   // otherwise, ignore them.  that is, it's a quality of service
   // issue whether or not you require trusted CAs.
   X509Certificate[] trustedCAs = params.getTrustedCAs();

   // if your implementation requires looks for extra data in
   // the context handler, get it.  otherwise ignore it.
   ContextHandler context = params.getContext();
   if (context != null) {
   // ...
   }

   // use my custom configuration data (ie. myCustomConfigData),
   // the trusted CAs (if applicable to my implementation),
   // the context (if applicable to my implementation),
   // and the subject DN to build and validate the cert path
   CertPath certpath = ...
   // or X509Certificate[] chain = ...

   // if not found, throw an exception:
   if (...) {
    throw new CertPathBuilderException("Could not build a cert path for " + subjectDN);
   }

   // if not valid, throw an exception:
   if (...) { 
    throw new CertPathBuilderException("Could not validate the cert path for " + subjectDN);
   }

   // if found and valid, return the cert path.
   // for convenience, use the WLSCertPathBuilderResult class
   return new WLSCertPathBuilderResult(certpath);
   // or return new WLSCertPathBuilderResult(chain);

   } else {

   // the caller passed in a selector that my implementation does not support
   throw new InvalidAlgorithmParameterException("MyCertPathProvider only
   supports weblogoic.security.pk.SubjectDNSelector");
   }
  }
}

   /**
   * This class contains JDK cert path validator implementation for this provider.
   */

   static public class MyJDKCertPathValidator extends CertPathValidatorSpi
   {
     public CertPathValidatorResult
      engineValidate(CertPath certPath, CertPathParameters genericParams)
       throws CertPathValidatorException, InvalidAlgorithmParameterException
     {

   // narrow the CertPathParameters to the WLS ones so we can get the
   // data needed to build and validate the cert path
   if (!(genericParams instanceof CertPathValidatorParametersSpi)) {
     throw new InvalidAlgorithmParameterException("The CertPathParameters must be a
 weblogic.security.pk.CertPathValidatorParametersSpi instance.");
   }

     CertPathValidatorParametersSpi params = (CertPathValidatorParametersSpi)genericParams;


     // get my runtime implementation instance which holds the configuration
     // data needed to build and validate the cert path
     MyCertPathProviderRuntimeImpl runtime = (MyCertPathProviderRuntimeImpl)params.getCertPathProvider();
     String myCustomConfigData = runtime.getCustomConfigData();

     // if your implementation requires trusted CAs, get them.
     // otherwise, ignore them.  that is, it's a quality of service
     // issue whether or not you require trusted CAs.
     X509Certificate[] trustedCAs = params.getTrustedCAs();

     // if your implementation requires looks for extra data in
     // the context handler, get it.  otherwise ignore it.
     ContextHandler context = params.getContext();
     if (context != null) {
       // ...
     }

     // The CLV framework has already done some minimal validation
     // on the cert path before sending it to your provider:
     //   1) the cert path is not empty
     //   2) the cert path starts with the end cert
     //   3) each certificate in the cert path was issued and
     //      signed by the next certificate in the chain
     //      So, your validator can rely on these checks having
     //      already been performed (vs your validator needing to
     //      do these checks too).

   // Use my custom configuration data (ie. myCustomConfigData),
   // the trusted CAs (if applicable to my implementation),
   // and the context (if applicable to my implementation)
   // to validate the cert path

   // if not valid, throw an exception:
   if (...) {
     throw new CertPathValidatorException("Could not validate the cerpath " + certPath);
   }
   // if valid, return success

   // For convenience, use the WLSCertPathValidatorResult class

   return new WLSCertPathValidatorResult();
  }
}

   // This class implements the JDK security provider that registers this    // provider's
   // cert path builder and cert path validator implementations with the JDK.
   private class MyJDKSecurityProvider extends Provider
   {
   private MyJDKSecurityProvider()
   {
     super(MY_JDK_SECURITY_PROVIDER_NAME, 1.0, "MyCertPathProvider JDK CertPath provider");
     put("CertPathBuilder." + BUILDER_ALGORITHM, "com.acme.MyPathProviderRuntimeImpl$MyJDKCertPathBuilder");
     put("CertPathValidator." + VALIDATOR_ALGORITHM, "com.acme.MyCertPathProviderRuntimeImpl$MyJDKCertPathValidator");
   }
  }
}

WebLogic MBeanMakerを使用してMBeanタイプを生成する

カスタム・セキュリティ・プロバイダのMBeanタイプを生成する前に、以下の作業が必要です。

この情報を理解し、設計に関する判断を下したら、次の手順でカスタム証明書パス・プロバイダのMBeanタイプを作成します。

MBean定義ファイル(MDF)の作成

WebLogic MBeanMakerを使用してMBeanタイプを生成する

WebLogic MBeanMakerによるMBean JARファイル(MJF)の作成

WebLogic Server環境にMBeanタイプをインストールする


注意:

複数のセキュリティ・プロバイダのサンプルで、これらの手順の実行方法を示します。

この節で説明する手順はすべて、Windows環境での作業を想定しています。


MBean定義ファイル(MDF)の作成

MBean定義ファイル(MDF)を作成するには、次の手順に従います。

  1. サンプル認証プロバイダのMDFをテキスト・ファイルにコピーします。


    注意:

    サンプル認証プロバイダのMDFは、SimpleSampleAuthenticator.xmlです。サンプル証明書パス・プロバイダはありません。


  2. MDFで<MBeanType>要素と<MBeanAttribute>要素の内容をカスタム証明書パス・プロバイダに合わせて修正します。CertPathBuilderMBeanまたはCertPathValidatorMBeanを拡張または実装する必要があります。

  3. カスタム属性および操作(つまり、<MBeanAttribute>および<MBeanOperation>要素)をMDFに追加します。

  4. ファイルを保存します。


    注意:

    MDF要素の構文についての詳細なリファレンスは、付録A「MBean定義ファイル(MDF)要素の構文」に収められています。


WebLogic MBeanMakerを使用してMBeanタイプを生成する

MDFを作成したら、WebLogic MBeanMakerを使用してそれを実行できます。WebLogic MBeanMakerは現在のところコマンドライン・ユーティリティで、入力としてMDFを受け取り、MBeanインタフェース、MBean実装、関連するMBean情報ファイルなどの中間Javaファイルをいくつか出力します。これらの中間ファイルが合わさって、カスタム・セキュリティ・プロバイダのMBeanタイプになります。

MBeanタイプの生成手順は、カスタム証明書パス・プロバイダの設計に応じて異なります。必要な設計に合わせて適切な手順を実行してください。

オプショナルSSPI MBeanとカスタム操作を追加しない場合

カスタム証明書パス・プロバイダのMDFにオプショナルSSPI MBeanもカスタム操作も実装しない場合、次の手順に従います。

  1. 新しいDOSシェルを作成します。

  2. 次のコマンドを入力します。

    java -DMDF=xmlfile -Dfiles=filesdir -DcreateStubs=true weblogic.management.commo.WebLogicMBeanMaker
    

    ここで、-DMDFフラグはWebLogic MBeanMakerがMDFをコードに変換すべきであることを示し、xmlFileはMDF (XML MBeanの記述ファイル)、filesdirはWebLogic MBeanMakerで作成されたMBeanタイプの中間ファイルが格納される場所を示します。

    xmlfileが入力されるたびに、新しい出力ファイル群が生成されます。

    -DcreateStubs=trueフラグを使用するたびに、既存のMBean実装ファイルがすべて上書きされます。


    注意:

    バージョン9.0以降のWebLogic Serverでは、-DMDFDIR <MDF directory name>オプションを使用して、複数のMDFを格納するディレクトリを指定することができます。旧バージョンのWebLogic Serverでは、WebLogic MBeanMakerで一度に処理されるMDFは1つだけです。したがって、MDF (つまり証明書パス・プロバイダ)が複数ある場合には、このプロセスを繰り返す必要がありました。


  3. 「WebLogic MBeanMakerによるMBean JARファイル(MJF)の作成」に進みます。

オプショナルSSPI MBeanまたはカスタム操作を追加する場合

カスタム証明書パス・プロバイダのMDFにオプショナルSSPI MBeanまたはカスタム操作を実装する場合、以下の質問に答えながら手順を進めてください。

MBeanタイプを作成するのは初めてですか。その場合は、次の手順に従ってください:

  1. 新しいDOSシェルを作成します。

  2. 次のコマンドを入力します。

    java -DMDF=xmlfile -Dfiles=filesdir -DcreateStubs=true weblogic.management.commo.WebLogicMBeanMaker
    

    ここで、-DMDFフラグはWebLogic MBeanMakerがMDFをコードに変換すべきであることを示し、xmlFileはMDF (XML MBeanの記述ファイル)、filesdirはWebLogic MBeanMakerで作成されたMBeanタイプの中間ファイルが格納される場所を示します。

    xmlfileが入力されるたびに、新しい出力ファイル群が生成されます。

    -DcreateStubs=trueフラグを使用するたびに、既存のMBean実装ファイルがすべて上書きされます。


    注意:

    バージョン9.0以降のWebLogic Serverでは、-DMDFDIR <MDF directory name>オプションを使用して、複数のMDFを格納するディレクトリを指定することができます。旧バージョンのWebLogic Serverでは、WebLogic MBeanMakerで一度に処理されるMDFは1つだけです。したがって、MDF (つまり証明書パス・プロバイダ)が複数ある場合には、このプロセスを繰り返す必要がありました。


  3. オプショナルSSPI MBeanをMDFに実装した場合は、次の手順に従います。

    1. MBean実装ファイルを見つけます。

      WebLogic MBeanMakerによって生成されるMBean実装ファイルには、MBeanNameImpl.javaという名前が付けられます。たとえば、SampleIdentityAsserterという名前のMDFの場合、編集されるMBean実装ファイルはSampleIdentityAsserterImpl.javaという名前になります。

    2. MDFで実装したオプショナルSSPI MBeanごとに、各メソッドを実装します。オプショナルSSPI MBeanが継承するメソッドもすべて実装してください。

  4. MDFにカスタム操作を含めた場合、メソッド・スタブを使用してメソッドを実装します。

  5. ファイルを保存します。

  6. 「WebLogic MBeanMakerによるMBean JARファイル(MJF)の作成」に進みます。

既存のMBeanタイプの更新ですか。その場合は、次の手順に従ってください:

  1. WebLogic MBeanMakerによって現在のメソッドの実装が上書きされないように、既存のMBean実装ファイルを一時ディレクトリにコピーします。

  2. 新しいDOSシェルを作成します。

  3. 次のコマンドを入力します。

    java -DMDF=xmlfile -Dfiles=filesdir -DcreateStubs=true weblogic.management.commo.WebLogicMBeanMaker
    

    ここで、-DMDFフラグはWebLogic MBeanMakerがMDFをコードに変換すべきであることを示し、xmlFileはMDF (XML MBeanの記述ファイル)、filesdirはWebLogic MBeanMakerで作成されたMBeanタイプの中間ファイルが格納される場所を示します。

    xmlfileが入力されるたびに、新しい出力ファイル群が生成されます。

    -DcreateStubs=trueフラグを使用するたびに、既存のMBean実装ファイルがすべて上書きされます。


    注意:

    バージョン9.0以降のWebLogic Serverでは、-DMDFDIR <MDF directory name>オプションを使用して、複数のMDFを格納するディレクトリを指定することができます。旧バージョンのWebLogic Serverでは、WebLogic MBeanMakerで一度に処理されるMDFは1つだけです。したがって、MDF (つまり証明書パス・プロバイダ)が複数ある場合には、このプロセスを繰り返す必要がありました。


  4. オプショナルSSPI MBeanをMDFに実装した場合は、次の手順に従います。

    1. MBean実装ファイルを見つけて開きます。

      WebLogic MBeanMakerによって生成されるMBean実装ファイルには、MBeanNameImpl.javaという名前が付けられます。たとえば、SampleIdentityAsserterという名前のMDFの場合、編集されるMBean実装ファイルはSampleIdentityAsserterImpl.javaという名前になります。

    2. ステップ1で一時ディレクトリに保存した既存のMBean実装ファイルを開きます。

    3. 既存のMBean実装ファイルを、WebLogic MBeanMakerによって生成されたMBean実装ファイルと同期させます。

      これには、メソッドの実装を既存のMBean実装ファイルから新しく生成されたMBean実装ファイルにコピー(または、新しく生成されたMBean実装ファイルから既存のMBean実装ファイルに新しいメソッドを追加)し、いずれのMBean実装ファイルにも入っているメソッドのメソッド・シグネチャへの変更が、使用するMBean実装ファイルに反映されていることを確認するといった作業が必要です。

    4. MDFを修正して元のMDFにはないオプショナルSSPI MBeanを実装した場合は、各メソッドを実装します。オプショナルSSPI MBeanが継承するメソッドもすべて実装してください。

  5. MDFを変更して元のMDFにはないカスタム操作を含めた場合、メソッド・スタブを使用してメソッドを実装します。

  6. 完成した、つまりすべてのメソッドを実装したMBean実装ファイルを保存します。

  7. このMBean実装ファイルを、WebLogic MBeanMakerがMBeanタイプの実装ファイルを配置したディレクトリにコピーします。このディレクトリは、手順3でfilesdirとして指定したものです。(ステップ3の結果としてWebLogic MBeanMakerで生成されたMBean実装ファイルがオーバーライドされます)。

  8. 「WebLogic MBeanMakerによるMBean JARファイル(MJF)の作成」に進みます。

生成されるMBeanインタフェース・ファイルについて

MBeanインタフェース・ファイルとは、ランタイム・クラスまたはMBean実装が構成データを取得するために使用するMBeanのクライアント側APIです。「「Provider」SSPIの目的について」で説明されているように、これはinitializeメソッドで使用するのが一般的です。

WebLogic MBeanMakerでは、作成済のMDFからMBeanタイプを生成するので、生成されるMBeanインタフェース・ファイルの名前は、そのMDF名の後に「MBean」というテキストが付いたものになります。たとえば、WebLogic MBeanMakerを使用してSampleIdentityAsserter MDFを実行すると、SampleIdentityAsserterMBean.javaという名前のMBeanインタフェース・ファイルが生成されます。

WebLogic MBeanMakerによるMBean JARファイル(MJF)の作成

WebLogic MBeanMakerでMDFを実行して中間ファイルを作成し、MBean実装ファイルを編集して適切なメソッドの実装を提供したら、カスタムCertPathプロバイダのMBeanファイルとランタイム・クラスをMBean JARファイル(MJF)にパッケージ化する必要があります。このプロセスも、WebLogic MBeanMakerによって自動化されます。

カスタム証明書パス・プロバイダのMJFを作成するには、次の手順に従います。

  1. 新しいDOSシェルを作成します。

  2. 次のコマンドを入力します。

    java -DMJF=jarfile -Dfiles=filesdir weblogic.management.commo.WebLogicMBeanMaker
    

    ここで、-DMJFフラグはWebLogic MBeanMakerが新しいMBeanタイプを含むJARファイルを構築すべきであることを示し、jarfileはMJFの名前、filesdirはWebLogic MBeanMakerでMJFにJAR化する対象ファイルが存在する場所を示します。

    この時点でコンパイルが行われるので、エラーが発生するおそれがあります。jarfileが指定されていて、エラーが発生しなかった場合には、指定された名前のMJFが作成されます。


    注意:

    カスタム・セキュリティ・プロバイダのJARファイルを作成する際には、一連のXMLバインディング・クラスと1つのスキーマも生成されます。そのスキーマに関連付けるネームスペースを選択できます。それにより、使用しているカスタム・クラスとOracleのカスタム・クラスとの競合を防ぐことができます。ネームスペースのデフォルトはvendorです。-targetNameSpace引数をWebLogicMBeanMakerまたは関連するWLMBeanMaker antタスクに渡すことで、このデフォルトを変更できます。

    既存のMJFを更新する場合は、単純にMJFを削除して再生成します。WebLogic MBeanMakerにも -DIncludeSourceオプションがあり、それを指定すると、生成されるMJFにソース・ファイルを含めるかどうかを制御できます。ソース・ファイルには、生成されたソースとMDFそのものがあります。デフォルトはfalseです。このオプションは、-DMJFを使用しない場合には無視されます。


生成されたMJFは、自らのWebLogic Server環境にインストールすることも、顧客に配布してそれぞれのWebLogic Server環境にインストールしてもらうこともできます。

WebLogic Server環境にMBeanタイプをインストールする

MBeanタイプをWebLogic Server環境にインストールするには、MJFをWL_HOME\server\lib\mbeantypesディレクトリにコピーします。ここで、WL_HOMEはWebLogic Serverの最上位のインストール・ディレクトリです。このインストール・コマンドによって、カスタム証明書パス・プロバイダが「デプロイ」されます。つまり、カスタム証明書パス・プロバイダをWebLogic Server管理コンソールから管理できるようになります。


注意:

MBeanタイプをインストールするデフォルトのディレクトリは、WL_HOME\server\lib\mbeantypesです。初めて使用するバージョンが9.0の場合、セキュリティ・プロバイダは...\domaindir\lib\mbeantypesからもロードできます。ただし、サーバーを起動するときに-Dweblogic.alternateTypesDirectory=<dir>コマンドライン・フラグを使用すれば、WebLogic Serverが追加ディレクトリでMBeanタイプを検索します。<dir>は、ディレクトリ名のカンマ区切りのリストです。このフラグを使用する場合、WebLogic Serverは常に最初にWL_HOME\server\lib\mbeantypesからMBeanタイプをロードします。その後で、追加ディレクトリにあるすべての有効なアーカイブを検索して、ロードします。このとき拡張子は考慮されません。

たとえば、-Dweblogic.alternateTypesDirectory = dirX,dirYの場合、WebLogic ServerはまずWL_HOME\server\lib\mbeantypesからMBeanタイプをロードし、次にdirXおよびdirYにある有効なアーカイブをロードします。WebLogic Serverに追加ディレクトリでMBeanタイプを検索するよう指示する際に、Javaセキュリティ・マネージャを使用している場合は、weblogic.policyファイルを更新して、MBeanタイプ(その結果として、カスタム・セキュリティ・プロバイダ)に適した許可を付与することも必要になります。詳細は、『Oracle WebLogic Serverセキュリティのプログラミング』のJavaセキュリティを使用したWebLogicリソースの保護に関する項を参照してください。


カスタム証明書パス・プロバイダを構成することによって(「管理コンソールによるカスタム証明書パス・プロバイダの構成」を参照)、MBeanタイプのインスタンスを作成して、GUI、他のJavaコード、またはAPIからそれらのMBeanインスタンスを使用することができます。たとえば、WebLogic Server管理コンソールを使用して、属性を取得/設定したり操作を呼び出したりすることもできますし、他のJavaオブジェクトを開発して、そのオブジェクトでMBeanをインスタンス化し、それらのMBeanから提供される情報に自動的に応答させることもできます。なお、これらのMBeanインスタンスをバックアップしておくことをお薦めします。

管理コンソールによるカスタム証明書パス・プロバイダの構成

カスタム証明書パス・プロバイダを構成するということは、証明書サービスを必要とするアプリケーションがアクセス可能なセキュリティ・レルムにカスタム証明書パス・プロバイダを追加するということです。

カスタム・セキュリティ・プロバイダの構成は管理タスクですが、カスタム・セキュリティ・プロバイダの開発者が行うこともできます。


注意:

WebLogic Server管理コンソールを使用してカスタム証明書パス・プロバイダを構成する手順は、『Oracle WebLogic Serverの保護』のWebLogicセキュリティ・プロバイダの構成に関する項で説明されています。