11.14.3. Red Hat Enterprise Linux 6 にて SSL の FIPS 140-2 準拠の暗号を有効化
ここでは、JBoss EAP 6 の Web コンテナ (JBoss Web) を SSL に対する FIPS 140-2 準拠の暗号化に設定する方法を説明します。ここでは Red Hat Enterprise Linux 6 での手順のみを取り上げます。
このタスクでは、FIPS モードの Mozilla NSS ライブラリーを使用します。
前提条件
- Red Hat Enterprise Linux 6 が FIPS 140-2 に準拠するよう設定されている必要があります。https://access.redhat.com/knowledge/solutions/137833 を参照してください。
手順11.45 SSL に対して FIPS 140-2 準拠の暗号化を有効にする
データベースの作成
jboss
ユーザーが所有するディレクトリーに NSS データベースを作成します。$ mkdir -p /usr/share/jboss-as/nssdb $ chown jboss /usr/share/jboss-as/nssdb $ modutil -create -dbdir /usr/share/jboss-as/nssdb
NSS 設定ファイルの作成
次の内容が含まれるnss_pkcsll_fips.cfg
という名前の新しいテキストファイルを/usr/share/jboss-as
ディレクトリーに作成します。name = nss-fips nssLibraryDirectory=/usr/lib64 nssSecmodDirectory=/usr/share/jboss-as/nssdb nssModule = fips
NSS 設定ファイルには以下が指定されている必要があります。- 名前
- NSS ライブラリーが存在するディレクトリー
- 手順 1 に従って作成された NSS データベースが存在するディレクトリー
Red Hat Enterprise Linux 6 の 64 ビットバージョンを実行していない場合は、/usr/lib64
の代わりに/usr/lib
をnssLibraryDirectory
に設定します。SunPKCS11 プロバイダーの有効化
JRE ($JAVA_HOME/jre/lib/security/java.security
) のjava.security
設定ファイルを編集し、次の行を追加します。security.provider.1=sun.security.pkcs11.SunPKCS11 /usr/share/jboss-as/nss_pkcsll_fips.cfg
この行に指定されている設定ファイルは手順 2 で作成されたファイルであることに注意してください。このプロバイダーを優先するため、このファイルにある他のsecurity.provider.X
行の値 (X) に 1 を足す必要があります。NSS ライブラリーに対して FIPS モードを有効にする
次のようにmodutil
コマンドを実行し、FIPS モードを有効にします。modutil -fips true -dbdir /usr/share/jboss-as/nssdb
ここで指定するディレクトリーは手順 1 で作成したものであることに注意してください。この時点で、セキュリティーライブラリーエラーが発生し、NSS 共有オブジェクトの一部に対してライブラリー署名の再生成が必要になることがあります。FIPS トークンのパスワードの変更
次のコマンドを使用して FIPS トークンのパスワードを設定します。トークンの名前はNSS FIPS 140-2 Certificate DB
でなければならないことに注意してください。modutil -changepw "
NSS FIPS 140-2 Certificate DB
" -dbdir /usr/share/jboss-as/nssdbFIPS トークンに使用されるパスワードは FIPS 準拠のパスワードでなければなりません。NSS ツールを使用した証明書の作成
次のコマンドを入力し、NSS ツールを使用して証明書を作成します。certutil -S -k rsa -n jbossweb -t "u,u,u" -x -s "CN=localhost, OU=MYOU, O=MYORG, L=MYCITY, ST=MYSTATE, C=MY" -d /usr/share/jboss-as/nssdb
PKCS11 キーストアを使用するよう HTTPS コネクターを設定する
JBoss CLI ツールで次のコマンドを使用し、HTTPS コネクターを追加します。/subsystem=web/connector=https/:add(socket-binding=https,scheme=https,protocol=HTTP/1.1,secure=true)
次に、以下のコマンドを使用して SSL 設定を追加します。PASSWORD を 手順 5 の FIPS 準拠のパスワードに置き換えます。/subsystem=web/connector=https/ssl=configuration:add(name=https,password=PASSWORD,keystore-type=PKCS11, cipher-suite="SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_anon_WITH_AES_128_CBC_SHA, TLS_ECDH_anon_WITH_AES_256_CBC_SHA")
検証
次のコマンドを実行し、JVM が PKCS11 キーストアから公開鍵を読み取れることを検証します。keytool -list -storetype pkcs11
例11.39 FIPS 140-2 に準拠した HTTPS コネクターの XML 設定
<connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true"> <ssl name="https" password="****" cipher-suite="SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_anon_WITH_AES_128_CBC_SHA, TLS_ECDH_anon_WITH_AES_256_CBC_SHA" keystore-type="PKCS11"/> </connector>
読みやすくするため、
cipher-suite
属性には改行が挿入されていることに注意してください。