36 FIPSモードの有効化

Oracle WebLogic ServerでFIPS 140-2モードを有効にする方法を学習します。

FIPSの概要

Federal Information Processing Standards (FIPS) 140-2は、アメリカ合衆国政府の機密でも未分類の使用に関する要件を記載した規格です。WebLogic Serverでは、RSA FIPS互換(FIPS 140-2)機密モジュールを使用できます。

FIPSのサポートされるバージョンは、「サポートされるFIPS標準と暗号スイート」を参照してください。

この機密モジュールをRSA JSSEプロバイダおよびRSA JCEプロバイダと組み合せて使用すると、FIPS準拠(FIPS 140-2)実装が提供されます。

ノート:

RSA JSSEプロバイダとRSA JCEプロバイダはこの項で説明するようにFIPSモードで使用するだけでなく、非FIPSモードでも使用できます。たとえば、RSA JSSEプロバイダに固有の特定の暗号化アルゴリズムを使用することもできます。

次のトピックを参照してください。

Oracle Fusion MiddlewareでのFIPSのサポートの詳細は、『Oracle Fusion Middleware Oracle Fusion Middlewareの管理』Oracle Fusion MiddlewareでのFIPS-140のサポートに関する項を参照してください。

JavaオプションでのFIPS 140-2モードの有効化

Javaセキュリティ・ファイルを使用してJavaオプションをコマンドラインで指定すると、FIPS 140-2モードを有効にできます。

JavaオプションでFIPS 140-2を有効にするには、次のステップに従います。

  1. 次のURLより、使用しているJDKのバージョンに対応するJava Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policyファイルをダウンロードおよびインストールします。これらのJavaポリシーJARファイルは、サイズが128ビットを超える暗号キーに影響します。
    https://www.oracle.com/java/technologies/javase-jce-all-downloads.html
    

    .ZIPディストリビューションを開き、JAVA_HOME/jre/lib/securitylocal_policy.jarUS_export_policy.jarを更新します。詳細およびインストール方法は、.ZIPディストリビューション内のREADME.txtファイルを参照してください。

    ノート:

    JDK 8u161以降でWebLogic Serverを実行している場合は、このステップをスキップできます。JDK 8u161以降では、より強力な暗号化アルゴリズムがデフォルトで使用可能です。
  2. 自らのjava.securityファイルを作成します。インストールしたJDKに含まれるファイルを見本として使用できます。

    RSA JCEプロバイダとRSA JSSEプロバイダの両方を、java.securityプロパティ・ファイルに最初の2つのJavaセキュリティ・プロバイダとして追加します。

    #
    security.provider.1=com.rsa.jsafe.provider.JsafeJCE
    security.provider.2=com.rsa.jsse.JsseProvider
     
    security.provider.3=sun.security.provider.Sun
    :
    
  3. WebLogic Serverの起動コマンドラインに-Djava.security.propertiesを設定して、java.securityファイルのデフォルト構成をオーバーライドします。カスタムjava.securityファイルのフルパスを指定します。
    set JAVA_OPTIONS=-Djava.security.properties=C:\Users\user\java.security
    

    ノート:

    インストールされているJREセキュリティ・プロパティにjava.securityプロパティを付加する場合は、等号を1つ(=)使用してファイル名を指定します。すべてのJavaセキュリティ・プロパティをオーバーライドする場合は、2つの等号(==)を使用します(例: -Djava.security.properties==C:\Users\user\java.security)。
  4. jcmFIPS.jar jarファイルおよびsslj.jar JARファイル(どちらもWL_HOME/server/lib/にある)をクラスパスの先頭に指定します。これには、PRE_CLASSPATH環境変数を使用します。

    (RSA JCEプロバイダCrypto-Jはデフォルトでcryptoj.jarとクラスパスにあります。)

    たとえば、PRE_CLASSPATHCLASSPATHに追加される前に、jcmFIPS.jarsslj.jarPRE_CLASSPATH変数に設定してから、サーバー起動スクリプト(通常はsetDomainEnv.cmd/sh)を呼び出すことができます。

    set PRE_CLASSPATH=%ORACLE_HOME%\wlserver\server\lib\jcmFIPS.jar;%ORACLE_HOME%\wlserver\server\lib\sslj.jar
    cd %ORACLE_HOME%\user_projects\domains\base_domain
    startWebLogic.cmd
    
  5. WebLogic Serverを起動します。

java.securityでのFIPS 140-2モードの有効化

インストールされているJDKのjava.securityファイルからFIPS 140-2モードを有効にできます。

