5 セキュリティの構成

この章では、プラグインに関するセキュリティの使用方法について説明します。内容は次のとおりです。

プラグインでのSSLの使用

Secure Sockets Layer (SSL)プロトコルを使用することで、プラグインとOracle WebLogic Serverとの間の接続を保護できます。SSLプロトコルによって、プラグインとWebLogic Serverとの間で渡されるデータの機密性と整合性が保持されます。

プラグインでは、プラグインとWebLogic Serverとの間の接続の保護にSSLを使用するかどうかの決定に、HTTPリクエストで指定された(通常はブラウザによって指定)トランスポート・プロトコル(HTTPまたはHTTPS)を使用しません。つまり、プラグインは、(通常はブラウザからの)HTTPリクエストでHTTPS (SSL)が使用されるかどうかには一切依存しません。

かわりに、プラグインでは、「Webサーバー・プラグインのSSLパラメータ」で説明されているように、SSLをいつ使用をするかを決定するため、プラグインに対して次のように構成したSSLパラメータを使用します。

  • WebLogicSSLVersion—プラグインとWebLogic Serverの間の通信に使用するSSLプロトコル・バージョンを指定します。

  • WLSSLWallet - バージョン12c (12.2.1.4.0)のプラグインでは、SSL構成情報の格納にOracleウォレットが使用されます。ウォレットを構成するには、SSL構成パラメータWLSSLWalletを使用します。この目的のために、プラグインのディストリビューション内にorapkiユーティリティが用意されています。

    orapkiユーティリティでは、ウォレット、証明書失効リストなど、公開キー・インフラストラクチャ(PKI)の要素をコマンド行で管理するため、実行するタスクをスクリプトに組み込むことができます。これを使用して、PKIを保守するルーチン・タスクの多くを自動化できます。「証明書の検証とCRL管理にorapkiユーティリティを使用する方法」を参照してください。

  • SecureProxy-SecureProxyパラメータによって、SSLを有効にするかどうかを決定します。

ノート:

現在のリリースに有効なセキュリティ・プロトコルおよび暗号の詳細は、『Oracle HTTP Serverの管理』SSLCipherSuiteに関する項およびSSLProtocolに関する項を参照してください。

双方向SSLについては、Oracle WebLogic Serverが双方向SSLを使用するように構成されている場合にクライアント証明書をリクエストすると、プラグイン(SSLクライアント)によって自動的に双方向SSLが使用されます。

クライアント証明書がリクエストされない場合は、デフォルトでプラグインは一方向SSLになります。

ノート:

Apacheプラグイン(Oracle HTTP Serverを含む)と同じシステム上にOracle Fusion Middleware 12c (12.2.1.4.0)製品がインストールされている場合は、ORACLE_HOME変数が有効なインストール環境を指している必要があり、そうでない場合は、プラグインによるSSLの初期化が失敗します。

たとえば、製品が正常に削除されなかったためにORACLE_HOMEが無効になっている場合、プラグインによるSSLの初期化は失敗します。

この項の内容は次のとおりです。

SSL用のライブラリの構成

