金仓数据库配置SSL单向认证

金仓数据库(KingbaseES)配置 SSL 加密连接,核心是修改服务端的 kingbase.conf 与 sys_hba.conf 两个文件,并准备好证书。整个过程主要围绕"开启开关、指定证书、强制加密"三步展开。

说明:配置 SSL 单向认证,核心是让服务器持有证书,客户端在连接时验证服务器身份,而无需客户端提供证书。

服务端配置步骤

1. 准备 SSL 证书

需要准备服务器私钥(server.key)、服务器证书(server.crt)以及根证书(root.crt)。如果是测试环境,可以用 OpenSSL 生成自签名证书;生产环境建议使用权威 CA 签发的证书。

关键注意点 :私钥文件的权限必须严格限制(如 chmod 600 server.key不允许全局或组用户的任何访问 ),否则数据库出于安全考虑会拒绝启动 SSL 服务。

补充:如果生产环境如果没有权威 CA 签发的证书,可和客户沟通使用OpenSSL 生成自签名证书。

扩展:使用 openssl工具生成证书

为root CA服务器生成私钥、自签名证书
生成根证书私钥

生成2048长度的rsa加密格式的非对称加密算法密钥。

复制代码
su - kingbase
openssl genrsa 2048 > rootca.key
ls -l rootca.key
使用根服务器的私钥生成自签名根证书

使用根服务器的私钥生成自签名根证书(编者注:证书是为公钥加上了数字签名)。

复制代码
openssl req -new -x509 -nodes -days 3600 -key rootca.key -out rootca.crt
ls -l rootca.crt

注: 执行命令时,所有选项默认回车即可。

为KES服务器生成私钥、证书请求文件、服务器证书
为KES服务器生成私钥、证书请求文件。
复制代码
openssl req -newkey rsa:2048 -nodes -keyout kesserver.key -out kesserver.csr
ls -l kesserver.*

注: 如果客户端 sslmode验证等级为verify-full,则会验证[common name】,这里填写服务器的名字或者也可以用 * 号代替表示不限制。

使用root CA的证书和根证书私钥来将KES服务器的证书请求文件,签署为KES服务器证书。

编者注: root CA的证书(自签名根证书),即带数字签名的root CA公钥。

复制代码
openssl x509 -req -in kesserver.csr -days 3600 -CA rootca.crt -CAkey rootca.key -set_serial 01 -out kesserver.crt
ls -l kesserver.crt

2. 数据库端配置

让KES 服务端支持 SSL/TLS。

将生成的相关证书拷贝到数据库 data目录

将以下生成的相关证书拷贝到数据库 data目录,并对证书私钥重新授权(一定要600权限,否则数据库无法启动)

  • 根证书 rootca.crt

  • KES服务器证书 kesserver.crt

  • KES服务器私钥 kesserver.key

    cp kesserver.crt sqlserver/sqlserver/
    cp kesserver.key sqlserver/sqlserver/
    chmod 600 sqlserver/sqlserver/kesserver.key
    ls -l sqlserver/sqlserver/kesserver.*

数据库kingbase.conf开启SSL相关参数配置

单向认证场景下,不要 配置 ssl_ca_file。

复制代码
ssl = on #开启ssl功能
#ssl_ca_file = 'rootca.crt' #指定根证书
ssl_cert_file = 'kesserver.crt' #指定服务器证书
ssl_key_file = 'kesserver.key' #指定服务器私钥
#ssl_crl_file = 'server.key'  #指定吊销证书,这里暂时不指定:需要重启数据库生效

数据库sys_hba.conf添加SSL访问路径

单向认证场景下,配置 clientcert=require, 用 require 模式, 服务器不会强制要求客户端出示证书。

复制代码
hostssl	all	all	0.0.0.0/0		scram-sha-256 clientcert=require

注: 1. 将原有的ipv4的默认访问条目注释掉。

  1. clientcert 指定 ssl的验证等级。

重启数据库

复制代码
sys_ctl restart

客户端连接验证

使用"ksql"以SSL方式连接到KES

客户端连接测试

复制代码
ksql -h 127.0.0.1 -p 54321 -U system -d test

使用"数据库对象管理工具"连接到KES

和没有开启连接KES步骤一样

其它应用软件如何配置SSL连接

说明:程序不需要修改,改URL连接串就行。开启SSL加密会有3%左右性能损耗,其他没有什么影响

2、应用j连接串配置。

  1. jdbc连接串配置

    #增加sslmode=verify-require参数
    jdbc:kingbase8://vip:54321/databasename?sslmode=verify-require

  2. Kdbndp驱动连接串配置

    SSL Mode SslMode Prefer SSL 模式:Disable/Allow/Prefer/Require/VerifyCA/VerifyFull
    SSL Certificate string --- 客户端证书路径
    SSL Key string --- 客户端证书私钥路径
    SSL Password string --- 客户端证书私钥密码

    测试环境可以使用:
    Server=127.0.0.1;Port=54321;Database=testdb;User Id=SYSTEM;Password=Kingbase123;
    SSL Mode=Require;Trust Server Certificate=true;

    生产环境:
    Server=kb-prod;Port=54321;Database=bizdb;User Id=produser;Password=xxx;
    SSL Mode=Require;Trust Server Certificate=false;Check Certificate Revocation=false;

    优先 SSL,服务器不支持 SSL 则降级明文:
    Server=192.168.1.100;Port=54321;Database=mydb;User Id=user1;Password=pwd1;
    SSL Mode=Prefer;Trust Server Certificate=true;

参考链接:金仓数据库 SSL 配置指南:5 步搞定安全连接 -- 数据库平替用金仓

相关推荐
正在走向自律6 天前
KingbaseES 列存储踩坑记:cstore_fdw 建表灌数全过程,以及数据改不动怎么办
数据库·国产数据库·kingbasees·金仓数据库·列存储
福娃筱欢9 天前
57014 canceling statement due to user request(金仓 KingbaseES)
数据库·kingbase·金仓数据库
承渊政道1 个月前
数据库系统级调优与评测:基于生产Capture的完整重放技术
数据库优化·金仓数据库
云边有个稻草人1 个月前
SQL Server数据库迁移:KES V9R4C019深度兼容实践
数据库迁移·金仓数据库·kdms迁移工具·sqlserver数据库迁移·kesv9r4c019·数据库国产化替代·tsql兼容
云边有个稻草人1 个月前
异构数据同步如何做到“数据无忧”?KFS全周期一致性校验与自动修复技术解析
数据一致性·金仓数据库·kfs·异构数据同步·自动数据修复·不停机迁移
承渊政道1 个月前
从事务号回卷到更大编号空间:读懂金仓V9的64位XID
金仓数据库·v9·回卷机制·数据库稳定
云边有个稻草人1 个月前
SQL Server数据库迁移:金仓KES V9R4C019以深度T‑SQL兼容实现应用极简改造
merge·金仓数据库·数据库国产化·sql server数据库迁移·kes v9r4c019·t‑sql兼容·数据库迁移实践