GBase 8s
安装配置
文章

配置数据库的传输加密SSL

发表于2024-09-20 09:40:42542次浏览5个评论

传输加密的方法主要是使用加密技术、数字签名技术、时间戳、数字凭证技术等,最常用的技术为安全套接字协议(SSL)

SSL 是基于TCP/IP协议 对网络中传输的数据进行加密,焦点就在连接上。对于 GBase 8s 体系下,总共有如下连接场景需要进行数据传输加密:
1) 客户端连接数据库服务端,包含:csdk 或 jdbc 连接 GBase 8s。
2) 客户端连接到连接管理器,包含:csdk 或 jdbc 连接CM。无论CM选择代理,还是重定向,客户端都会建立到CM的连接。
3) 连接管理器连接数据库服务端。
4) 数据库服务端连接数据库服务端。对于高可用环境,数据库服务端之间是存在连接的。

GBase 8s 配置传输加密功能,首先需要生成数字证书,后续将数字证书分别导入到服务端和客户端的密钥数据库(也称作密钥库)中。
下载地址:https://gbasedbt.com/dl/GBase8s-Certs/gbasedbt_certs.tar

 

 

数据库服务端配置项:

1)onconfig 需要配置参数 encrypt VP 和相应的网络类型。示例如下:

DBSERVERALIASES gbase01_ssl
VPCLASS encrypt,num=1
NETTYPE socssl,1,150,NET

2)${GBASEDBTSQLHOSTS}.ext,指向数据加密传输的配置文件。
环境变量中必须要指定 GBASEDBTSQLHOSTS 配置参数指定的文件。


3)${GBASEDBTDIR}/certs 目录,保存证书、私钥和根证。
解压 gbasedbt_certs.tar 到${GBASEDBTDIR} 目录下,生成 certs。

里面有sysdba用户数据证书, 后续测试可以创建此用户进行验证使用.11111111


4)$GBASEDBTSQLHOSTS 文件

gbase01_ssl onsocssl 0.0.0.0 9089

5)GBASEDBTSQLHOSTS.ext 文件
GBASEDBTSQLHOSTS.ext 文件用于 ssl 的相应配置。

 

 

准备服务端证书文件,

以下的所有操作都需要使用操作系统的 gbasedbt 用户完成。
需要通过${GBASEDBTSQLHOSTS}.ext 指定配置文件。
假定 Server 安装在/opt/gbase 中,在 sqlhosts 中指定 socssl 的实例名是gbase01_ssl。
配置文件的示例如下:
# ${GBASEDBTSQLHOSTS}.ext
[config]
GBS_TYPE=gbasessl
# DBSERVERNAME or DBSERVERALIASES with onsocssl
[gbase01_ssl]
server=gbase_ssl_server
client=gbase_ssl_client
[gbase_ssl_server]
TLSCACertificateFile=/opt/gbase/certs/ca/ca-cert.pem
TLSCertificateFile=/opt/gbase/certs/server/server-cert.pem

TLSCertificateKeyFile=/opt/gbase/certs/server/server-key.pem
TLSCertificateKeyFilePasswd=DqOUlNa1c2OMcEEbvTG30w==
TLSVerifyCert=never
[gbase_ssl_client]
TLSCACertificateFile=/opt/gbase/certs/ca/ca-cert.pem
TLSCertificateFile=/opt/gbase/certs/dba1/dba1-cert.pem
TLSCertificateKeyFile=/opt/gbase/certs/dba1/dba1-key.pem
TLSCertificateKeyFilePasswd=DqOUlNa1c2OMcEEbvTG30w==
TLSVerifyCert=never

由于 Server 端也会部署 dbaccess,另外,Server 端也会安装 csdk。因此,需要在配置文件中写入 gbase_ssl_client。

 

启用加密
修改$GBASEDBTDIR/etc/sqlhosts 配置文件, 将需要启用传输加密功能的实例的连接类型设置为 onsocssl;
gbase01 onsoctcp 0.0.0.0 9088
gbase01_ssl onsocssl 0.0.0.0 9089

 

  配置数据库参数
