Skip to content

适用虚谷数据库版本

v12.10.8



适用虚谷数据库版本

v12.10.8


数据传输加密

📄字数 3.2K
👁️阅读量 加载中...

应用使用控制台xgconsole或者虚谷驱动程序连接虚谷数据库时,可启用数据传输加密功能,以保护敏感数据在驱动与数据库的传输过程中的安全性,防止因数据流被截获而导致敏感数据泄露。

一、SSL

1.1 环境准备

使用虚谷驱动数据传输加密功能前,需要将虚谷数据传输加密动态库安装至操作系统:

  • Windows:将xgssl.dll文件放置于C:\Windows\System32目录下
  • Linux:将libxgssl.so文件放置于/usr/lib/usr/lib64目录下

提示

虚谷数据传输加密动态库会在产品发布包中提供,如遇到问题,请联系虚谷技术支持。

1.2 驱动启用

目前支持了数据传输加密功能的开发语言驱动如下所示,其启用方式请参阅驱动文档:

虚谷驱动数据传输加密功能启用文档
JDBC请参阅JDBC开发手册-传输安全配置
Python请参阅Python开发手册-connect()
C#请参阅C#开发手册-ConnectionString
Go暂未支持
PHP请参阅PHP开发手册-__construct
Nodejs暂未支持
ODBC请参阅ODBC开发手册-配置数据源
NCI暂未支持
OCI暂未支持
XGCI请参阅XGCI开发手册-XGCIHandleAttrSet

1.3 示例

本示例将演示在Windows系统下通过DBeaver工具启用数据传输加密功能。

  1. 在DBeaver中创建虚谷连接,此时不启用数据传输加密功能

  2. 用Wireshark对DBeaver中创建的连接端口抓包

  3. 在DBeaver中打开创建的虚谷连接,并执行以下语句

    sql
    CREATE TABLE tab_ssl(c1 INTEGER);
    INSERT INTO tab_ssl VALUES(-58);
  4. 在Wireshark中可以发现数据库用户登录名称和密码、创建的表结构、插入的数据等敏感信息明文

  5. 将xgssl.dll动态库放置于C:\Windows\System32下

  6. 在DBeaver中修改虚谷连接,配置驱动属性SSL=SSL,以启用数据传输加密功能

  7. 使用DBeaver重新连接数据库,并执行以下语句

    sql
    INSERT INTO tab_ssl VALUES(-58);
  8. 再次使用Wireshark对DBeaver中创建的连接端口抓包,在Wireshark中可以发现相同的过滤条件下数据库用户登录名称和密码、创建的表结构、插入的数据等敏感信息不再出现明文,均为密文

二、TLS

2.1 数据库环境配置

  • 动态库准备
    • linux:需要环境中存在openssl动态库libcryptolibssl,支持openssl 1.0.xopenssl 1.1.xopenssl 3.x版本以及tongsuo所有版本
    • windows:安装包中已经附带openssl动态库libcrypto-1_1-x64.dlllibssl-1_1-x64.dll,用户无需额外关注
  • 数据库BIN路径下,创建目录tls,于BIN/tls/路径下放置如下文件
    • 证书链文件cacert.pem
    • 吊销链文件crl.pem
    • 数据库密钥文件database.key
    • 数据库证书文件database.crt
  • 重启数据库

2.2 控制台使用说明

  • 动态库准备

    • linux:需要环境中存在openssl动态库libcryptolibssl,支持openssl 1.0.xopenssl 1.1.xopenssl 3.x版本以及tongsuo 8.3.1任意版本
    • windows:安装包中已经附带openssl动态库libcrypto-1_1-x64.dlllibssl-1_1-x64.dll,用户无需额外关注
  • 控制台可执行程序同级目录下,放置如下文件

    • 证书链文件cacert.pem
    • 吊销链文件crl.pem
    • 客户端密钥文件driver.key
    • 客户端证书文件driver.crt
  • 启动控制台,连接参数ssl填写tls

2.3 驱动使用说明

  • 导入jdbc驱动xugu-jdbc-12.3.6.jar
  • 客户端可执行程序同级目录下,放置如下文件
    • 证书链文件cacert.pem
    • 吊销链文件crl.pem
    • 证书私钥对文件driver.p12
  • url 连接串参数配置中使用 ssl=tls

