• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • FIPS模式支持

    如果使用OpenSSL 1.0.2进行编译,则MySQL支持FIPS模式,并且在运行时可以使用OpenSSL库和FIPS对象模块。

    服务器端的FIPS模式适用于服务器执行的加密操作。这包括在服务器中运行的复制(主/从复制和组复制)和X插件。FIPS模式也适用于客户端尝试连接到服务器的尝试。

    以下各节描述了FIPS模式以及如何在MySQL中利用它:

    • FIPS概述
    • MySQL中FIPS模式的系统要求
    • 在MySQL中配置FIPS模式

    FIPS概述

    联邦信息处理标准140-2(FIPS 140-2)描述了联邦(美国政府)机构可能需要的用于保护敏感或有价值信息的加密模块的安全标准。为了被认为可以用于此类联邦用途,必须对加密模块进行FIPS 140-2认证。如果旨在保护敏感数据的系统缺少适当的FIPS 140-2证书,则联邦机构无法购买该证书。

    尽管OpenSSL库本身未经FIPS验证,但可以在FIPS模式下使用诸如OpenSSL之类的产品。相反,OpenSSL库与OpenSSL FIPS对象模块一起使用,以使基于OpenSSL的应用程序可以在FIPS模式下运行。

    有关FIPS及其在OpenSSL中的实现的一般信息,这些参考可能会有所帮助:

    • 美国国家标准技术研究院FIPS PUB 140-2
    • OpenSSL FIPS 140-2安全策略
    • OpenSSL FIPS对象模块v2.0用户指南
    重要

    FIPS模式对加密操作施加了条件,例如对可接受的加密算法的限制或对更长密钥长度的要求。对于OpenSSL,确切的FIPS行为取决于OpenSSL版本。有关详细信息,请参阅《 OpenSSL FIPS用户指南》。

    MySQL中FIPS模式的系统要求

    为了使MySQL支持FIPS模式,必须满足以下系统要求:

    • 在构建时,必须使用OpenSSL编译MySQL。如果编译使用与OpenSSL不同的SSL库,则不能在MySQL中使用FIPS模式。

      另外,必须使用经认证可用于FIPS的OpenSSL版本来编译MySQL。OpenSSL 1.0.2已通过认证,但未通过OpenSSL 1.1.1。在某些平台上,使用OpenSSL 1.1.1编译了MySQL的最新版本的二进制发行版,这意味着它们未经FIPS认证。根据系统和MySQL配置,这会导致在可用的MySQL功能之间进行权衡:

      • 使用具有OpenSSL 1.0.2和必需的FIPS对象模块的系统。在这种情况下,如果您使用通过OpenSSL 1.0.2编译的二进制发行版,或者使用OpenSSL 1.0.2从源代码编译MySQL,则可以为MySQL启用FIPS模式。但是,在这种情况下,您不能使用TLSv1.3协议或密码套件(需要OpenSSL 1.1.1)。此外,您使用的OpenSSL版本已在2019年底达到使用寿命终止状态。
      • 使用具有OpenSSL 1.1.1或更高版本的系统。在这种情况下,您可以使用二进制软件包安装MySQL,并且可以使用TLSv1.3协议和密码套件,以及其他已经支持的TLS协议。但是,您不能为MySQL启用FIPS模式。
    • 在运行时,OpenSSL库和OpenSSL FIPS对象模块必须作为共享(动态链接)对象可用。可以建立静态链接的OpenSSL对象,但是MySQL不会使用它们。

    FIPS模式已针对EL7上的MySQL进行了测试,但可能在其他系统上运行。

    如果您的平台或操作系统提供了OpenSSL FIPS对象模块,则可以使用它。否则,您可以从源代码构建OpenSSL库和FIPS对象模块。使用《 OpenSSL FIPS用户指南》中的说明(请参阅《 FIPS概述》)。

    在MySQL中配置FIPS模式

    MySQL允许在服务器端和客户端上控制FIPS模式:

    • 所述ssl_fips_mode系统变量控制是否将服务器在FIPS模式操作。
    • --ssl-fips-mode客户端选项控制是否给定的MySQL客户端在FIPS模式下运行。

    ssl_fips_mode系统变量和--ssl-fips-mode客户端选项允许这些值:

    • OFF:禁用FIPS模式。
    • ON:启用FIPS模式。
    • STRICT:启用“严格” FIPS模式。

    在服务器端,数字ssl_fips_mode的值0,1和2是等同于OFFON,和STRICT,respectivey。

    重要

    通常,STRICT比施加更多的限制ON,但是MySQL本身没有FIPS专用代码,只能为OpenSSL指定FIPS模式值。FIPS模式的确切行为取决于ONSTRICT取决于OpenSSL版本。有关详细信息,请参阅《 OpenSSL FIPS用户指南》(请参阅FIPS概述)。

    注意

    如果OpenSSL的FIPS对象模块不可用时,对于唯一的允许值ssl_fips_mode--ssl-fips-modeOFF。尝试将FIPS模式设置为其他值时发生错误。

    服务器端的FIPS模式适用于服务器执行的加密操作。这包括在服务器中运行的复制(主/从复制和组复制)和X插件。

    FIPS模式也适用于客户端尝试连接到服务器的尝试。启用后,无论是在客户端还是在服务器端,它都会限制可以选择哪种受支持的加密密码。但是,启用FIPS模式并不要求必须使用加密的连接,也不需要加密用户凭据。例如,如果启用了FIPS模式,则需要更强大的加密算法。特别是MD5受限制,因此尝试使用诸如加密密码之类的方法来建立加密连接是RC4-MD5行不通的。但是FIPS模式没有什么可以防止建立未加密的连接。(为此,您可以将REQUIRE子句用于CREATE USERALTER USER(针对特定用户帐户),或将require_secure_transport系统变量设置为影响所有帐户。)