数据传输加密
📄字数 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工具启用数据传输加密功能。
在DBeaver中创建虚谷连接,此时不启用数据传输加密功能
用Wireshark对DBeaver中创建的连接端口抓包
在DBeaver中打开创建的虚谷连接,并执行以下语句
sqlCREATE TABLE tab_ssl(c1 INTEGER); INSERT INTO tab_ssl VALUES(-58);1
2在Wireshark中可以发现数据库用户登录名称和密码、创建的表结构、插入的数据等敏感信息明文
将xgssl.dll动态库放置于C:\Windows\System32下
在DBeaver中修改虚谷连接,配置驱动属性
SSL=SSL,以启用数据传输加密功能使用DBeaver重新连接数据库,并执行以下语句
sqlINSERT INTO tab_ssl VALUES(-58);1再次使用Wireshark对DBeaver中创建的连接端口抓包,在Wireshark中可以发现相同的过滤条件下数据库用户登录名称和密码、创建的表结构、插入的数据等敏感信息不再出现明文,均为密文
二、TLS
2.1 数据库环境配置
- 动态库准备
linux:需要环境中存在openssl动态库libcrypto与libssl,支持openssl 1.0.x、openssl 1.1.x、openssl 3.x版本以及tongsuo所有版本windows:安装包中已经附带openssl动态库libcrypto-1_1-x64.dll和libssl-1_1-x64.dll,用户无需额外关注
- 数据库
BIN路径下,创建目录tls,于BIN/tls/路径下放置如下文件- 证书链文件
cacert.pem - 吊销链文件
crl.pem - 数据库密钥文件
database.key - 数据库证书文件
database.crt
- 证书链文件
- 重启数据库
2.2 控制台使用说明
动态库准备
linux:需要环境中存在openssl动态库libcrypto与libssl,支持openssl 1.0.x、openssl 1.1.x、openssl 3.x版本以及tongsuo 8.3.1任意版本windows:安装包中已经附带openssl动态库libcrypto-1_1-x64.dll和libssl-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.1和libssl.so.1.1,8.4.0及之后为libcrypto.so.3和libssl.so.3)windows:安装包中附有LIB_TONGSUO目录,其中内容为tongsuo 8.3.1版本动态库libcrypto-1_1-x64.dll和libssl-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.1与libssl.so.1.1,之后为libcrypto.so.3与libssl.so.3windows:安装包中附有LIB_TONGSUO目录,其中内容为tongsuo 8.3.1版本动态库libcrypto-1_1-x64.dll和libssl-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.jar、kona-ssl-1.0.18.jar、kona-crypto-1.0.18.jar、kona-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
└─bin1
2
3
4
5
6
2
3
4
5
6
其中,openssl/bin和tongsuo/bin目录,存放的分别是openssl和tongsuo的可执行程序,证书脚本执行依赖于它们。
以在windows环境中生成openssl rsa证书为例,执行流程如下:
- 将解压目录中的
openssl/bin目录的绝对路径,配置到环境变量中,令其中的openssl.exe可在终端直接执行 - 在cmd中,进入
xugu-toolkit-cert-gen/PKI目录 - 直接执行
openssl-generate.bat,终端会弹出选项“是否加密私钥文件(Y/N)”,根据实际需要选择,若选择“是”,则需要继续输入加密使用的口令,本样例中选择“否” - 进入生成的
demoCA-openssl目录,客户端证书会存放于release-client目录下,服务端证书会存放于release-client目录下 - 根据前文中的 TLS 配置说明,将证书配置好即可
类似的,如需使用 tongsuo 生成 sm2 证书,将tongsuo/bin的绝对路径配置到环境变量中,执行tongsuo-sm2-generate.bat即可,流程基本一致。
