要为 BCFIPS 仅批准模式配置 JRE,请执行以下操作:
将 BCFIPS.jar 文件添加到 Java 类路径。
所需的 BCFIPS 文件如下:
bc-fips-1.0.2.5.jar
bcpkix-fips-1.0.7.jar
bctls-fips-1.0.19.jar
注:您可以从以下 maven 储存库下载上述 jar 文件:
修改 <jre 根目录>/conf/security 目录下的 java.security 文件,并设置 BCFIPS 定义的 Java 系统属性。
在文本编辑器中,从 <jre 根目录>/conf/security/java.security 打开托管 Web 容器的 JRE 的上述文件。找到安全提供程序列表,注释掉所有现有提供程序,然后如下所示替换文件中的项:
security.provider.1=BCFIPS
security.provider.2=BCJSSE
security.provider.3=SunJSSE
security.provider.4=SUN
security.provider.5=SunJCE
必须指定 SunJSSE 提供程序 (Java 11),因为 OSP 在初始化其可信证书存储区时需要特定的 TrustManager 实现。除了对安全提供程序进行更改之外,还必须使用 BCFIPS JSSE KeyManager 实现。这种必要性主要是因为 Sun 实现中存在缺陷,导致无法在一定程度上做到 FIPS 在密钥方面要求的确定性。为此,请将 java.security 中的以下行:
替换成
ssl.KeyManagerFactory.algorithm=SunX509
ssl.KeyManagerFactory.algorithm=PKIX
另外,最好禁用较旧的 SSL 和 TLS 算法。这是因为,TLS v2.0 之前的 SSL/TLS 版本所需的算法在 BCFIPS 已批准模式下不可用。要禁用旧算法,请找到 jdk.tls.disabledAlgorithms 项。例如:
jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 1024, \ EC keySize < 224, DES40_CBC, RC4_40, 3DES_EDE_CBC
将 TLSv1、TLSv1.1、TLSv1.2 添加到列表中:
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, TLSv1.2, RC4, MD5withRSA, DH keySize < 1024, \ EC keySize < 224, DES40_CBC, RC4_40, 3DES_EDE_CBC
禁用 TLSv1 和 TLSv1.1 不是强制要求,但这样可以避免在 OSP 尝试安全连接到仅支持 TLS v1.1 或更低版本的服务(例如 LDAP)时出现不明所以的错误讯息。禁用较低 TLS 版本后出现的错误讯息更容易理解,并且可以直接指明问题所在。
要启用对上述 .jar 文件的许可权限,请运行以下命令:
chown novlua:novlua <jar-file>
chmod 755 <jar-file>
要设置环境变量,请运行以下命令:
export IS_FIPS_ENABLED=true
export BC_FIPS_VERSION=1.0.2.5
export JAVA_OPTS=" -Dorg.bouncycastle.fips.approved_only=true -Dorg.bouncycastle.rsa.allow_multi_use=true"
export CLASSPATH=/opt/netiq/common/jre/lib/bc-fips-1.0.2.5.jar
设置完成后,可以使用 echo 命令校验所有环境变量。
注:要通过端口 636 访问 dxcmd,请在 LDAP 设置中启用 SSL EC 证书。
导航到 /opt/netiq/common/jre/lib/security/ 目录。
备份 cacerts 文件。
为了支持安全性增强,请使用以下命令将 cacerts 文件转换为 bcfks 格式:
keytool -importkeystore -srckeystore cacerts -srcstorepass novell -srcstoretype JKS -destkeystore cacerts -deststorepass changeit -deststoretype BCFKS -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providerpath $CLASSPATH
注:OpenText eDirectory 8.8(或更低版本)无法与安全 LDAP 一起使用,因为它仅支持 TLS v1.0。如果要使用安全 LDAP,则必须使用 OpenText eDirectory 9 或更高版本。另一种做法是修改默认的密钥存储区类型。找到 keystore.type=jks 或 keystore.type=pkcs12 行,将其更改为 keystore.type=bcfks。