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-root>/conf/security 目錄下的 java.security 檔案,並設定 BCFIPS 定義的 Java 系統內容。

    在文字編輯器中,從 <jre-root>/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。