背景
TiDB 数据库默认允许不安全(unencrypted/plaintext)连接,即客户端与服务端之间的通信不加密,这意味着如果网络渠道可以被第三方监听。漏扫软件会扫描出一些安全漏洞,存在一些安全隐患,需要做安全加固,不安全连接容易造成信息泄露,建议使用 TLS 连接确保安全性。
平凯数据库服务端支持启用基于 TLS(传输层安全)协议的安全连接,协议与 MySQL 安全连接一致,现有 MySQL Client 如 MySQL Shell 和 MySQL 驱动等能直接支持。
本文总结TLS的常用方法。
开启/关闭集群TLS
开启集群TLS的命令
tiup cluster tls tidb-test enable
关闭集群TLS命令
tiup cluster tls tidb-test disable
开启集群TLS后,连接pd需要使用证书
tiup ctl:v8.5.3 pd -u https://IP:2379 --cacert=/home/tidb/.tiup/storage/cluster/clusters/tidb-test/tls/ca.crt --cert=/home/tidb/.tiup/storage/cluster/clusters/tidb-test/tls/client.crt --key=/home/tidb/.tiup/storage/cluster/clusters/tidb-test/tls/client.pem config show
使用原有证书开启TLS
手动生成证书,不使用tiup生成证书
生成证书的有效期可以手动设定
openssl genrsa -out ca.pem 4096
openssl req -new -x509 -days 1000 -key ca.pem -out ca.crt
openssl genrsa -out client.pem 2048
openssl req -new -key client.pem -out client.csr
openssl x509 -req -days 365 -CA ca.crt -CAkey ca.pem -CAcreateserial -in client.csr -out client.crt
将生成的证书放在tiup目录下
mkdir -p ~/.tiup/storage/cluster/clusters/cluster_name/tls
cp ca.crt ~/.tiup/storage/cluster/clusters/cluster_name/tls/ca.crt
cp ca.pem ~/.tiup/storage/cluster/clusters/cluster_name/tls/ca.pem
cp client.crt ~/.tiup/storage/cluster/clusters/cluster_name/tls/client.crt
cp client.pem ~/.tiup/storage/cluster/clusters/cluster_name/tls/client.pem
缩容pd为一个节点,开启tls
tiup cluster tls tidb-test enable
查看证书有效期
ca证书有效期为50年,client证书有效期10年
[tidb@vm tls]$ openssl x509 -in client.crt -noout -dates
notBefore=Dec 31 07:35:55 2025 GMT
notAfter=Dec 29 07:35:55 2035 GMT
[tidb@vm tls]$ openssl x509 -in ca.crt -noout -dates
notBefore=Dec 31 07:35:55 2025 GMT
notAfter=Dec 19 07:35:55 2075 GMT
生成客户端证书
生成该证书对应的私钥:
openssl genrsa -out new-client.pem 2048
生成证书请求文件
openssl req -new -key new-client.pem -out new-client.csr
签发生成证书
openssl x509 -req -days 365 -CA ca.crt -CAkey ca.pem -CAcreateserial -in new-client.csr -out new-client.crt
总结
1、集群开启TLS时,可以用tiup自动生成,也可手动生成证书;
2、可以手动设置证书有效期限。