kingbase ssl认证

本文详细介绍了数据库SSL证书的生成与配置过程。包括查看openssl是否安装,生成服务端和客户端证书,移去密钥,将证书变成自签名证书等步骤。还说明了证书配置、修改参数文件和sys_hba.conf文件,以及不同客户端(ksql、客户端管理工具、jdbc)的配置方法和sslmode参数选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看openssl是否安装
openssl version

服务端证书
在 data 目录下创建自签名的证书,为服务器创建一个快速的自签名的证书,填充 openssl 要求的信息。确保把本地主机名当做” Common Name” 输入;”challenge password” 可以留空。该程序将生成一个用口令保护的密钥,它不会接受小于四字符的口令
openssl req -new -text -out server.req
Generating a 2048 bit RSA private key
…+++
…+++
writing new private key to ‘privkey.pem’
Enter PEM pass phrase:123456
Verifying - Enter PEM pass phrase:123456You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.Country Name (2 letter code) [XX]:CNState or Province Name (full name) []:BJLocality Name (eg, city) [Default City]:BJOrganization Name (eg, company) [Default Company Ltd]:KBOrganizational Unit Name (eg, section) []:KBCommon Name (eg, your name or your server’s hostname) []:CAEmail Address []:Please enter the following ‘extra’ attributesto be sent with your certificate requestA challenge password []:An optional company name []:

要移去密钥(如果需要自动启动服务器,就必须执行此操作)
openssl rsa -in privkey.pem -out server.key
rm privkey.pem

将一个证书变成自签名的证书,并复制密钥和证书到服务器将要查找它们的地方
openssl req -x509 -days 3650 -in server.req -text -key server.key -out server.crt

修改文件权限,如果文件的权限高于 “og-rwx”,服务器将拒绝该文件
chmod og-rwx server.key

生成根证书
cp server.crt root.crt

客户端证书
创建目录,将服务端生成的证书cp到该目录下
mkdir -p /home/kingbase/.kingbase
chmod -R 0700 /home/kingbase/.kingbase
cd /home/kingbase/.kingbase
cp server.key server.req server.crt root.crt /home/kingbase/.kingbase #证书权限均为600

在数据库的 data 目录下,为客户端创建所需证书,生成 Kingbase8.key 客户端私钥文件
openssl genrsa -des3 -out kingbase8.key 1024
Generating RSA private key, 1024 bit long modulus…++++++…++++++e is 65537 (0x10001)Enter pass phrase for kingbase8.key:123456Enter pass phrase for kingbase8.key:123456Verifying - Enter pass phrase for kingbase8.key:

要移去密钥(如果需要自动启动服务器,就必须执行此操作)
openssl rsa -in kingbase8.key -out kingbase8.key
chmod 400 kingbase8.key

生成 kingbase8.csr, CN 需要指定为要连接数据库的用户名(如 system),如需匹配不同的用户,可以指定为”*” (需要免密登录的话必须指定正确,不需要的话并不强制确定)
openssl req -new -key kingbase8.key -out kingbase8.csr -subj ‘/C=GB/ST=Berkshire/L=Newbury/O=Kingbase/CN=system’

生成 kingbase8.crt 客户端证书(公钥)
openssl x509 -req -days 3650 -in kingbase8.csr -CA root.crt -CAkey server.key -out kingbase8.crt -CAcreateserial

如果使用 JDBC 接口,则需额外执行以下步骤完成私钥转 pkcs 格式 (其它接口请忽略):生成 kingbase8.pk8
openssl pkcs8 -topk8 -outform DER -in kingbase8.key -out kingbase8.pk8 -nocrypt

证书配置
完成生成证书步骤后,直接将客户端证书文件 kingbase8.crt、kingbase8.key 以及 root.crt 拷贝放至客户端相应目录下

修改参数文件
ssl = on
ssl_cert_file = ‘server.crt’
ssl_key_file = ‘server.key’
ssl_ca_file = ‘root.crt’

修改 sys_hba.conf 文件
单机
hostssl all all 0.0.0.0/0 md5 clientcert=1

集群
host all SUPERMANAGER_V8ADMIN 192.16810.0/24 md5
host TEST SYSTEM 192.168.10.0/24 md5
hostssl all all 0.0.0.0/0 md5 clientcert=1
hostssl all all 0.0.0.0/0 md5 clientcert=verify-full
注:sys_hba.conf指定的ip只能通过ssl方式连接数据库。没有指定ip的客户端可以通过ip连接,需要为集群的用户单独开辟不走ssl的入口,通过配置ssl证书也可以通过ssl连接,

重启数据库服务器,如果重启失败
解决方法:
配置环境变量:echo “export OPENSSL_CONF=/etc/ssl” >> ~/.bashrc

客户端配置过程
ksql 方式
使用ksql方式验证ssl的话,需要在当前操作系统家目录下创建.kingbase 的隐藏文件夹,将生成的root根证书和client客户端证书以及密钥等拷贝到这个目录下
注:客户端证书,客户端密钥,客户端pkcs8格式的密钥等文件的名字必须是kingbase,例如:kingbase.crt,kingbase.key,kingbase.pk8 否则识别不到证书

使用ksql方式验证ssl的话,需要在当前操作系统家目录下创建.kingbase 的隐藏文件夹,
然后将前面生成的root根证书和client客户端证书以及密钥等拷贝到这个目录下
注:客户端证书,客户端密钥,客户端pkcs8格式的密钥等文件的名字必须是kingbase,例如:kingbase.crt,kingbase.key,kingbase.pk8 否则识别不到证书

通过客户端管理工具
只需要将root根证书,客户端证书client.crt, 客户端pk8格式密钥拷贝到运行客户端管理工具的电脑上,可以放置在任何可以访问到的位置,然后客户端通过ssl选项选择对应的证书即可

通过jdbc
需要用JDBC时SSL的配置如下
jdbc:
通过参数sslmode配置证书验证方式,该参数支持四个值:disable(禁用SSL)、require、verify-ca、verify-full。使用verify-ca和verify-full时,
需通过连接参数sslrootcert指定根证书文件的位置,如不指定,Linux默认路径为$HOME/.kingbase8/root.crt,
Windows默认路径为%APPDATA%\kingbase8\root.crt,将服务器data目录下的root.crt放到对应目录下即可。
举例:jdbc:kingbase8://192.168.222.128:54321/TEST?usessl=true&sslmode=verify-ca&sslrootcert=root.crt&sslcert=kingbase8.crt&sslkey=kingbase8.pk8

sslmode参数的配置选项:
disable
不使用SSL安全连接。
allow
如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。
prefer
如果数据库支持,那么首选使用SSL安全加密连接,但不验证数据库服务器的真实性。
require
必须使用SSL安全连接,但是只做了数据加密,而并不验证数据库服务器的真实性。
verify-ca
必须使用SSL安全连接,并且验证数据库是否具有可信证书机构签发的证书。
verify-full
必须使用SSL安全连接,在verify-ca的验证范围之外,同时验证数据库所在主机的主机名是否与证书内容一致。如果不一致,需要使用root用户修改/etc/hosts文件,将连接的数据库节点的IP地址和主机名加入

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值