为了保护敏感数据传输的安全性,GBase 8a MPP Cluster 支持通过 SSL 加密客户端和服务器之间的通讯。SSL 协议是一种安全性更高的协议标 准,它加入了数字签名和数字证书来实现客户端和服务器的双向身份验证,保证了 通信双方更加安全的数据传输。 前提条件: 加密功能要求系统中安装 openssl 库,能够执行 openssl 命令。
生成 SSL 连接证书操作步骤 :
在集群 server 端的系统中,根据需要选择生成 SSL 密钥的目录,以路径/usr/local/ssl为例。
生成 server 端的密钥和证书 :
步骤 1
执行如下命令,进入目录
$ cd /usr/local/ssl
步骤 2
生成 ca-cert.pem,需要填写 Country Name 等信息,可以按照下面方式填写
$ openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem >ca-cert.pem
生成密钥,同样填写一些信息,password 部分(A challenge password []: )建议填写复杂一些的密码。
$ openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout server-key.pem > server-req.pem
步骤 3
将 server-key.pem 导出为 RSA 类型。
$ openssl rsa -in server-key.pem -out server-key.pem
writing RSA key
步骤 4
生成 server-cert.pem。
$ openssl x509 -sha1 -req -in server-req.pem -days 730 -CA ca-cert.pem
-CAkey ca-key.pem -set_serial 01 > server-cert.pem
生成 client 端的密钥和证书 :
步骤 1
在同一目录下,生成 client 端的密钥和证书,生成密钥,输入信息与 server 端相同。
$ openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout client-key.pem > client-req.pem
步骤 2
将 client-key.pem 导出为 RSA 类型。
$ openssl rsa -in client-key.pem -out client-key.pem
writing RSA key
步骤 3
生成 client-cert.pem。
$ openssl x509 -sha1 -req -in client-req.pem -days 730 -CA ca-cert.pem
-CAkey ca-key.pem -set_serial 01 > client-cert.pem
server 配置 :
操作步骤
步骤 1
修改集群配置文件 gbase_8a_gcluster.cnf,在[gbased]里添加 ssl 信息。以路径
/usr/local/ssl 为例,添加示例如下:
$ vi $GCLUSTER_BASE/config/gbase_8a_gcluster.cnf
[client]
port=5258
socket=/tmp/gcluster_5258.sock
connect_timeout=43200
#default-character-set=gbk
[gbased]
basedir = /opt/gcluster/server
datadir = /opt/gcluster/userdata/gcluster
socket=/tmp/gcluster_5258.sock
pid-file = /opt/gcluster/log/gcluster/gclusterd.pid
#default-character-set=gbk
ssl-ca=/usr/local/ssl/ca-cert.pem
ssl-cert=/usr/local/ssl/server-cert.pem
ssl-key=/usr/local/ssl/server-key.pem
log-error
port=5258
core-fil
步骤 2
查看配置是否成功,重启集群。
#gcluster_services all restart
步骤 3
执行 gccli,登录集群。
$ gccli -uroot
GBase client 9.5.2.13.113642. Copyright (c) 2004-2020, GBase. All Rights Reserved.
步骤 4
查看 ssl 参数状态,配置成功则显示为“YES”。
gbase> show variables like 'have_%ssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_openssl | YES |
| have_ssl | YES |
+---------------+-------+
2 rows in set
client 配置 :
操作步骤
步骤 1
将 server 端生成的 ca-cert.pem,client-req.pem,client-key.pem,client-cert.pem 拷贝 到 client 端,修改集群配置文件 gbase_8a_gcluster.cnf,在[client]里添加 ssl 信息,以 路径/usr/local/ssl 为例,如下示例中横线划出所示:
$ vi $GCLUSTER_BASE /config/gbase_8a_gcluster.cnf
[client]
port=5258
socket=/tmp/gcluster_5258.sock
connect_timeout=43200
#default-character-set=gbk
ssl-ca=/usr/local/ssl/ca-cert.pem
ssl-cert=/usr/local/ssl/client-cert.pem
ssl-key=/usr/local/ssl/client-key.pem
[gbased]
basedir = /opt/gcluster/server
datadir = /opt/gcluster/userdata/gcluster
socket=/tmp/gcluster_5258.sock
pid-file = /opt/gcluster/log/gcluster/gclusterd.pid
#default-character-set=gbk
log-error
port=5258
core-file
步骤 2
通过 client 端远程访问 server。例如用 ssluser 用户登录 192.168.134.131 的 server:
[gbase@localhost config]$ gccli -h192.168.134.131 -ussluser -p
Enter password:
步骤 3
运行 status 命令,ssl 部分显示有“Cipher in use”,表示 ssl 加密连接成功,具体示例如下:
[gbase@localhost config]$ gccli -h192.168.134.131 -ussluser -p
Enter password:
步骤 4
如果 client 端没有进行上述配置,则仍然会按默认方式连接 server。可以通过如下参数,强制要求必须使用 SSL。
grant all on testdb.* to ssl_user require ssl ;




