达梦数据库配置SSL测试

使用SSL认证登录测试

如果是通过jdbc接口来加密访问数据库,是使用的.keystore文件,所以SSL认证密码是keystore文件的密码;

如果是通过ODBC或者其他方式加密访问数据库,那么是使用ca-cert.pem、client-cert.pem和client-key.pem三个文件,所以SSL密码为客户端私钥密码。

(1)disql工具登录:

[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@192.168.15.35:5236#"{SSL_PATH=/opt/ca/client_ssl/SYSDBA,SSL_PWD=dameng}"

服务器[192.168.15.35:5236]:处于普通打开状态
登录使用时间 : 10.115(ms)
disql V8
SQL> 
###或者使用
[dmdba@localhost bin]$ ./disql /nolog
disql V8
SQL> login
服务名:192.168.15.35
用户名:SYSDBA
密码:
SSL路径:/opt/ca/client_ssl/SYSDBA
SSL密码:
UKEY名称:
UKEY PIN码:
MPP类型:
是否读写分离(y/n):
协议类型:

服务器[192.168.15.35:5236]:处于普通打开状态
登录使用时间 : 9.059(ms)
SQL> 

复制

(2)管理工具登录

管理工具连接数据库的方式是通过JDBC,所以SSL密码为keystore文件密码,而非客户端私钥密码。

image-20210811185728224

image-20210811190511859

image-20210811190708762

(3)JDBC程序连接配置

JDBC通过SSL认证方式登录数据库需要添加连接串属性sslFilesPath和sslKeystorePass,简要配置如下:

 

String name="dm.jdbc.driver.DmDriver"; String url="jdbc:dm://192.168.15.35:5236?sslFilesPath=E:\\dmdbms\\client_ssl\\SYSDBA&sslKeystorePass=abc123"; String user="SYSDBA"; String password="SYSDBA";

复制

image-20210811191355815

数据库通信加密测试

Windows直接使用Wireshark软件,Linux环境使用tcpdump进行抓包,然后使用Wireshark打开抓包数据进行查看验证或者直接查看文件简单搜索进行比较。

(1)使用tcpdump对加密的数据库访问进行抓包,并将数据保存在dm.cap中

 

[root@localhost ~]# tcpdump -i ens33 port 5236 -w dm.cap dropped privs to tcpdump tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes ^C29 packets captured 29 packets received by filter 0 packets dropped by kernel

复制

(2)取消数据库加密后,通过tcpdump进行抓包,并将数据保存在dm3.cap中

 

[root@localhost ~]# tcpdump -i ens33 port 5236 -w dm3.cap dropped privs to tcpdump tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes ^C19 packets captured 19 packets received by filter 0 packets dropped by kernel

复制

(3)对比查看

非加密情况下,可以看到数据、语句均为明文:

image-20210811193026326

image-20210811193048110

加密情况下,可以看到均为密文:

image-20210811193248260

问题处理

问题1

    JAVA程序使用SSL认证连接数据库是报错:javax.net.ssl.SSLException: Received fatal alert: protocol_version

可能原因:

    dm JDBC驱动包版本不对或者比较低

处理办法:

    更换对应达梦数据库版本的JDBC驱动包

问题2

[-70070]:初始化SSL环境失败.

复制

可能原因:

(1)输入的SSL验证密码不正确 (vio_ssl_ctx_use_privatekey_file_pass fail.)

(2)证书文件可能存在问题

    可能出现的报错:

      case sense user compare fail.

      SSL_CTX_use_Privatekey_file fail.

(3)无访问客户端证书的权限(stat private key fail.)

处理办法:

处理办法:

(1)对应处理办法:检查验证客户端私钥密码或者keystore文件密码是否正确,或者直接重新生成客户端证书等文件

(2)对应处理办法:如果是从服务器上拷贝的证书文件,使用sha256sum或者md5验证比对文件是否发生损坏。使用多种方式登录测试验证,比如使用disql和jdbc两种方式进行测试验证

(3)对应处理办法:检查当前用户是否有访问客户端证书的权限,或者将证书目录权限设置为777

chmod 777 -R client_ssl

复制

问题3

​ 达梦8管理工具可以正常使用SSL登录,但是JAVA应用程序无法使用SSL登录

可能原因:

​ 应用使用的JAVA JDK与达梦带的JAVA JDK存在差异(java.security 存在差异)

处理办法:

​ 应用使用达梦自带的JAVA JDK (DM8 自带的也是JDK 1.8)

转自:https://eco.dameng.com/community/article/c068d29ff069a34dc029fe9247c48796

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值