上述所有证书的生成可参考证书生成脚本

三、TLCP

  • 动态库准备
    • linux:需要环境中存在tongsuo动态库,8.4.0版本之前为libcrypto.so.1.1libssl.so.1.18.4.0及之后为libcrypto.so.3libssl.so.3
    • windows:安装包中附有LIB_TONGSUO目录,其中内容为tongsuo 8.3.1版本动态库libcrypto-1_1-x64.dlllibssl-1_1-x64.dll,用户需自行将其拷贝至数据库可执行程序同级目录下,原有的openssl动态库注意备份保存
  • 数据库BIN路径下,创建目录tlcp,于BIN/tlcp/路径下放置如下文件
    • 证书链文件cacert.pem
    • 吊销链文件crl.pem
    • 数据库签名密钥文件database-sign.key
    • 数据库签名证书文件database-sign.crt
    • 数据库加密密钥文件database-enc.key
    • 数据库加密证书文件database-enc.crt
  • 重启数据库

3.1 控制台使用说明

  • 动态库准备

    • linux:需要环境中存在tongsuo动态库,8.4.0之前为libcrypto.so.1.1libssl.so.1.1,之后为libcrypto.so.3libssl.so.3
    • windows:安装包中附有LIB_TONGSUO目录,其中内容为tongsuo 8.3.1版本动态库libcrypto-1_1-x64.dlllibssl-1_1-x64.dll,用户需自行将其拷贝至控制台可执行程序同级目录下,原有的openssl动态库注意备份保存
  • 控制台可执行程序同级目录下,放置如下文件

    • 证书链文件cacert.pem
    • 吊销链文件crl.pem
    • 客户端签名密钥文件driver-sign.key
    • 客户端签名证书文件driver-sign.crt
    • 客户端加密密钥文件driver-enc.key
    • 客户端加密证书文件driver-enc.crt
  • 启动控制台,连接参数ssl填写tlcp

3.2 驱动使用说明

  • 导入jdbc驱动xugu-jdbc-12.3.6.jar,导入腾讯Kona第三方依赖包kona-pkix-1.0.18.jarkona-ssl-1.0.18.jarkona-crypto-1.0.18.jarkona-provider-1.0.18.jar
  • 客户端可执行程序同级目录下,放置如下文件
    • 证书链文件cacert.pem
    • 吊销链文件crl.pem
    • 证书加密私钥对文件driver-enc.p12
    • 证书签名私钥对文件driver-sign.p12
  • url 连接串参数配置中使用 ssl=tlcp

上述所有证书的生成可参考证书生成脚本

四、证书生成脚本

4.1 脚本下载

证书生成流程较为繁琐,故提供了一套证书生成脚本以供参考和使用,可从下载链接下载。

4.2 脚本使用

从上文链接中下载文件,得到xugu-toolkit-cert-gen.zip文件,解压后,其关键目录如下:

txt
└─xugu-toolkit-cert-gen
    ├─openssl
    │  └─bin
    ├─PKI
    └─tongsuo
        └─bin

其中,openssl/bintongsuo/bin目录,存放的分别是openssltongsuo的可执行程序,证书脚本执行依赖于它们。

以在windows环境中生成openssl rsa证书为例,执行流程如下:

  1. 将解压目录中的openssl/bin目录的绝对路径,配置到环境变量中,令其中的openssl.exe可在终端直接执行
  2. 在cmd中,进入xugu-toolkit-cert-gen/PKI目录
  3. 直接执行openssl-generate.bat,终端会弹出选项“是否加密私钥文件(Y/N)”,根据实际需要选择,若选择“是”,则需要继续输入加密使用的口令,本样例中选择“否”
  4. 进入生成的demoCA-openssl目录,客户端证书会存放于release-client目录下,服务端证书会存放于release-client目录下
  5. 根据前文中的 TLS 配置说明,将证书配置好即可

类似的,如需使用 tongsuo 生成 sm2 证书,将tongsuo/bin的绝对路径配置到环境变量中,执行tongsuo-sm2-generate.bat即可,流程基本一致。