36 FIPSモードの有効化

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

FIPSの概要

Federal Information Processing Standards (FIPS) 140-2は、アメリカ合衆国政府の機密でも未分類の使用に関する要件を記載した規格です。

Jipher JCEおよびSunJSSEプロバイダを使用して、WebLogic ServerのFIPS準拠(FIPS 140-2)実装を有効にできます。

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

Jipher JCEおよびSunJSSEプロバイダの使用

Jipher JCEプロバイダとSunJSSEプロバイダを組み合せると、WebLogic ServerのFIPS準拠の実装が作成されます。Jipher JCEとSunJSSEがそれぞれセキュリティ・プロバイダのリストの最初と2番目に登録されていることを確認します。

Jipher JCEおよびSunJSSEプロバイダでのFIPSモードの有効化

Jipher JCEプロバイダとSunJSSEプロバイダの組合せを使用して、WebLogic ServerのFIPS準拠の実装を作成します。

独自のjava.securityファイルを作成し、コマンドラインからJavaオプションを指定するか、インストールされているJDKのjava.securityファイルを編集して、FIPS 140-2モードを有効にできます。

Jipherを使用したJavaオプションでのFIPSモードの有効化

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

  1. 自らのjava.securityファイルを作成します。インストールしたJDKに含まれるファイルを見本として使用できます。
  2. Jipher JCEプロバイダを、java.securityプロパティ・ファイルにリストされる最初のJavaセキュリティ・プロバイダとして追加します。残りのプロバイダの位置を1つ下に移動します。
    security.provider.1=com.oracle.jipher.provider.JipherJCE
    security.provider.2=SunJSSE
    security.provider.3=SUN
  3. java.securityプロパティ・ファイルにkeystore.type=PKCS12を追加して、PKCS12以外のタイプのキーストアをブロックします。keystore.type=jksシステム・プロパティがファイルにすでに存在する場合は、削除します。
  4. WebLogic Serverの起動コマンドラインに-Djava.security.propertiesおよび-Dweblogic.security.fips140strictkeystores=trueを設定して、それぞれ、java.securityファイルのデフォルト構成をオーバーライドし、WebLogic ServerがPKCS12以外のタイプのキーストアを使用しないようにします。-Djava.security.propertiesの場合は、カスタムjava.securityファイルにファイルのフルパスを指定します。
    set JAVA_OPTIONS="-Djava.security.properties=C:\Users\user\java.security -Dweblogic.security.fips140strictkeystores=true"
    

    ノート:

    インストールされているJREセキュリティ・プロパティにjava.securityプロパティを付加する場合は、等号を1つ(=)使用してファイル名を指定します。すべてのJavaセキュリティ・プロパティをオーバーライドする場合は、2つの等号(==)を使用します(例: -Djava.security.properties==C:\Users\user\java.security)。
  5. WebLogic Serverを起動します。
    JKSキーストアを使用するWebLogic Server環境からアップグレードし、JKSキーストアをブロックすると問題が発生する場合は、weblogic.security.fips140strictkeystores=falseおよびkeystore.type=JKSを設定できます。ただし、厳密なFIPS準拠の場合は、かわりに任意のJKSキーストアを変換する必要があります。詳細および変換手順については、「Jipher JCEプロバイダを使用した非FIPS準拠キーストアの変換」を参照してください。

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

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

  1. java.securityファイルを編集して、java.securityプロパティ・ファイルにリストされている最初のJavaセキュリティ・プロバイダとしてJipher JCEプロバイダを追加します。残りのプロバイダの位置を1つ下に移動します。
    security.provider.1=com.oracle.jipher.provider.JipherJCE
    security.provider.2=SunJSSE
    security.provider.3=SUN
  2. keystore.type=pkcs12を追加して、PKCS12以外のタイプのキーストアをブロックします。keystore.type=jksプロパティがファイルにすでに存在する場合は、削除します。
  3. WebLogic ServerがPKCS12以外のタイプのキーストアを使用しないようにするには、WebLogic Serverの起動コマンドラインでweblogic.security.fips140strictkeystores=trueを設定します。
    set JAVA_OPTIONS=-Dweblogic.security.fips140strictkeystores=true
    
  4. WebLogic Serverを起動します。
    JKSキーストアを使用するWebLogic Server環境からアップグレードし、JKSキーストアをブロックすると問題が発生する場合は、java.securityファイルでkeystore.type=jksを設定し、システム・プロパティとしてweblogic.security.fips140strictkeystores=falseを設定できます。ただし、厳密なFIPS準拠の場合は、かわりに任意のJKSキーストアを変換する必要があります。詳細および変換手順については、「Jipher JCEプロバイダを使用した非FIPS準拠キーストアの変換」を参照してください。