構成のステップは次のとおりです。

  1. 次のURLより、使用しているJDKのバージョンに対応するJava Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policyファイルをダウンロードおよびインストールします。これらのJavaポリシーJARファイルは、サイズが128ビットを超える暗号キーに影響します。
    https://www.oracle.com/java/technologies/javase-jce-all-downloads.html
    

    .ZIPディストリビューションを開き、JAVA_HOME/jre/lib/securitylocal_policy.jarUS_export_policy.jarを更新します。詳細およびインストール方法は、.ZIPディストリビューション内のREADME.txtファイルを参照してください。

    ノート:

    JDK 8u161以降でWebLogic Serverを実行している場合は、このステップをスキップできます。JDK 8u161以降では、より強力な暗号化アルゴリズムがデフォルトで使用可能です。
  2. java.securityファイルを編集します。RSA JCEプロバイダとRSA JSSEプロバイダの両方を、java.securityプロパティ・ファイルに最初の2つのJavaセキュリティ・プロバイダとして追加します。
    #
    security.provider.1=com.rsa.jsafe.provider.JsafeJCE
    security.provider.2=com.rsa.jsse.JsseProvider
     
    security.provider.3=sun.security.provider.Sun
    :
    
  3. jcmFIPS.jar jarファイルおよびsslj.jar JARファイル(どちらもWL_HOME/server/lib/にある)をクラスパスの先頭に指定します。これには、PRE_CLASSPATH環境変数を使用します。

    (RSA JCEプロバイダCrypto-Jはデフォルトでcryptoj.jarとクラスパスにあります。)

    たとえば、PRE_CLASSPATHCLASSPATHに追加される前に、jcmFIPS.jarsslj.jarPRE_CLASSPATH変数に設定してから、サーバー起動スクリプト(通常はsetDomainEnv.cmd/sh)を呼び出すことができます。

    set PRE_CLASSPATH=%ORACLE_HOME%\wlserver\server\lib\jcmFIPS.jar;%ORACLE_HOME%\wlserver\server\lib\sslj.jar
    cd %ORACLE_HOME%\user_projects\domains\base_domain
    startWebLogic.cmd
    

    または、jcmFIPS.jarsslj.jarをサーバー起動スクリプトそのもののPRE_CLASSPATH変数に追加します。

  4. WebLogic Serverを起動します。

FIPS 140-2モード有効時のJCEの検証

FIPS 140-2モードのWLSを構成するときにJCE検証を有効にするには、WebLogic Serverを起動するときに-Dweblogic.security.allowCryptoJDefaultJCEVerification=true JAVA_OPTIONS環境変数を設定します。

通常のWebLogic起動時には、パフォーマンスの理由からRSA Crypto-J JCE自己整合性テストは無効になっています。

この環境変数を設定すると、処理が追加されて、起動に時間がかかるようになることに注意してください。

FIPS 140-2準拠のキーストアの作成

WebLogic Server 12.2.1.3以下では、Sun JSSEプロバイダ(デフォルト)を使用してキーツールで作成されたJKSおよびPKCS12キーストアはFIPSに完全には準拠していません。キーストアがFIPS 140-2に準拠していることを確認するには、キーツール・コマンドを使用して、WebLogic Serverディストリビューションに用意されているRSA JCEプロバイダを指定することにより、Sun JSSEプロバイダを使用して作成したキーストアを変換します。

また、Oracle Identity Cloud Integratorプロバイダを使用して構成されたJava Cloud Serviceなどの環境では、CA証明書とともにデフォルトのJKSキーストアであるcacertsを使用します。これらの環境では、RSA JCEプロバイダを使用してJKSキーストアをFIPS準拠のPKCS12キーストアに変換する必要があります。

次の項では、キーストアがFIPSに準拠していることを確認するためにこれらのステップを完了する手順を示します。

RSA JCEプロバイダを使用した非FIPS準拠のキーストアの変換

WebLogic Serverディストリビューションのクラスパスを使用することにより、次のように、RSA JCEプロバイダとともにkeytool –importkeystoreコマンドを使用して非準拠のキーストアを変換できます。

keytool -importkeystore -srckeystore srckeystore 
         –srcstoretype srcstoretype
         -srcprovidername providername –destkeystore destkeystore 
         -deststoretype PKCS12 -destprovidername JsafeJCE 
         -providerclass com.rsa.jsafe.provider.JsafeJCE 
         -providerpath $CLASSPATH 

