SSL属于传输加密,在服务器端和客户端建立加密通信渠道来保证数据安全,防止数据在网络传输过程中被篡改和拦截。SSL加密可以使用第三方证书机构颁发的数字证书,也可以使用自签名证书。这里我们使用自签名证书。
现场是V8R3一主一从集群模式,集群模式相较于单机主要是sys_hba.conf的配置要注意,主备机都需要同步证书并修改配置
openssl version
若没有安装
yum -y install openssl
yum -y install openssl-devel
cd 到数据目录
openssl req -new -text -out server.req -days 36500
openssl rsa -in privkey.pem -out server.key
rm -f privkey.pem
openssl req -x509 -in server.req -text -key server.key -out server.crt -days 36500
chmod og-rwx server.key
cp server.crt root.crt
chmod 600 server.crt root.crt server.key
cd /home/kingbase
mkdir .kingbase
chmod 0700 .kingbase
cd .kingbase
生成kingbase8.key
将第一步data下创建的root.crt文件和server.key文件cp到.kingbase目录下
openssl genrsa -des3 -out kingbase.key 1024
openssl rsa -in kingbase.key -out kingbase.key
chmod 400 kingbase.key
生成kingbase8.csr,CN需要指定为要连接数据库的用户名system(需要免密登录的话必须指定正确,不需要的话并不强制确定)
openssl req -new -key kingbase.key -out kingbase.csr -subj '/C=GB/ST=Berkshire/L=Newbury/O=Kingbase/CN=system' -days 36500
生成kingbase8.crt
openssl X509 -sha1 -req -in kingbase.csr -CA root.crt -CAkey server.key -out kingbase.crt -CAcreateserial -days 36500
生成kingbase8.pk8
openssl pkcs8 -topk8 -outform DER -in kingbase.key -out kingbase.pk8 -nocrypt
用金仓的管理工具连接此库需要kingbase.pk8 (密钥)、kingbase.crt(证书)、root.crt(CA证书)
cd /home/kingbase/.kingbase
chmod 600 *
主备数据库kingbase.conf参数修改(集群的话,主备机data/kingbase.conf和etc/kingbase.conf需要保持一致)
ssl = on
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
ssl_ca_file = 'root.crt'
主备机修改sys_hba.conf,增加如下内容
##SYSTEM用户不用ssl验证,避免流复制、物理逻辑备份受影响
host all SYSTEM 192.168.233.0/24 md5
##SUPERMANAGER_V8ADMIN不用ssl验证,避免kingbasecluster检查数据库状态受影响
host all SUPERMANAGER_V8ADMIN 192.168.233.0/24 md5
##其他用户均强制使用ssl验证
hostssl all all 0.0.0.0/0 md5 clientcert=1
sys_ctl restart -D 数据目录
kingbase_monitor stop
kingbase_monitor start
使用jdbc连接配置:
连接串后加参数并将root.crt、server.crt、server.crt上传到项目的主目录
sslmode=verify-ca&sslrootcert=root.crt&sslcert=server.crt&sslkey=server.crt
注意:如果是原生pg的驱动可以使用root.crt、server.crt、server.crt;
但如果是金仓的驱动需要使用kingbase.crt 、kingbase.pk8、 root.crt