5.0 為 FIPS 設定 JRE

若要為 BCFIPS 僅核准模式設定 JRE,請執行以下操作:

  1. 將 BCFIPS.jar 檔案新增至 Java 類別路徑。

    所需的 BCFIPS 檔案如下:

    • bc-fips-1.0.2.4.jar

    • bcpkix-fips-1.0.7.jar

    • bctls-fips-1.0.18.jar

  2. 修改 <jre-root>/lib/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 新增至清單中:

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, MD5withRSA, DH keySize < 1024, \ EC keySize < 224, DES40_CBC, RC4_40, 3DES_EDE_CBC

停用 TLSv1 和 TLSv1.1 不是強制要求,但這樣可以避免在 OSP 嘗試安全連接到僅支援 TLS v1.1 或更舊版本的服務 (例如 LDAP) 時,出現不明所以的錯誤訊息。停用舊版 TLS 後出現的錯誤訊息更容易理解,並且可以直接指明問題所在。

附註:eDirectory 8.8 (或更舊版本) 無法與安全 LDAP 配合使用,因為它僅支援 TLS v1.0。若要使用安全 LDAP,則必須使用 eDirectory 9 或更新版本。另一種做法是修改預設的金鑰儲存區類型。找到 keystore.type=jks 或 keystore.type=pkcs12 行,將其變更為 keystore.type=bcfks。