要使用加密连接传输复制过程中所需的二进制日志,源服务器和副本服务器都必须支持加密的网络连接。如果任一服务器都不支持加密连接(因为它没有为它们编译或配置),则不可能通过加密连接进行复制。
为复制设置加密连接与为客户机/服务器连接设置加密连接类似。您必须获得(或创建)可以在源上使用的合适的安全证书,并在每个副本上获得类似的证书(来自相同的证书颁发机构)。您还必须获取合适的密钥文件。
有关为加密连接设置服务器和客户机的详细信息,请参见第6.3.1节,“配置MySQL使用加密连接”.
要在源上启用加密连接,必须创建或获取合适的证书和密钥文件,然后将以下配置参数添加到源的配置中(mysqld)
来源的部分my.cnf
文件,根据需要更改文件名:
(mysqld) ssl_ca = cacert。pem ssl_cert = server-cert。pem ssl_key = server-key.pem
文件的路径可以是相对的,也可以是绝对的;为此,我们建议您始终使用完整路径。
配置参数如下:
ssl_ca
: CA证书文件的路径名称。(ssl_capath
类似,但指定了CA证书文件目录的路径名称。)ssl_cert
:服务器公钥证书文件的路径名称。可以将此证书发送给客户端,并根据其拥有的CA证书进行身份验证。ssl_key
:服务器私钥文件所在路径。
要在副本上启用加密连接,请使用将复制源更改为
语句(来自MySQL 8.0.23)或改变主
语句(MySQL 8.0.23之前)。中的加密连接所需的副本证书和SSL私钥文件(客户端)
复制品的一部分my.cnf
文件,或者可以使用将复制源更改为
|改变主
声明。
要使用选项文件命名副本的证书和密钥文件,请将以下行添加到
(客户端)
复制品的一部分my.cnf
文件,根据需要更改文件名:[客户]ssl-ca = cacert。pem ssl-cert = client-cert。pem ssl密钥= client-key.pem
重新启动副本服务器,使用
——skip-slave-start
选项,或者在MySQL 8.0.24中skip_slave_start
系统变量,以防止副本连接到源。使用将复制源更改为
|改变主
来指定源配置,并添加MASTER_SSL
使用加密连接的选项:mysql>修改MASTER为:> MASTER_HOST='source_hostname', > MASTER_USER='repl', > MASTER_PASSWORD='密码”,——> MASTER_SSL = 1;更改复制源为-> SOURCE_HOST='source_hostname', -> SOURCE_USER='repl', -> SOURCE_PASSWORD='密码”,——> SOURCE_SSL = 1;
设置
SOURCE_SSL = 1
|MASTER_SSL = 1
,则不再设置SOURCE_SSL_
|xxx
MASTER_SSL_
选项对应于设置xxx
——ssl-mode =要求
对于客户端,如加密连接的命令选项.与SOURCE_SSL = 1
|MASTER_SSL = 1
,只有在可以建立加密连接的情况下,连接尝试才会成功。复制连接不会回退到未加密连接,因此没有对应于——ssl-mode =首选
设置复制。如果SOURCE_SSL = 0
|MASTER_SSL = 0
,这对应于——ssl-mode =禁用
.方法命名副本的证书和SSL私钥文件
将复制源更改为
|改变主
语句,如果您没有在副本中这样做my.cnf
文件,添加适当的SOURCE_SSL_
|xxx
MASTER_SSL_
选项:xxx
-> MASTER_SSL_CA = 'ca_file_name', -> MASTER_SSL_CAPATH = 'ca_directory_name', -> MASTER_SSL_CERT = 'cert_file_name', -> MASTER_SSL_KEY = 'key_file_name',
这些选项对应于
——ssl
中描述的具有相同名称的选项加密连接的命令选项.为了使这些选项生效,xxx
MASTER_SSL = 1
也必须设置。对于复制连接,请为其中之一指定值MASTER_SSL_CA
或MASTER_SSL_CAPATH
,或者在副本中指定这些选项my.cnf
文件,对应于设置——ssl-mode = VERIFY_CA
.只有在使用指定的信息找到有效的匹配证书颁发机构(CA)证书时,连接尝试才会成功。要激活主机名身份验证,请添加
MASTER_SSL_VERIFY_SERVER_CERT
选择:- > MASTER_SSL_VERIFY_SERVER_CERT = 1,
此选项对应于
——ssl-verify-server-cert
选项,在MySQL 5.7中已弃用,在MySQL 8.0中已移除。对于复制连接,指定MASTER_SSL_VERIFY_SERVER_CERT = 1
对应于设置——ssl-mode = VERIFY_IDENTITY
,如加密连接的命令选项.为了使该选项生效,MASTER_SSL = 1
也必须设置。主机名身份验证不能用于自签名证书。要激活证书吊销列表(CRL)检查,需要添加
MASTER_SSL_CRL
或MASTER_SSL_CRLPATH
选择:-> MASTER_SSL_CRLPATH = 'crl_directory_name';
这些选项对应于
——ssl
中描述的具有相同名称的选项加密连接的命令选项.如果不指定它们,则不进行CRL检查。xxx
要指定副本允许用于复制连接的密码、密码套件和加密协议列表,请使用
MASTER_SSL_CIPHER
,MASTER_TLS_VERSION
,MASTER_TLS_CIPHERSUITES
选项:-> MASTER_SSL_CIPHER = 'cipher_list', -> MASTER_TLS_VERSION = 'protocol_list', -> MASTER_TLS_CIPHERSUITES = 'ciphersuite_list'
的
MASTER_SSL_CIPHER
选项指定复制连接允许的一个或多个密码的冒号分隔列表。的
MASTER_TLS_VERSION
选项指定副本允许的用于复制连接的TLS加密协议的逗号分隔列表,格式类似于用于tls_version
服务器系统变量。连接过程协商使用源和副本都允许的最高TLS版本。为了能够连接,副本必须至少有一个与源相同的TLS版本。的
MASTER_TLS_CIPHERSUITES
option(可从MySQL 8.0.19中获得)指定一个冒号分隔的一个或多个密码套件列表,如果复制连接使用TLSv1.3,这些密码套件是由副本允许的。如果该选项设置为零
当使用TLSv1.3时(如果不设置该选项,则为默认值),默认启用的密码套件是允许的。如果将该选项设置为空字符串,则不允许使用密码套件,因此不使用TLSv1.3。
您可以在这些列表中指定的协议、密码和密码套件依赖于用于编译MySQL的SSL库。有关格式、允许的值以及在未指定选项时的默认值的信息,请参见第6.3.2节,“加密连接TLS协议和密码”.
请注意在MySQL 8.0.16到8.0.18中,MySQL支持TLSv1.3,但是
MASTER_TLS_CIPHERSUITES
选项不可用。在这些版本中,如果TLSv1.3用于源和副本之间的连接,源必须允许使用至少一个默认启用的TLSv1.3密码套件。在MySQL 8.0.19中,您可以使用该选项来指定任何选择的密码套件,如果需要的话,只包括非默认的密码套件。更新源信息后,在副本上启动复制进程:
mysql >开始的奴隶;或者从MySQL 8.0.22: MySQL > START REPLICA;
在副本上要求加密连接不能确保源需要来自副本的加密连接。如果要确保源只接受使用加密连接连接的副本,请在源上使用
需要SSL
选项,然后授予该用户复制的奴隶
特权。例如:创建用户“repl”@“%.example.com”IDENTIFIED BY密码' ->请求ssl;mysql>授权复制从站。* -> TO 'repl'@'%.example.com';
如果源上有现有的复制用户帐户,则可以添加
需要SSL
我要对它说:mysql> ALTER USER 'repl'@'%.example.com'需要SSL;