このコマンドで、次のパラメータの値を指定します。

  • -srckeystore – ソース・キーストアの名前
  • -srcstoretype – ソース・キーストアのタイプ(PKCS12など)
  • -srcprovidername – ソース・キーストア・プロバイダの名前。srcstoretypePKCS12である場合、JsafeJCEに設定します
  • -destkeystore - 宛先キーストアの名前
  • -deststoretype – 宛先キーストアのタイプ。RSA JCEプロバイダに対してPKCS12に設定します
  • -destprovidername - 宛先キーストア・プロバイダの名前。RSA JCEプロバイダに対してJsafeJCEに設定します
  • -providerclass – プロバイダ・クラスの名前。com.rsa.jsafe.provider.JsafeJCEに設定します
  • -providerpath - プロバイダのクラスパス

FIPSに準拠するためのデフォルトのJKSキーストアの変換

JDKに含まれる、CA証明書を使用したデフォルトのJKSキーストアであるcacertsは、WebLogic Server 12.2.1.3以下ではFIPSに準拠していません。FIPS 140-2には、PKCS12 PBES2キーストアが必要です。Sun JSSEプロバイダ(デフォルト)を使用してキーツールで作成されたPKCS12キーストアはサポートされていません。Oracle Identity Cloud Integratorプロバイダを使用したJava Cloud Service環境の場合のように、デフォルトのJDK cacertsキーストアを使用する場合、次のステップを完了してFIPSに準拠していることを確認する必要があります。

  • JDK cacertsキーストアをJKSからPKCS12フォーマットに変換します

  • RSA JCEプロバイダを使用してPKCS12キーストアをFIPSに準拠するよう変換します

  • Javaシステムのプロパティを設定し、環境内のJavaのデフォルトSSLコンテキストによって使用されるデフォルトのトラスト・ストアを更新することにより、WebLogic Serverを正常に起動および操作できるようにします

この例は、キーストアを変換し、Javaシステムのプロパティを更新するために必要なステップを示しています。この例では、JDKはディレクトリ/u01にインストールされます。
  1. keytool –importkeystoreコマンドを使用して、JDK cacertsキーストア・ファイルをPKCS12に変換します。たとえば:
    keytool -importkeystore -srckeystore /u01/jdk/jre/lib/security/cacerts 
          -destkeystore /u01/jdk/jre/lib/security/cacerts.p12 
          –deststoretype pkcs12
    このコマンドを実行すると、cacertsキーストア・ファイルのデフォルトのパスワードを入力するよう求められます。keytoolコマンドおよびcacertsファイルの管理(デフォルトのパスワードを含む)の詳細は、https://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.htmlのkeytoolに関する項を参照してください
  2. ORACLE_HOME\wlserver\server\bin\setWLSEnvスクリプトを実行し、WebLogic ServerクラスをCLASSPATH環境変数に追加します。
    ここで、ORACLE_HOMEは、WebLogic Serverをインストールした際にOracleホームとして指定したディレクトリを表します。

    ノート:

    UNIXオペレーティング・システムでは、setWLSEnv.shコマンドはすべてのコマンド・シェルで環境変数を設定しません。Kornシェルまたはbashシェルを使用してこのコマンドを実行することをお薦めします。
  3. 「RSA JCEプロバイダを使用した非FIPS準拠のキーストアの変換」の説明に従って、RSA JSEプロバイダとともにkeytool –importkeystoreコマンドを使用して、ステップ1で作成したPKCS12キーストアをFIPS準拠のキーストアに変換します。
    たとえば:
    keytool -importkeystore -srckeystore /u01/jdk/jre/lib/security/cacerts.p12   
    -srcstoretype PKCS12 -srcprovidername JsafeJCE 
    -destkeystore /u01/jdk/jre/lib/security/cacerts.rsa
    -deststoretype PKCS12 -destprovidername JsafeJCE
    -providerclass com.rsa.jsafe.provider.JsafeJCE 
    -providerpath $CLASSPATH 
    
  4. WebLogic Serverの起動時にデフォルトのSSLコンテキストによって使用されるJavaシステムのプロパティを設定します。これを行うには、『Oracle WebLogic Serverサーバーの起動と停止の管理』WebLogic ServerインスタンスのJavaオプションの指定に関する項の説明に従って、WebLogic Serverの開始スクリプト内の次のJavaオプションを設定します。
    たとえば:
    Set JAVA_OPTIONS=”-Djavax.net.ssl.trustStore=/u01/jdk/jre/lib/security/cacerts.rsa -Djavax.net.ssl.trustStoreType=PKCS12”

Webサービスを使用する際の重要な考慮事項

FIPS 140-2モードでWebサービスを使用する際には、留意すべき重要な考慮事項があります。

たとえば:

SHA-1セキュア・ハッシュ・アルゴリズムのサポートなし