修改$GBASEDBTDIR/etc/$ONCONFIG 配置文件,配置参数。
1)使 同 一 实 例 同 时 支 持 普 通 通 讯 方 式 和 加 密 通 讯 方 式 : 通 过 设 置DBSERVERALIASES 来增加服务的别名,这样可以在 sqlhosts 配置文件中设
置当前服务支持多种类型的连接,如下示例中实例名 gbase01、gbase01_ssl都为当前数据库服务实例名,但是在 sqlhosts 配置文件中可以配置为不同的
连接类型,这样客户端就可以通过多种通信方式与数据库服务通信:
DBSERVERNAME gbase01
DBSERVERALIASES gbase01_ssl
2)配置支持通讯加密的 VP:数据库加密和解密操作将由 Encrypt VP 执行。通过 VPCLASS 来配置该类型 VP 的属性;

如果未配置 VPCLASS,则 Server会默认启动一个 Encrypt VP。

VPCLASS encrypt,num=1
3)配置支持通讯加密的连接方式:设置 NETTYPE 来配置数据库连接的轮询线程和每个线程的连接数。

如果未配置轮询线程,则 Server 将启动一个轮询线程。

示例如下:
NETTYPE socssl,1,50,NET

 

重启服务
服务端证书配置好后,需要重启数据库服务来生效。

 

 

配置 CSDK  的传输加密
这里特指只安装了 CSDK 的客户端
CSDK 需要部署的内容包括如下部分:
1)${GBASEDBTSQLHOSTS}.ext,指向数据加密传输的配置文件
2)certs 目录,保存证书、私钥和根证。
3)$GBASEDBTSQLHOSTS 文件
用来配置待连接的服务端实例或实例别名。和 server 端一样,需要将对应实例的连接类型配置成 socssl。

 

准备客户端证书文件
客户端也需要通过${GBASEDBTSQLHOSTS}.ext 指定数据库配置文件。
假定 CSDK 客户端安装在/opt/csdk 中。客户端需要连接的实例名是
gbase01_ssl。配置文件示例,如下:
# ${GBASEDBTSQLHOSTS}.ext
[config]
GBS_TYPE=gbasessl
# DBSERVERNAME or DBSERVERALIASES with onsocssl
[gbase01_ssl]
client=gbase_ssl_client
[gbase_ssl_client]
TLSCACertificateFile=/opt/csdk/certs/ca/ca-cert.pem
TLSCertificateFile=/opt/csdk/certs/dba1/dba1-cert.pem
TLSCertificateKeyFile=/opt/csdk/certs/dba1/dba1-key.pem
TLSCertificateKeyFilePasswd=DqOUlNa1c2OMcEEbvTG30w==
TLSVerifyCert=never

 

dbaccess 、odbc  之sqlhosts  配置
dbaccess、odbc 通过修改$GBASEDBTDIR/etc/sqlhosts 配置文件来指定连接的启用传输加密的数据库服务实例,

并将连接类型设置为 onsocssl 来启用客户端的传输加密功能,示例如下:
gbase01_ssl onsocssl h01.gbasedbt.com 9089
示例中 gbase01_ssl 为启用传输加密的数据库服务实例。

 

dbaccess  验证
配置完后通过 dbaccess 连接启用传输加密的数据库服务,如果可以正常连接并执行 SQL 语句,则 dbaccess 传输加密功能配置成功。
1)配置环境变量:
创建文件 gbase01_ssl.ksh,并通过 source 命令执行。文件内容如下:
export GBASEDBTDIR=/opt/csdk # 安装目录
export GBASEDBTSERVER=gbase01_ssl # 服务名称
export GBASEDBTSQLHOSTS=${GBASEDBTDIR}/etc/sqlhosts # SQLHOSTS 文件
export PATH=${GBASEDBTDIR}/bin:$PATH # 执行文件目录
注:需要保持与 SERVER 端一致的 DB_LOCALE、CLIENT_LOCALE 和GL_USEGLU 等参数,应当一起配置。

示例中 GBASEDBTDIR 根据 dbaccess 为 Server 还是 CSDK 中的 dbaccess 来设置为 CSDK 或者 Server 的安装路径。


2)dbaccess 连接
执行 dbaccess,然后执行 SQL,如果执行成功则说明 dbaccess 配置后可以正常运行。
[gbasedbt@localhost ~]$ dbaccess - -

> connect to 'testdb@gbase01_ssl' user 'gbasedbt';
输 入 密 码 :
已 连 接 。

 

 

 

通过GDS客户端验证SSL

网络ssl

信任证书文件 :certs\ca\ca.truststore

客户端证书文件:certs\sysdba\sysdba.keystore

评论

登录后才可以发表评论
GBase用户8788发表于 6个月前
配置ssl 传输加密码,详细步骤:

certs目录拷贝到数据库安装目录${GBASEDBTDIR}


chown gbasedbt:gbasedbt gbasedbt_certs.tar
chmod 755 gbasedbt_certs.tar

cd $GBASEDBTDIR
tar -xvf gbasedbt_certs.tar


VPCLASS encrypt,num=1
NETTYPE onsocssl,1,50,CPU
DBSERVERALIASES gbase01_ssl



gbase01_ssl onsocssl 192.168.8.128 9089



3、 配置证书校验文件${GBASEDBTSQLHOSTS}.ext

需要通过修改${GBASEDBTDIR}/etc/sqlhosts.${GBASEDBTSERVER}.ext来指定配置参数。
假定8s服务端的安装路径为/opt/gbase8s/gb363, 数据库实例名称为 gbase01_ssl

[gbasedbt@ctos7_g8s_all ~]$ env |grep GBASEDBTSQLHOSTS
GBASEDBTSQLHOSTS=/opt/gbase8s/gb363/etc/sqlhosts.gbase363
[gbasedbt@ctos7_g8s_all ~]$ env |grep GBASEDBTDIR
GBASEDBTDIR=/opt/gbase8s/gb363
[gbasedbt@ctos7_g8s_all ~]$ onstat -c |grep ^DBSERVERALIAS
DBSERVERALIASES gbase01_ssl
[gbasedbt@ctos7_g8s_all ~]$


[config]
GBS_TYPE=gbasessl

#[gbase01_ssl]为数据库实例名(这里设置的是DBSERVERALIASES值)
[gbase01_ssl]
server=gbase_server
client=gbase_client

#/opt/gbase8s为数据库安装目录
[gbase_server]
TLSCACertificateFile=/opt/gbase8s/gb363/certs/ca/ca-cert.pem
TLSCertificateFile=/opt/gbase8s/gb363/certs/server/server-cert.pem
TLSCertificateKeyFile=/opt/gbase8s/gb363/certs/server/server-key.pem
TLSCertificateKeyFilePasswd=668668
#TLSVerifyCert=verify
TLSVerifyCert=never

[gbase_client]
TLSCACertificateFile=/opt/gbase8s/gb363/certs/ca/ca-cert.pem
TLSCertificateFile=/opt/gbase8s/gb363/certs/sysdba/sysdba-cert.pem
TLSCertificateKeyFile=/opt/gbase8s/gb363/certs/sysdba/sysdba-key.pem
TLSCertificateKeyFilePasswd=668668
#TLSVerifyCert=verify
TLSVerifyCert= never

##################################################################


4、 重启数据库服务

Forking 1 'soctcp' listener threads...succeeded
Forking 1 'socssl' listener threads...succeeded

[gbasedbt@ctos7_g8s_all ~]$ onstat -g ntt


mkdir /etc/gbasedbt
echo "USER:daemon" > /etc/gbasedbt/allowed.surrogates
chmod 644 /etc/gbasedbt/allowed.surrogates
source /home/gbasedbt/.bash_profile
onmode -wf USERMAPPING=ADMIN
onmode -cache surrogates
dbaccess sysuser -
create default user with properties user 'daemon';
create user sysdba with password 'GBase8s@123';


三、测试验证
1、在server端执行抓包命令:tcpdump port 9088 -i eth0 -X -nn > ssl.log
2、在客户端运行jdbc测试程序或使用GBaseDataStudio连接数据库
3、停止抓包并检索ssl.log文件内容,无法查询到”gbasedbt”等明文信息
4、将server切换为普通连接方式,再次运行jdbc测试程序并抓包,日志文件中可以检索到”gbasedbt”等明文信息

四、GDS图形化工具测试验证


信任证书文件:certs\ca\ca.truststore
密码11111111
客户端证书文件:certs\sysdba\sysdba.keystore
密码11111111
用户头像
levvel发表于 5个月前
虚心向前辈学习
崔哥发表于 4个月前
春风倚棹阖闾城,水国春寒阴复晴。细雨湿衣看不见,闲花落地听无声。日斜江上孤帆影,草绿湖南万里情。东道若逢相识问,青袍今已误儒生。
崔哥发表于 4个月前
浅浅余寒春半,雪消蕙草初长。烟迷柳岸旧池塘。风吹梅蕊闹,雨细杏花香。月堕枝头欢意,从前虚梦高唐,觉来何处放思量。如今不是梦,真个到伊行。
紫菀发表于 2个月前
三人行必有我师