Dell JCEおよびDell BSAFE JSSEプロバイダの削除

WebLogic Server 14.1.2.0.0より前のリリースでは、Dell JCEおよびDell BSAFE JSSEプロバイダを使用してFIPS準拠が実装されていました。FIPSモードは、Jipher JCEおよびSunJSSEプロバイダによって提供されるようになりました。WebLogic Server環境からDellプロバイダへの参照を削除してください。

ノート:

これらのステップは、WebLogic Server 14.1.1.0.0以前からアップグレードしていて、環境をFIPS準拠に変更している場合にのみ実行する必要があります。
  1. クラスパスから次のJARファイルを削除します。
    • MW_HOME/jlib/jcmFIPS.jar
    • MW_HOME/jlib/cryptoj.jar
    • WL_HOME/server/lib/sslj.jar

    PRE_CLASSPATH環境変数からも削除されていることを確認します。

  2. java.securityファイルを更新して、Dell JCEプロバイダおよびDell BSAFE JSSEプロバイダをセキュリティ・プロバイダのリストから削除し、残りのプロバイダの順序を変更します。

FIPSモードを有効にするには、「Jipher JCEおよびSunJSSEプロバイダでのFIPSモードの有効化」を参照してください。

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

keytoolユーティリティを使用して作成され、SunJSSEプロバイダ(デフォルト)を使用するJKSまたはPKCS12キーストアは、完全にはFIPS準拠でない場合があります。キーストアがFIPS 140-2に準拠していることを確認するには、WebLogic Serverディストリビューションに用意されているJipher JCEプロバイダでキーツール・コマンドを使用して、SunJSSEプロバイダを使用して作成したキーストアを変換します。

FIPS承認アルゴリズムを使用してSunJSSEでキーストアを作成することはできますが、FIPSで検証された暗号化実装が使用されていない場合、公式にはFIPS準拠ではありません。

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

PKCS12タイプのキーストアのみが許可されるようにするには、WebLogic Serverの起動時にシステム・プロパティ: weblogic.security.fips140strictkeystores=trueを設定し、keystore.type=pkcs12java.securityファイルに追加します。JKSを使用するWebLogic Server環境からアップグレードする場合は、これらの変更を行う前に、それらのレガシー・キーストアをPKCS12に変換したことを確認します。

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

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

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

Jipher JCEプロバイダを使用して非準拠キーストアを変換するには:

keytool -importkeystore -srckeystore srckeystore          
–srcstoretype srcstoretype         
-srcprovidername providername –destkeystore destkeystore
-deststoretype PKCS12 -destprovidername JipherJCE
-providerclass com.oracle.jipher.provider.JipherJCE
-providerpath $CLASSPATH 

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

  • -srckeystore – ソース・キーストアの名前
  • -srcstoretype – ソース・キーストアのタイプ(PKCS12など)
  • -srcprovidername – ソース・キーストア・プロバイダの名前。srcstoretypePKCS12の場合はJipherJCEに設定します
  • -destkeystore - 宛先キーストアの名前
  • -deststoretype – 宛先キーストアのタイプ。Jipher JCEプロバイダの場合はPKCS12に設定します
  • -destprovidername - 宛先キーストア・プロバイダの名前。Jipher JCEプロバイダの場合はJipherJCEに設定します
  • -providerclass – プロバイダ・クラスの名前。com.oracle.jipher.provider.JipherJCEに設定します
  • -providerpath - プロバイダのクラスパス

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

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

この例は、キーストアを変換し、Javaシステムのプロパティを更新するために必要なステップを示しています。
  1. デフォルト・プロバイダを使用してJKSキーストアをロードし、Jipher JCEプロバイダを使用してそれをPKCS12キーストアとして保存します。
    keytool -importkeystore -v
          -srckeystore $JAVA_HOME/jre/lib/security/cacerts  
          -srcstoretype JKS
          -destkeystore cacerts.p12 
          -deststoretype PKCS12
          -destprovidername JipherJCE 
          -providerclass com.oracle.jipher.provider.JipherJCE 
          -providerpath $CLASSPATH
        
  2. 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.p12 -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>