5.0 为 FIPS 配置 JRE

要为 BCFIPS 仅批准模式配置 JRE,请执行以下操作:

  1. 将 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 文件:

  2. 修改 <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 版本后出现的错误讯息更容易理解,并且可以直接指明问题所在。

  3. 将以下值添加到环境变量中:

    IS_FIPS_ENABLED=true
    BC_FIPS_VERSION=1.0.2.5
    JAVA_OPTS =" -Dorg.bouncycastle.fips.approved_only=true  -Dorg.bouncycastle.rsa.allow_multi_use=true"
    CLASSPATH=C:\NetIQ\Common\JRE\lib\bc-fips-1.0.2.5.jar

    注:要通过端口 636 访问 dxcmd,请在 LDAP 设置中启用 SSL EC 证书。

  4. 导航到 C:\NetIQ\Common\JRE\lib\security 文件夹。

  5. 备份 cacerts 文件。

  6. 为了支持安全性增强,请使用以下命令将 cacerts 文件转换为 bcfks 格式:

    keytool -importkeystore -srckeystore cacerts -srcstorepass changeit -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。