使用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文件密码,而非客户端私钥密码。
(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";
复制
数据库通信加密测试
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)对比查看
非加密情况下,可以看到数据、语句均为明文:
加密情况下,可以看到均为密文:
问题处理
问题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