配置数据库的传输加密SSL
传输加密的方法主要是使用加密技术、数字签名技术、时间戳、数字凭证技术等,最常用的技术为安全套接字协议(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
热门帖子
- 12025-12-01浏览数:182762
- 22023-05-09浏览数:25056
- 42023-09-25浏览数:18525
- 52020-05-11浏览数:17528
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