4.9.4. 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 ください。
手順4.6 SSL に対して FIPS 140-2 準拠の暗号化を有効にする
データベースの作成
jboss
ユーザーが所有するディレクトリーに NSS データベースを作成します。注記jboss
ユーザーは単なる例となります。オペレーティングシステムのユーザーに置き換える必要があります。$ mkdir -p /usr/share/jboss-as/nssdb $ chown jboss /usr/share/jboss-as/nssdb $ modutil -create -dbdir /usr/share/jboss-as/nssdb
NSS 設定ファイルの作成
以下の内容を含む/usr/share/jboss-as
ディレクトリーにnss_pkcsll_fips.cfg
という名前の新規テキストファイルを作成します。name = nss-fips nssLibraryDirectory=/usr/lib64 nssSecmodDirectory=/usr/share/jboss-as/nssdb nssModule = fips
NSS 設定ファイルには以下が指定されている必要があります。- 名前
- NSS ライブラリーが存在するディレクトリー
- 手順 1 に従って作成された NSS データベースが存在するディレクトリー
64 ビットバージョンの Red Hat Enterprise Linux 6 を実行していない場合は、/usr/lib
64 ではなく、nssLibraryDirectory
を/usr/lib64
に設定します。SunPKCS11 プロバイダーの有効化
JRE($JAVA_HOME/jre/lib/security/
設定ファイルを編集し、以下の行を追加します。java.security
)の java.securitysecurity.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
例4.5 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
属性には、読みやすくするために改行が挿入されている点に注意してください。