11.14.3. 在红帽企业版 Linux 6 上启用 SSL 的 FIPS 140-2 加密
前提条件
- 红帽企业版 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 配置文件
在/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 数据库用到的目录。
如果你使用的是红帽企业版 Linux 6 的 64 位版本,请设置nssLibraryDirectory为/usr/lib而不是/usr/lib64。启用 SunPKCS11 供应商
编辑你的 JRE 的java.security配置文件($JAVA_HOME/jre/lib/security/java.security)并添加下列行:security.provider.1=sun.security.pkcs11.SunPKCS11 /usr/share/jboss-as/nss_pkcsll_fips.cfg
请注意这一行里指定的配置文件就是我们在步骤 2 里创建的文件。这个文件里的任何其他security.provider.X行都必须将 X 递增以设置对应供应商的优先级。为 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/nssdb用于 FIPS 令牌的密码必须是兼容 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
配置 HTTPS 连接器使用 PKCS11 密钥库
用 JBoss CLI 工具里的下列命令添加一个 HTTPS 连接器:/subsystem=web/connector=https/:add(socket-binding=https,scheme=https,protocol=HTTP/1.1,secure=true)
然后用下列命令添加 SSL 配置,用兼容 FIPS 的密码(参考步骤 5)替换这里的 PASSWORD。/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.42. 使用 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 属性里插入了断行符以便于阅读。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.