10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 36.3 mb
PDF (A4)- 36.3 mb
手册页(TGZ)- 236.9 kb
手册页(邮政编码)- 348.5 kb
信息(Gzip)- 3.3 mb
信息(邮政编码)- 3.3 mb
本手册节选

MySQL 5.7参考手册/.../ 配置MySQL使用加密连接

6.3.1配置MySQL使用加密连接

有几个配置参数可用于指示是否使用加密连接,以及指定适当的证书和密钥文件。本节提供了配置加密连接的服务器和客户端的一般指导:

加密连接也可以在其他上下文中使用,详见以下附加部分:

有关创建所需证书和密钥文件的说明可在第6.3.3节“创建SSL和RSA证书和密钥”

加密连接的服务器端启动配置

在服务器端——ssl选项指定服务器允许但不要求加密连接。默认情况下该选项是启用的,因此不需要显式指定它。

若要要求客户端使用加密连接进行连接,请启用require_secure_transport系统变量。看到配置加密连接为必选项

服务器端的这些系统变量指定了当允许客户端建立加密连接时服务器使用的证书和密钥文件:

  • ssl_ca: CA证书文件的路径名称。(ssl_capath类似,但指定CA证书文件目录的路径名称。)

  • ssl_cert:服务器公钥证书文件的路径名称。可以将该证书发送到客户机,并根据它所拥有的CA证书进行身份验证。

  • ssl_key:服务器私钥文件的路径名称。

例如,要启用加密连接的服务器,请使用my.cnf文件,根据需要更改文件名:

(mysqld) ssl_ca = ca。pem ssl_cert = server-cert。pem ssl_key =服务器密钥。pem

若要指定要求客户端使用加密连接,请启用require_secure_transport系统变量:

(mysqld) ssl_ca = ca。pem ssl_cert = server-cert。pem ssl_key =服务器密钥。pem require_secure_transport =对

每个证书和密钥系统变量以PEM格式命名一个文件。您是否需要创建所需的证书和密钥文件,请参见第6.3.3节“创建SSL和RSA证书和密钥”.使用OpenSSL编译的MySQL服务器可以在启动时自动生成丢失的证书和密钥文件。看到第6.3.3.1节“使用MySQL创建SSL和RSA证书和密钥”.或者,如果您有一个MySQL源发行版,您可以使用演示证书和其中的密钥文件来测试您的设置mysql-test / std_data目录中。

服务器自动发现证书和密钥文件。如果没有给出除。以外的显式加密连接选项——ssl(可能还有ssl_cipher)来配置加密连接,服务器会尝试在启动时自动启用加密连接支持:

  • 如果服务器发现有效的证书和密钥文件命名为ca.pemserver-cert.pem,server-key.pem在data目录中,它支持客户端加密连接。(文件不必是自动生成的;重要的是它们有这些名称并且是有效的。)

  • 如果服务器在数据目录中没有找到有效的证书和密钥文件,它将继续执行,但不支持加密连接。

如果服务器自动启用加密连接支持,它将向错误日志写入一个注释。如果服务器发现CA证书是自签名的,它将向错误日志写入警告。证书是自签名的,如果是由服务器自动创建或手动使用mysql_ssl_rsa_setup.)

MySQL还为服务器端加密连接控制提供了以下系统变量:

加密连接的客户端配置

有关与建立加密连接相关的客户端选项的完整列表,请参见加密连接的命令选项

默认情况下,如果服务器支持加密连接,MySQL客户端程序会尝试建立加密连接,并通过——ssl-mode选择:

,则建立未加密连接的尝试失败require_secure_transport在服务器端启用系统变量,导致服务器需要加密连接。看到配置加密连接为必选项

客户端上的下列选项标识客户端在建立到服务器的加密连接时使用的证书和密钥文件。它们类似于ssl_cassl_cert,ssl_key服务器端使用的系统变量,但是——ssl-cert而且——ssl密钥识别客户端公钥和私钥:

  • ——ssl-ca: CA证书文件的路径名称。如果使用此选项,则必须指定服务器使用的相同证书。(——ssl-capath类似,但指定CA证书文件目录的路径名称。)

  • ——ssl-cert:客户端公钥证书文件的路径名称。

  • ——ssl密钥:客户端私钥文件的路径名称。

对于相对于默认加密提供的额外安全性,客户端可以提供与服务器使用的证书匹配的CA证书,并启用主机名身份验证。通过这种方式,服务器和客户端将它们的信任放在同一个CA证书中,客户端验证它连接到的主机是否为预期的主机:

请注意

主机名身份验证VERIFY_IDENTITY不能使用由服务器自动创建或手动创建的自签名证书mysql_ssl_rsa_setup(见第6.3.3.1节“使用MySQL创建SSL和RSA证书和密钥”).这种自签名证书不包含作为Common name值的服务器名。

在MySQL 5.7.23之前,主机名身份验证也不能用于使用通配符指定Common name的证书,因为该名称是与服务器名称一字不差地比较的。

MySQL还为客户端加密连接控制提供了以下选项:

根据客户端使用的MySQL帐户的加密要求,客户端可能需要指定某些选项来使用加密连接到MySQL服务器。

假设您希望使用一个没有特殊加密要求的帐户进行连接,或者使用创建用户声明中包含需要SSL条款。假设服务器支持加密连接,客户机可以使用加密连接——ssl-mode选项或带有显式的——ssl-mode =球迷们选择:

mysql

或者:

mysql——ssl-mode =优先

创建的帐户需要SSL子句,如果无法建立加密连接,则连接尝试失败。对于没有特殊加密要求的帐户,如果无法建立加密连接,则尝试退回到未加密连接。为了防止回退并在无法获得加密连接时失败,请像这样连接:

mysql——ssl-mode =

如果帐户有更严格的安全要求,则必须指定其他选项以建立加密连接:

  • 创建的帐户需要X509子句,客户端必须至少指定——ssl-cert而且——ssl密钥.此外,——ssl-ca(或——ssl-capath),以便验证服务器提供的公共证书。例如(在单行中输入命令):

    mysql——ssl-ca = ca。pem - ssl-cert = client-cert。pem - ssl密钥= client-key.pem
  • 创建的帐户要求发行人要求主题子句时,加密要求与for相同需要X509,但证书必须分别与帐户定义中指定的问题或主题相匹配。

有关的更多信息需要条款,请参阅第13.7.1.2节,“CREATE USER语句”

防止使用加密和覆盖其他——sslxxx选项,调用客户机程序——ssl-mode =禁用

mysql——ssl-mode =禁用

文件的会话值,以确定当前与服务器的连接是否使用加密Ssl_cipher状态变量。如果该值为空,则表示未加密连接。否则表示加密连接,取值为加密密码。例如:

显示会话状态为Ssl_cipher;+---------------+---------------------------+ | Variable_name |值  | +---------------+---------------------------+ | Ssl_cipher | DHE-RSA-AES128-GCM-SHA256  | +---------------+---------------------------+

mysql客户端,另一种选择是使用状态\ s命令并检查SSL线:

mysql > \ s…SSL:未使用…

或者:

mysql > \ s…SSL: Cipher in use is DHE-RSA-AES128-GCM-SHA256…

配置加密连接为必选项

对于某些MySQL部署来说,使用加密连接可能不仅是必要的,而且是必须的(例如,为了满足法规要求)。本节讨论使您能够做到这一点的配置设置。以下是控制级别:

  • 您可以将服务器配置为要求客户端使用加密连接进行连接。

  • 您可以调用各个客户机程序来要求加密连接,即使服务器允许但不要求加密。

  • 您可以将单个MySQL帐户配置为只能在加密连接上使用。

若要要求客户端使用加密连接进行连接,请启用require_secure_transport系统变量。例如,将这些行放在服务器中my.cnf文件:

(mysqld) require_secure_transport =

require_secure_transport如果启用了,则客户机到服务器的连接需要使用某种形式的安全传输,并且服务器只允许使用SSL的TCP/IP连接,或者使用套接字文件(在Unix上)或共享内存(在Windows上)的连接。服务器拒绝不安全的连接尝试ER_SECURE_TRANSPORT_REQUIRED错误。

若要调用客户端程序,使其需要加密连接,无论服务器是否需要加密,请使用——ssl-mode期权的价值要求VERIFY_CA,或VERIFY_IDENTITY.例如:

mysql——ssl-mode=REQUIRED mysqldump——ssl-mode=VERIFY_CA mysqladmin——ssl-mode=VERIFY_IDENTITY

要将MySQL帐户配置为只能在加密连接上使用,需要包含需要条款的创建用户语句,创建帐户,并在该子句中指定所需的加密特征。例如,要要求加密连接并使用有效的X.509证书,请使用需要X509

CREATE USER 'jeffrey'@'localhost'

有关的更多信息需要条款,请参阅第13.7.1.2节,“CREATE USER语句”

若要修改没有加密要求的现有帐户,请使用改变用户声明。