文档首页
MySQL Connector/J 开发人员指南
相关文档 下载本手册
PDF (US Ltr) - 1.2Mb
PDF (A4) - 1.2Mb


6.9.4 FIPS 模式下的 JSSE

当使用 Java 8 到 12 JRE 时,如果 JSSE 配置为使用 FIPS 模式,则尝试连接到 MySQL 服务器在某些情况下可能会失败,并出现 KeyManagementException 错误,提示 "FIPS 模式:只能使用 SunJSSE TrustManagers"。 这是因为在这种情况下,Connector/J 实现的自定义 TrustManager 支持不同的 sslMode 选项,但最终会被 SunJSSE 的默认实现拒绝。

可以通过告诉 Connector/J 不要使用其自定义的 TrustManager 实现,而是使用您自己的安全提供程序来解决此问题。 这可以通过设置以下连接属性来完成

  • fipsCompliantJsse: 设置为 true 来解决 FIPS 模式下提到的问题。

    注意

    当设置为 true 时,Connector/J 始终执行服务器证书验证(即使 sslMode 设置为 PREFERREDREQUIRED),这意味着必须使用下面描述的连接属性配置一个信任库,或者必须启用回退的系统范围信任库。

  • KeyManagerFactoryProvider: 提供 javax.net.ssl.KeyManagerFactory 实现的 Java 安全提供程序的名称。

  • trustManagerFactoryProvider: 提供 javax.net.ssl.TrustManagerFactory 实现的 Java 安全提供程序的名称。

  • keyStoreProvider: 提供 java.security.KeyStore 实现的 Java 安全提供程序的名称,支持使用 clientCertificateKeyStoreTypetrustCertificateKeyStoreType 指定的密钥存储类型。