SHA-1セキュア・ハッシュ・アルゴリズムはFIPS 140-2モードではサポートされません。したがって、次のWS-SP <sp:AlgorithmSuite>値はFIPS 140-2モードではサポートされません。

  • Basic256

  • Basic192

  • Basic128

  • TripleDes

  • Basic256Rsa15

  • Basic192Rsa15

  • Basic128Rsa15

  • TripleDesRsa15

『Oracle WebLogic Server WebLogic Webサービスの保護』SHA-256セキュア・ハッシュ・アルゴリズムの使用に関する項で説明しているように、WebLogic Server Webサービス・セキュリティ・ポリシーでは、デジタル署名のハッシュのためにSHA-1およびより強固なSHA-2 (SHA-256)セキュア・ハッシュ・アルゴリズムの両方がサポートされています。特にSHA-256ポリシーの使用では、SHA-1セキュア・ハッシュ・アルゴリズムとSHA-2セキュア・ハッシュ・アルゴリズムを使用するポリシーを説明しています。

FIPS 140-2モードでは、デジタル署名の使用時には拡張アルゴリズム・スイートが必要です。『Oracle WebLogic Server WebLogic Webサービスの保護』「拡張アルゴリズム・スイート(EAS)の使用」を参照してください。

FIPS 140-2モードを有効にする場合、セキュリティ・ポリシーの<sp:AlgorithmSuite>要素を、次に示すサポートされている<sp:AlgorithmSuite>値(詳細は、SHA-256セキュア・ハッシュ・アルゴリズムの使用に関する項を参照)のいずれかに変更します。

  • Basic256Sha256

  • Basic192Sha256

  • Basic128Sha256

  • Basic256Exn256

  • Basic192Exn256

  • Basic128Exn256

  • TripleDesSha256

  • TripleDesExn256

  • Basic256Sha256Rsa15

  • Basic192Sha256Rsa15

  • Basic128Sha256Rsa15

  • Basic256Exn256Rsa15

  • Basic192Exn256Rsa15

  • Basic128Exn256Rsa15

  • TripleDesSha256Rsa15

  • TripleDesExn256Rsa15

たとえば、既存のBasic256アルゴリズム・スイートを編集してEASアルゴリズム・スイートにするには、次のポリシーを変更します。

<sp:AlgorithmSuite>
        <wsp:Policy>
             <sp:Basic256/>
        </wsp:Policy>
</sp:AlgorithmSuite>

これを次のように変更します。

<sp:AlgorithmSuite>
         <wsp:Policy>
             <orasp:Basic256Exn256 xmlns:orasp="http://schemas.oracle.com/ws/2006/01/securitypolicy"/>
         </wsp:Policy>
</sp:AlgorithmSuite>

X509PKIPathv1トークンのサポートなし

このリリースのWebLogic Serverでは、X509PKIPathv1トークンはFIPS 140-2モードでサポートされません。カスタム・ポリシーでX509PKIPathv1トークンを使用する場合、かわりにPKCS7トークンを使用するようにポリシーを変更します。

特に、次の2つのポリシー・アサーションは、このリリースのWebLogic ServerのFIPS 140-2モードでサポートされていません。

  • <sp:WssX509PkiPathV1Token10/>

  • <sp:WssX509PkiPathV1Token11/>

これら2つのポリシー・アサーションを使用する場合、かわりに次の2つのアサーションに変更してください。

  • <sp:WssX509Pkcs7Token10/>

  • <sp:WssX509Pkcs7Token11/>

たとえば、カスタム・ポリシーのポリシーに次のアサーションがあるとします。

<wsp:Policy>
   <sp:X509Token sp:IncludeToken=". . .">
         <wsp:Policy>
               <sp:WssX509PkiPathV1Token10/>
         </wsp:Policy>
   </sp:X509Token>
</wsp:Policy>

これは次のポリシー・アサーションで置き換えてください。

<wsp:Policy>
   <sp:X509Token sp:IncludeToken=". . .">
         <wsp:Policy>
               <sp:WssX509Pkcs7Token10/>
         </wsp:Policy>
   </sp:X509Token>
</wsp:Policy>

または、カスタム・ポリシーのポリシーに次のアサーションがあるとします。

<wsp:Policy>
   <sp:X509Token sp:IncludeToken=". . .">
         <wsp:Policy>
              <sp:RequireThumbprintReference/>
              <sp:WssX509PkiPathV1Token11/>
         </wsp:Policy>
   </sp:X509Token>
</wsp:Policy>

これは次のアサーションで置き換えてください。

<wsp:Policy>
   <sp:X509Token sp:IncludeToken=". . .">
         <wsp:Policy>
               <sp:RequireThumbprintReference/>
               <sp:WssX509Pkcs7Token11/>
         </wsp:Policy>
   </sp:X509Token>
</wsp:Policy>