一、实验环境准备
说明:
1)需要提前制作证书和服务端、客户端的私钥并放置在安装目录的bin\client_ssl\SYSDBA(这里我用的SYSDBA用户),把之前SYSDBA里面默认文件替换,或者直接把SYSDBA文件夹修改一下就行。
2)在客户端安装WireShark,这里我尝试过在win上,也就是服务器端抓包,但是没抓到。只能在客户端上抓取服务端和客户端之间的包才能成功。(centos上面可以很方便的安装和使用图形化界面)
二、验证
1、配置WireShark
进入软件主界面的时候,选择要抓取tcp包的网卡。这里只有一个ens33
双击配置,配置监视数据库的端口5236,点击旁边的Compil BPF可以验证规则是否正确。
点击绿色的鲨鱼鳍按钮进行抓包。
在Filter过滤里面设置过滤规则,设置过滤长度大于1的包,点击Apply应用。
2、不开启ssl加密
在客户端上连接服务端,并执行一个简单的SQL:
select id_code;
执行完毕后可以看到服务端和客户端之间的发送信息为明文,如图所示。
客户端往服务端发送的语句
服务端返回到客户端的结果
可以看到都是不加密的,通过抓取tcp包就能直接看到里面的信息。
3、开启ssl加密
在dm.ini里面将以下两个参数开启
第二个参数COMM_ENCRYPT_NAME是采用什么加密算法,具体选项可以通过select cyt_name,cyt_type,block_size,kh_size from v$ciphers;查看。修改后重启服务器生效。
无论是服务端还是客户端发送和接收的信息都是加密的,已经对消息进行加密。
验证SSL认证,也就是将ENABLE_ENCRYPT改为2,再次测试的时候,是不加密的,也验证了官方文档中的话:
“当选择 SSL 认证时,不进行通信加密,只是检查客户端和服务器的证书是否匹配。此时如果服务器SSL环境没有配置则服务器无法正常启动,如果客户端SSL环境没有配置则无法连接服务器。”
3.1 关于COMM_ENCRYPT_NAME参数
刚开始以为只有开启了ENABLE_ENCRYPT那么内容才会加密,但是测试之后,ENABLE_ENCRYPT是哪个参数,只要COMM_ENCRYPT_NAME空,随意指定了一个加密算法,那么都会加密。
重启后测试,可以看到内容依然被加密。
三、客户端怎么样验证通信加密功能是开启的
方法 1:把客户端下的 C:\dmdbms\bin\client_ssl\下的“SYSDBA”文件夹移走,试试 SYSDBA 还能不能登录?能登陆则未开启通信加密,不能登录则开启了通信加密;
方法 2:SYSDBA 用户登录之后建立一个新用户 USER0001,密码为 USER0001,因为这个 用户没有证书,用这个 USER0001 登录试试,能登陆则未开启通信加密,不能登录则开启了 通信加密;
方法 3:用 Wireshark 工具对“从服务器 5236 端口传输到客户端”的数据进行抓包分析,若能抓取到明文的用户名、口令或者 SQL 语句,则未开启通信加密,若未能抓取到明文的数据包则表示开启了通信加密。
文章
阅读量
获赞