达梦数据库使用ssl通信加密,需要在达梦数据库服务端配置ENABLE_ENCRYPT 和 COMM_ENCRYPT_NAME 参数来指定,客户端以服务端采用的通信方式与其进行通信,达梦数据库支持的加密算法可以通过V$CIPHERS动态视图获取
达梦数据库使用ssl通信加密,需要在达梦数据库服务端配置ENABLE_ENCRYPT 和 COMM_ENCRYPT_NAME 参数来指定,客户端以服务端采用的通信方式与其进行通信,达梦数据库支持的加密算法可以通过V$CIPHERS动态视图获取,如下所示。
SQL> set pagesize 50
SQL> select cyt_name,cyt_type,block_size,kh_size from v$ciphers;
行号 CYT_NAME CYT_TYPE BLOCK_SIZE KH_SIZE
1 DES_ECB 1 8 8
2 DES_CBC 1 8 8
3 DES_CFB 1 8 8
4 DES_OFB 1 8 8
5 DESEDE_ECB 1 8 16
6 DESEDE_CBC 1 8 16
7 DESEDE_CFB 1 8 16
8 DESEDE_OFB 1 8 16
9 AES128_ECB 1 16 16
10 AES128_CBC 1 16 16
11 AES128_CFB 1 16 16
12 AES128_OFB 1 16 16
13 AES192_ECB 1 16 24
14 AES192_CBC 1 16 24
15 AES192_CFB 1 16 24
16 AES192_OFB 1 16 24
17 AES256_ECB 1 16 32
18 AES256_CBC 1 16 32
19 AES256_CFB 1 16 32
20 AES256_OFB 1 16 32
21 RC4 2 0 16
22 MD5 4 0 16
23 SHA1 4 0 20
24 SHA224 4 0 28
25 SHA256 4 0 32
26 SHA384 4 0 48
27 SHA512 4 0 64
28 DES_ECB_NOPAD 1 8 8
29 DES_CBC_NOPAD 1 8 8
30 DESEDE_ECB_NOPAD 1 8 16
31 DESEDE_CBC_NOPAD 1 8 16
32 AES128_ECB_NOPAD 1 16 16
33 AES128_CBC_NOPAD 1 16 16
34 AES192_ECB_NOPAD 1 16 24
35 AES192_CBC_NOPAD 1 16 24
36 AES256_ECB_NOPAD 1 16 32
37 AES256_CBC_NOPAD 1 16 32
37 rows got
已用时间: 0.643(毫秒). 执行号:16.
SQL>
上述结果中加密算法类型(CYT_TYPE)列的值中,1指分组对称加密算法2指流式对称加密算法3指非对称加密算法4指散列算法。查看当前ENABLE_ENCRYPT 和 COMM_ENCRYPT_NAME 参数值,如下所示。
SQL> SELECT NAME,TYPE,VALUE FROM V$PARAMETER WHERE NAME=‘ENABLE_ENCRYPT’ OR NAME=‘COMM_ENCRYPT_NAME’;
行号 NAME TYPE VALUE
1 ENABLE_ENCRYPT IN FILE 0
2 COMM_ENCRYPT_NAME IN FILE
已用时间: 4.397(毫秒). 执行号:17.
SQL>
可以看到,这2个参数均为静态参数,ENABLE_ENCRYPT为0,代表不加密,配置为1代表ssl加密,2代表ssl认证;COMM_ENCRYPT_NAME值为空,未配置加密算法,配置的值为V$CIPHERS中CYT_NAME列中支持的算法值。此处以DES_CBC加密算法为例,如下所示。
SQL> sf_set_system_para_value(‘COMM_ENCRYPT_NAME’,‘DES_CBC’,1,2);
DMSQL 过程已成功完成
已用时间: 13.567(毫秒). 执行号:121403.
SQL>
SQL> sp_set_para_value(2,‘ENABLE_ENCRYPT’,1);
DMSQL 过程已成功完成
已用时间: 4.839(毫秒). 执行号:121404.
参数配置完成后,需要重启数据库,使配置变量值生效,数据库层的配置就完成了。系统层ssl环境配置及证书生成,此处省略。需要注意的是达梦数据库选择使用ssl加密时,需要在达梦数据库安装目录(一般为DM_HOME/bin)所在的子目录server_ssl中存放CA的证书、服务器的证书和服务器的密钥,同时在客户端所在目录下的client_ssl子目录中存放 CA 的证书、客户端的证书和客户端的密钥,这样服务器和客户端的通信即是建立在加密的 SSL 连接之上的。
SQL> conn sysdba/SYSDBA@localhost:5236
case sense user compare fail.
[-70070]:初始化SSL环境失败.
SQL>
SQL> conn sysdba/SYSDBA@localhost:5236#C:\dmdbms\bin\client_ssl\SYSDBA@123456
服务器[localhost:5236]:处于普通打开状态
登录使用时间 : 4.450(ms)
SQL>
通信加密中客户端证书存放的地址和客户端证书密钥。各用户只能使用自己的证书,例如 SYSDBA 账户只能使用\bin\CLIENT_SSL\SYSDBA 下的证书和密码。C:\dmdbms\bin\client_ssl\SYSDBA为此处客户端SYSDBA证书秘钥存放处,@后面的123456为证书密码,如果证书没有设置密码,可以缺省或任意数字代替。