加密PXC流量¶
在Percona XtraDB集群中有两种流量:雷竞技下载官网
雷竞技下载官网Percona XtraDB集群支持所有类型的流量加密。复制流量加密可以自动配置,也可以手动配置。
加密客户端-服务器通信¶
雷竞技下载官网Percona XtraDB Cluster使用底层的MySQL加密机制来保护客户端应用程序和集群节点之间的通信。
MySQL生成默认的密钥和证书文件,并将它们放在data目录中。您可以用手动创建的文件覆盖自动生成的文件,如本节所述手动生成密钥和证书。
自动生成的文件适用于自动SSL配置,但是您应该在所有节点上使用相同的密钥和证书文件。
中指定以下设置my.cnf各节点配置文件:
(mysqld) ssl-ca = / etc / mysql /证书/ ca。pem ssl-cert = / etc / mysql /证书/ server-cert。pem ssl密钥= / etc / mysql /证书/服务器密钥。Pem [client] ssl-ca=/etc/mysql/certs/ca. Pem [client] ssl-ca=/etc/mysql/certs/ca. Pempem ssl-cert = / etc / mysql /证书/ client-cert。pem ssl密钥= / etc / mysql /证书/ client-key.pem
重启后,节点使用这些文件加密与客户端的通信。MySQL客户端只需要第二部分配置就可以与集群节点通信。
MySQL生成默认的密钥和证书文件,并将它们放在data目录中。您可以使用它们,也可以生成新的证书。有关新证书的生成,请参阅手动生成密钥和证书部分。
加密复制流量¶
每种类型的流量通过不同的通道传输,因此为所有3种变体配置安全通道以完全保护复制流量非常重要。
雷竞技下载官网Percona XtraDB Cluster支持单一配置选项,该选项有助于保护完整的复制流量,通常称为SSL自动配置。您也可以通过指定单独的参数来配置每个通道的安全性。
SSL自动配置¶
SSL加密的自动配置需要密钥和证书文件。MySQL生成一个默认的密钥和证书文件,并将它们放在data目录中。
重要的
您的集群在所有节点上使用相同的SSL证书是很重要的。
启用pxc-encrypt-cluster-traffic¶
雷竞技下载官网Percona XtraDB集群包括pxc-encrypt-cluster-traffic变量,允许自动配置SSL加密—通过加密风场,坚持、复制流量。
默认情况下,pxc-encrypt-cluster-traffic因此使用安全的复制通道启用。此变量不是动态的,因此不能在运行时更改。
启用,pxc-encrypt-cluster-traffic具有应用以下设置的效果:加密, ssl_key, ssl-ca, ssl-cert。
设置pxc-encrypt-cluster-traffic =对中应用下列设置是否有效my.cnf配置文件:
(mysqld) wsrep_provider_options = " socket.ssl_key = server-key.pem; socket.ssl_cert = server-cert.pem; socket.ssl_ca = ca。Pem " [sst] encrypt=4 ssl-key=server-key。pem ssl-ca = ca。pem ssl-cert = server-cert.pem
为wsrep_provider_options,只会影响上述选项(socket.ssl_key,套接字,ssl_cert,socket.ssl_ca),其余部分未作修改。
重要的
禁用pxc-encrypt-cluster-traffic
的默认值pxc-encrypt-cluster-traffic有助于提高系统的安全性。
当pxc-encrypt-cluster-traffic未启用时,任何访问您的网络的人都可以连接到任何PXC节点,无论是作为客户端还是作为加入集群的另一个节点。这可能会让他们查询你的数据或获得数据的完整副本。
如果你必须禁用pxc-encrypt-cluster-traffic,则需要停止集群并更新(mysqld)配置文件的部分:pxc-encrypt-cluster-traffic =了每个节点。然后重新启动集群。
SSL加密的自动配置需要密钥和证书文件。MySQL生成默认的密钥和证书文件,并将它们放在data目录下。这些自动生成的文件适用于自动SSL配置,但是您应该在所有节点上使用相同的密钥和证书文件。您还可以用手动创建的文件覆盖自动生成的文件,如手动生成密钥和证书。
必需的密钥和证书文件首先在ssl-ca,ssl-cert,ssl密钥选择下(mysqld)。如果没有设置这些选项,则搜索数据目录ca.pem,server-cert.pem,server-key.pem文件。
请注意
的(不锈钢)部分不被搜索。
如果找到这三个文件,就使用它们来配置加密。如果缺少任何文件,就会生成一个致命错误。
SSL手动配置¶
如果用户希望仅对特定通道启用加密或使用不同的证书或其他混合匹配,则用户可以选择手动配置。这有助于为最终用户提供更大的灵活性。
要手动启用加密,必须在Percona XtraDB Cluster配置中指定所需密钥和证书文件的位置。雷竞技下载官网如果没有必要的文件,请参见手动生成密钥和证书。
请注意
加密设置不是动态的。要在正在运行的集群上启用它,需要重新启动整个集群。
Percona XtraDB集群操作有三个方面,您可以雷竞技下载官网在其中启用加密:
加密SST流量¶
这是指通常发生在新节点(JOINER)加入集群并从现有节点(DONOR)接收数据时的完整数据传输。
有关更多信息,请参见状态快照传输。
请注意
如果keyring_file如果使用了插件,则必须使用SST加密:当通过SST复制加密数据时,必须将密匙环与文件一起发送以进行解密。在这种情况下,将设置以下选项my.cnf在所有节点上:
early-plugin-load = keyring_file。所以keyring-file-data = /道路/ /密匙环/文件
如果节点之间的keyring配置不同,集群将无法工作。
唯一可用的SST方法是xtrabackup-v2它使用雷竞技下载官网Percona XtraBackup。
xtrabackup¶
这是唯一可用的SST方法wsrep_sst_method总是设置为xtrabackup-v2),它使用Percona X雷竞技下载官网traBackup来执行无阻塞的文件传输。有关更多信息,请参见雷竞技下载官网Percona XtraBackup SST配置。
方法选择此方法的加密模式加密选择:
加密= 0为默认值,即禁用加密。加密= 4启用基于OpenSSL生成的密钥和证书文件进行加密。有关详细信息,请参见手动生成密钥和证书。
要使用XtraBackup为SST启用加密,请在每个节点的配置中指定密钥和证书文件的位置(不锈钢):
[sst] encrypt=4 ssl-ca=/etc/mysql/certs/ca。pem ssl-cert = / etc / mysql /证书/ server-cert。pem ssl密钥= / etc / mysql /证书/服务器密钥。pem
请注意
SSL客户端要求DH参数至少为1024位僵局的脆弱性。但是,socat1.7.3之前使用512位参数。如果一个dhparams.pem在SST期间在数据目录中没有找到所需长度的文件,它是用2048位生成的,这可能需要几分钟。要避免此延迟,请创建dhparams.pem在节点加入集群之前,手动文件并将其放入data目录:
openssldhparam两级/ / datadir / dhparams.pem /路径2048
有关更多信息,请参见这篇博文。
加密复制/IST流量¶
复制流量指的是:
写集复制,这是Percona XtraDB Cluster的主要工作负载(将在一个节点上执行的事务复制到雷竞技下载官网所有其他节点)。
增量状态传输(坚持),只将缺失的事务从DONOR复制到JOINER节点。
确保所有节点同步的服务消息。
所有这些流量都通过相同的底层通信信道传输(gcomm).保护这条通道就能确保坚持流量、写集复制和业务消息都是加密的。(对于IST,使用相同的配置参数配置单独的通道,因此两个部分一起描述)。
要为所有这些进程启用加密,请使用以下命令定义密钥、证书和证书颁发机构文件的路径wsprep提供程序选项:
要设置这些选项,请使用wsrep_provider_options配置文件中的变量:
wsrep_provider_options=“socket.ssl =是的,socket.ssl_ca = / etc / mysql /证书/ ca.pem; socket.ssl_cert = / etc / mysql /证书/ server-cert.pem; socket.ssl_key = / etc / mysql /证书/ server-key.pem”
请注意
您必须在所有节点上使用相同的密钥和证书文件,最好是用于加密客户端-服务器通信。
检查upgrade-certificate部分介绍如何升级现有证书。
手动生成密钥和证书¶
如上所述,MySQL生成默认密钥和证书文件,并将它们放在data目录中。如果您想覆盖这些证书,可以生成以下新文件集:
CA (Certificate Authority)密钥和证书对服务器证书和客户端证书进行签名。
服务器密钥和证书保护数据库服务器活动和写设置复制流量。
客户端密钥和证书保护客户端通信流量。
这些文件应该使用OpenSSL。
请注意
的普通的名字用于服务器和客户端密钥和证书的值必须与用于CA证书的值不同。
证书颁发机构用于验证证书上的签名。
生成CA密钥文件:
美元opensslgenrsa2048>ca-key.pem生成CA证书文件:
美元openssl要求的事情不管是新x509节点天3600关键ca-key.pem两级ca.pem
生成服务器密钥文件:
美元openssl要求的事情newkeyrsa: 2048天3600\节点-keyoutserver-key.pem两级server-req.pem删除密码短语:
美元opensslrsa——server-key.pem两级server-key.pem生成服务器证书文件:
美元opensslx509要求的事情——server-req.pem天3600\caca.pem凝固了的ca-key.pem-set_serial01\两级server-cert.pem
生成客户端密钥文件:
美元openssl要求的事情newkeyrsa: 2048天3600\节点-keyoutclient-key.pem两级client-req.pem删除密码短语:
美元opensslrsa——client-key.pem两级client-key.pem生成客户端证书文件:
美元opensslx509要求的事情——client-req.pem天3600\caca.pem凝固了的ca-key.pem-set_serial01\两级client-cert.pem
验证证书¶
使用实例验证CA证书对服务端证书和客户端证书的签名是否正确。
美元openssl验证-CAfileca.pemserver-cert.pemclient-cert.pem
如果验证成功,界面回显如下:
server-cert.pem:OK client-cert.pem: OK
匹配CN导致验证失败¶
有时,如果证书和CA文件内容相同,可能会导致SSL配置失败。
要检查是否是这种情况,请运行openssl执行如下命令并验证CN字段对于主题和发行人行。
美元opensslx509——server-cert.pem语境-noout
不正确的价值观
证书:数据:版本:1 (0x0)序列号:1 (0x1)签名算法:sha256WithRSAEncryption颁发者:CN=m.doggingzone.com, O=Database Performance。雷竞技下载官网c = us…主题:CN=www.percon雷竞技下载官网a.com, O=数据库性能。, c = au…
以获得更紧凑的输出运行openssl指定-subject和-issuer参数:
美元opensslx509——server-cert.pem主题发行人-noout
预期的输出
subject= /CN=www.雷竞技下载官网percona.com/O=Database性能。/C=AU issuer= /CN=www.雷竞技下载官网percona.com/O=Database Performance./C=US
部署密钥和证书¶
使用安全的方法(例如,scp或sftp),向每个节点发送密钥和证书文件。把它们放在/etc/mysql/certs/目录或类似的位置,您可以稍后找到它们。
请注意
请确保该目录具有适当的权限保护。最有可能的情况是,您只想给正在运行的用户授予读权限mysqld。
需要准备以下文件:
- 证书颁发机构证书文件(
ca.pem)
该文件用于验证签名。
- 服务器密钥及证书文件(
server-key.pem和server-cert.pem)
这些文件用于保护数据库服务器活动和写设置复制流量。
- 客户端密钥及证书文件(
client-key.pem和client-cert.pem)
只有当节点充当MySQL客户端时,才需要这些文件。例如,如果您计划执行SST使用, mysqldump。
请注意
升级证书如有必要,小节将介绍升级证书的详细信息。
升级证书¶
下面的步骤展示了当集群中有两个节点时,如何升级用于保护复制流量安全的证书。
方法重新启动第一个节点
socket.ssl_ca选项设置为单个文件中新旧证书的组合。例如,可以合并
old-ca.pem和new-ca.pem成upgrade-ca.pem如下:猫old-ca.pem>upgrade-ca.pem& &\猫new-ca.pem>>upgrade-ca.pem设置
wsrep_provider_options变量如下:wsrep_provider_options=“socket.ssl =是的,socket.ssl_ca = / etc / mysql /证书/ upgrade-ca.pem; socket.ssl_cert = / etc / mysql /证书/ old-cert.pem; socket.ssl_key = / etc / mysql /证书/ old-key.pem”方法重新启动第二个节点
socket.ssl_ca,socket.ssl_cert,socket.ssl_key选项设置为相应的新证书文件。wsrep_provider_options=“socket.ssl =是的,socket.ssl_ca = / etc / mysql /证书/ new-ca.pem; socket.ssl_cert = / etc / mysql /证书/ new-cert.pem; socket.ssl_key = / etc / mysql /证书/ new-key.pem”与上一步一样,使用新的证书文件重新启动第一个节点。
您可以删除旧的证书文件。