プラグインでは、SSLをサポートするためにOracleライブラリ(NZ)が使用されます。ライブラリはサイズが大きいため、SSLの使用が必要な場合のみロードされます。lib/*.so*にあるライブラリ・ファイルは、必ず、プラグインによる動的なロードが可能な適切な場所に配置する必要があります。

Apache HTTPサーバー用プラグインのライブラリを構成するには、次のような方法があります。

  • Windows: .dllファイルを含むlibディレクトリをPATH変数で指定するか、*.dllファイルをbinディレクトリにコピーします。

  • UNIX: ライブラリを含むフォルダを指すようLD_LIBRARY_PATHを設定するか、ライブラリをlibディレクトリにコピーします。

PATH変数(Windows)またはLD_LIBRARY_PATH 変数(UNIX)を更新するのではなく、ライブラリをコピーした場合は、新しいバージョンのプラグインをインストールするたびにライブラリをコピーしなおす必要があります。

一方向SSL用のプラグインの構成

一方向SSLを構成するには、次のステップに従ってください。

このステップでは、WebLogic Serverがインストールされているシステム上でkeytoolコマンドを実行し、バージョン12c (12.2.1.4.0)のプラグインがインストールされているシステム上でorapkiコマンドを実行します。

ノート:

この項で示す例には、WebLogic ServerのデモCAが使用されています。本番環境でプラグインを使用している場合は、プラグインおよびOracle WebLogic Serverに対して、信頼性のあるCAが正しく構成されていることを確認してください。

  1. SSL用にOracle WebLogic Serverを構成します。『Oracle WebLogic Serverセキュリティの管理』SSLの構成に関する項を参照してください。

  2. orapkiユーティリティを使用してOracleウォレットを作成します。

    orapki wallet create -wallet mywallet -auto_login_only
    

    『Oracle Fusion Middlewareの管理』orapkiユーティリティを使用した証明書検証およびCRL管理に関する項を参照してください。

    ノート:

    ウォレットにアクセスできるのは、そのウォレットを作成したユーザーのみです(Windowsの場合はSYSTEMアカウント)。

    通常、WindowsではSYSTEMアカウント、UNIXではウォレットの作成ユーザーとして実行されるため、Apache HTTP Server用Oracle WebLogic Serverプロキシ・プラグインについてはこれで十分です。ただしIISの場合は、デフォルト・ユーザーがIUSR_<Machine_Name> (IIS6.0以下)またはIUSR (IIS7.0以上)であるため、ウォレットは機能しません。

    Apache HTTP Server用Oracle WebLogic Serverプロキシ・プラグインまたはMicrosoft IIS Web Server用Oracle WebLogic Serverプロキシ・プラグイン12c (12.2.1.4.0)を実行するユーザーが、ウォレットを作成するユーザー(Windowsの場合はSYSTEMアカウント)と異なる場合には、ウォレットの作成後にcaclsコマンド(Windows)またはchmodコマンド(UNIX)を実行してユーザーにそのウォレットへのアクセス権を付与する必要があります。次にその例を示します。

    cacls <wallet_path>\cwallet.sso /e /g IUSR:R

  3. OracleウォレットにWLS信頼証明書をインポートします。

    orapki wallet add -wallet mywallet -trusted_cert -cert <cert_file_name> -auto_login_only
    
  4. Webサーバーの構成ファイルを次のように構成します。

    • Oracle HTTP Serverの場合、mod_wl_ohs.confファイルを次のように編集します。

      <IfModule mod_weblogic.c>
       WebLogicHost host
       WebLogicPort port
       SecureProxy ON
       WLSSLWallet path_to_wallet
      </IfModule>
      
    • Microsoft IISの場合は、次のようにiisproxy.iniファイルを編集します。

       WebLogicHost=host
       WebLogicPort=port
       SecureProxy=ON
       WLSSLWallet=path_to_wallet
      

    これらの例で使用されているパラメータの詳細は、「Webサーバー・プラグインのパラメータ」を参照してください。

  5. バックエンドのOracle WebLogic Serverインスタンスのバージョンが10.3.4以降の場合は、次のステップに従ってください。

    1. Oracle WebLogic Server管理コンソールにログインします。

    2. 「ドメイン構造」ペインで、「環境」ノードを開きます。

      • Oracle HTTP Serverからリクエストをプロキシするサーバー・インスタンスがクラスタにある場合は、「クラスタ」を選択します。

      • それ以外の場合は、「サーバー」を選択します。

    3. Oracle HTTP Serverからリクエストをプロキシするサーバーまたはクラスタを選択します。

    4. 「構成」: 「一般」タブで、「詳細」セクションまでスクロール・ダウンして開きます。

    5. 次のいずれかの操作を行います。

      目的 選択オプション

      一方向SSLの有効化

      WebLogicプラグインの有効化

      認証にクライアント証明書が使用される双方向SSLの有効化

      クライアント証明書プロキシの有効化

      クライアント証明書による双方向SSLの有効化

      両方

    6. ステップ2「サーバー」を選択した場合は、Oracle HTTP Serverからのリクエストをプロキシするその他のサーバーに対してステップ3ステップ4を繰り返します。

    7. 「保存」をクリックします。

    変更内容を有効にするには、サーバー・インスタンスを再起動する必要があります。

  6. ブラウザからhttp://host:port/mywebapp/my.jspにリクエストを送信し、レスポンスを確認します。

プラグインとOracle WebLogic Serverとの間の双方向SSLの構成

Oracle WebLogic Serverを双方向SSL用に構成してある場合は、プラグインによってユーザー証明書がWebLogic Serverに転送されます。WebLogic Serverがユーザー証明書を確認できれば、双方向SSLを確立できます。

「一方向SSL用のプラグインの構成」で説明されているステップに加えて、次のステップも実行してください。

このステップでは、WebLogic Serverがインストールされているシステム上でkeytoolコマンドを実行します。また、バージョン12c (12.2.1.4.0)プラグインがインストールされているシステム上でorapkiコマンドを実行します。

  1. Oracleウォレットから証明書リクエストを生成します。
  2. この証明書リクエストを使用し、CAまたはその他のメカニズムを使用して証明書を作成します。
  3. ユーザー証明書を、信頼性のある証明書としてWebLogic信頼ストアにインポートします。Oracle WebLogic Serverで、その証明書を信頼する必要があります。
    keytool -file user.crt -importcert -trustcacerts -keystore DemoTrust.jks -storepass <passphrase>
    
  4. クライアント証明書(双方向SSL用)の提示が必要となるWebLogic Server SSL構成オプションを設定します。Oracle WebLogic Server管理コンソール・オンライン・ヘルプ双方向SSLの構成に関する項を参照してください。

MD5アルゴリズムを使用して署名された証明書の置換

SSLを使用してWebLogic Serverに接続する場合、MD5を使用して署名された証明書リクエストまたは証明書がウォレット内のSHA-2で署名された証明書で置換されていることを確認します。これ以外の場合、サーバーは起動に失敗します。

証明書の署名アルゴリズムの確認

証明書の署名アルゴリズムを確認するには:

  1. 証明書を識別名で検索するには、次のコマンドを使用します

    ${PLUGIN_HOME}/bin/orapki wallet display -wallet <wallet__location>

  2. ウォレットで使用可能な証明書をエクスポートします

    ${PLUGIN_HOME}/bin/orapki  wallet export -wallet <wallet_Location> -dn 'DN_string' -cert <certificate_file>

  3. keytoolを使用して、<certificate_file>を署名する際に使用する署名アルゴリズムを確認します

    $JAVA_HOME/bin/keytool -printcert -file <certificate_file>

MD5アルゴリズムを使用して署名された証明書リクエストまたは証明書の削除

  • MD5アルゴリズムを使用して署名されたユーザー証明書を削除するには、次のようにします
       ${PLUGIN_HOME}/bin/orapki wallet remove -wallet <wallet_location> -dn 'DN_string' -user_cert [-pwd <pwd>] | [-auto_login_only]
  • 信頼性がありリクエストされた証明書リストで使用可能な自己署名証明書を削除するには:

    ${PLUGIN_HOME}/bin/orapki wallet remove -wallet < wallet_location > -dn 'DN_string' -trusted_cert [-pwd <pwd>] | [-auto_login_only]
     ${PLUGIN_HOME}/bin/orapki wallet remove -wallet < wallet_location > -dn 'DN_string' -cert_req [-pwd <pwd>] | [-auto_login_only]
    
  • MD5アルゴリズムを使用して署名された信頼性のある証明書を削除するには、次のようにします

    ${PLUGIN_HOME}/bin/orapki wallet remove -wallet < wallet_location > -dn 'DN_string' -trusted_cert [-pwd < pwd >] | [-auto_login_only]
    
  • MD5アルゴリズムを使用して署名された証明書リクエストを削除するには、次のようにします

    ${PLUGIN_HOME}/bin/orapki wallet remove -wallet < wallet_location > -dn 'DN_string' -cert_req [-pwd <pwd>] | [-auto_login_only]

SHA-2アルゴリズムを使用して署名された自己署名ユーザー証明書の追加

次のコマンドを使用して、MD5アルゴリズムによって署名された自己署名ユーザー証明書を、ウォレットのSHA-2アルゴリズムを使用して署名された自己署名証明書で追加します。

${PLUGIN_HOME} 
/bin/orapki wallet add -wallet <wallet_Location>
-dn 'DN_String'
keysize 2048 -sign_alg sha256 -self_signed
-validity 9125 [-pwd <pwd>] | [-auto_login_only]

MD5アルゴリズムを使用した既存の認証局の署名済ユーザー証明書の更新

認証局に連絡してSHA-2署名アルゴリズムを使用して署名されたユーザー証明書を取得し、これを既存のユーザー証明書と置換します。

${PLUGIN_HOME}/bin/orapki -wallet add -wallet <wallet_Location> -user_cert -cert <certificate_file> [-pwd <pwd> ] | [-auto_login_only]

MD5アルゴリズムを使用して署名された既存の信頼性のある証明書の更新

ウォレットにインポートされたMD5署名アルゴリズムを使用して署名されている信頼性のある証明書がある場合、SHA-2署名アルゴリズムを使用するように、対応するバックエンドWebLogic Serverの証明書を更新します。更新後、ウォレット内の信頼性のあるMD5証明書を更新済証明書に置換します。

${PLUGIN_HOME}/bin/orapki -wallet add -wallet <wallet_Location> -trusted_cert -cert <certificate_file> [-pwd <pwd> ] | [-auto_login_only]

MD5アルゴリズムを使用して署名された証明書のサポートの有効化

ノート:

セキュリティが損なわれるため、MD5アルゴリズムを使用して署名された証明書は推奨されていません。MD5アルゴリズムを使用して署名された証明書の使用を続行するには、ORACLE_SSL_ALLOW_MD5_CERT_SIGNATURES=1環境変数を設定します。 

プラグイン内のenvironment.variable を設定します:

  • Oracle HTTP Serverプラグイン: environment.ORACLE_SSL_ALLOW_MD5_CERT_SIGNATURES=1DOMAIN_HOME/config/fmwconfig/components/OHS/instances/instanceName/ohs.plugin.nodemanger.propertiesに追加します

  • Apacheプラグイン: export ORACLE_SSL_ALLOW_MD5_CERT_SIGNATURES=1$APACHE_HOME/bin/envvarsに追加します。

  • IISプラグイン: ORACLE_SSL_ALLOW_MD5_CERT_SIGNATURES=1をシステム環境変数に追加します。

境界認証の構成

プラグインを使用してアクセスされる、WebLogic Serverアプリケーションを保護するには、境界認証を使用します。

WebLogic IDアサーション・プロバイダでは、WebLogic Serverアプリケーションにアクセスする外部システム(プラグインを介してWebLogic Serverアプリケーションにアクセスするユーザーを含む)からのトークンを認証します。次の手順に従って、プラグインを安全に保護するIDアサーション・プロバイダを作成します。

  1. WebLogic ServerアプリケーションにカスタムIDアサーション・プロバイダを作成します。『Oracle WebLogic Serverセキュリティ・プロバイダの開発』カスタムIDアサーション・プロバイダの開発方法に関する項を参照してください。
  2. Certトークン・タイプをサポートするようにカスタムIDアサーション・プロバイダを構成し、Certをアクティブなトークン・タイプにします。『Oracle WebLogic Serverセキュリティ・プロバイダの開発』新しいトークン・タイプの作成方法に関する項を参照してください。
  3. Webアプリケーションのweb.xmlデプロイメント記述子ファイルにおいて、clientCertProxyをTrueに設定(または、クラスタを使用する場合は、必要に応じて管理コンソールの「クラスタ」「構成」「一般」タブでクラスタ全体に対して「クライアント証明書プロキシの有効化」属性をtrueに設定)します。

    ロード・バランサ、SSLアクセラレータなど、サード・パーティのプロキシ・サーバーでclientCertProxy属性を使用することで、双方向SSL認証を有効にできます。clientCertProxy属性の詳細は、『Oracle WebLogic Server Webアプリケーション、サーブレット、JSPの開発』context-paramに関する項を参照してください。

  4. clientCertProxyを設定したら、接続フィルタを使用して、このプラグインが実行されているマシンからの接続のみがWebLogic Serverに受け入れられるようにしてください。『WebLogicセキュリティ・サービスによるアプリケーションの開発』ネットワーク接続フィルタの使用に関する項を参照してください。
  5. Webサーバーのプラグインでは、プラグインとWebLogic Serverとの間でSSLを使用する信頼性のある認証局ファイルが必要になります。SSLを構成するために必要なステップは、「プラグインでのSSLの使用」を参照してください。

『Oracle WebLogic Serverセキュリティ・プロバイダの開発』IDアサーション・プロバイダに関する項を参照してください。