注册
鉴别数据加密与SSL配置说明
专栏/技术分享/ 文章详情 /

鉴别数据加密与SSL配置说明

🌌 2026/09/23 333 0 0
摘要

鉴别数据加密与SSL配置说明

测试环境信息

单机,无 MAL。主机名 dmdw01 不表示主备。数据目录 /dmdata/DAMENG,客户端端口 15236。证书为安装自带 CA,非正式生产终态。

本环境已配置:客户端 15236 为 SSL 双向认证(ENABLE_ENCRYPT=1),协议下限 TLS 1.2,协商 TLS 1.3,套件 TLS_AES_256_GCM_SHA384。登录凭据增强加密未启用。口令按 HASH WITH SHA512 SALT 存储,已用 GET_DDL 回读。移走客户端证书无法登录;抓包可见 TLS 握手与应用密文。本文作配置与验证参照。

鉴别数据怎么保护

鉴别数据就是登录时的用户名和口令。达梦对它分三层保护,各管一段,不能互相替代。

第一层:传输加密(SSL)。开关 ENABLE_ENCRYPT。打开后,客户端到库的整条会话都走 TLS,里面既有登录用户名口令,也有之后的 SQL 等业务数据。本环境已开启,见第 3 章。

第二层:登录凭据增强加密。开关 FORCE_CERTIFICATE_ENCRYPTION,钥匙由 dmkey 生成 RSA 公私钥。只加密登录这一下的用户名和口令,不管后续业务报文。本环境未开启,做法见第 4 章。

第三层:口令落库。口令不以明文写入数据文件,缺省 HASH WITH SHA512 SALT(加盐 SHA-512 散列)。这是存储保护,和链路上开不开 SSL 无关。见第 5 章。

补充:第一层未开时,达梦仍会用内置 AES256_CFB(AES、256 位密钥、CFB 模式)对登录报文里的用户名口令做简单加解密。密钥不对外开放、不能由用户管理,不能当成合规整改。本环境已开 SSL,登录走 TLS,当前通道算法不是 AES256_CFB。

SSL传输加密

开启前

ENABLE_ENCRYPT=0,不加密。MIN_SSL_VERSION=771 已预置,但仅当 ENABLE_ENCRYPT≠0 时有效,开启前无 TLS 下限。证书:server_ssl、client_ssl/用户名/,链校验 OK,RSA 2048;CA=fhx,签名 SHA1。

image.png

开启SSL

ENABLE_ENCRYPT:0 不加密;1 加密+双向(本文);2 只认证不加密;3 GMSSL(密评);4 只加密不验证书;5 加密+单向(客户端只需 CA);6 商密 TLCP(密评)。1/2/4/5 的 TLS 套件由协议协商。静态参数须重启:

SP_SET_PARA_VALUE(2,'ENABLE_ENCRYPT',1);
SP_SET_PARA_VALUE(2,'MIN_SSL_VERSION',771);

此时 FILE_VALUE=1、内存 PARA_VALUE 仍为 0。备份 dm.ini 后重启,15236 重新监听即成功。

image.png

/dmdbms/bin/DmServiceDMSERVER restart

image.png

是否生效

对照变量是证书目录是否存在,不是是否写 ssl_path。默认读 /dmdbms/bin/client_ssl/用户名/,不写 ssl_path 仍会加载证书。移走 SYSDBA 目录应失败,还原应成功。

mv /dmdbms/bin/client_ssl/SYSDBA /dmdbms/bin/client_ssl/SYSDBA.bak_test
./disql SYSDBA@127.0.0.1:15236

image.png

mv /dmdbms/bin/client_ssl/SYSDBA.bak_test /dmdbms/bin/client_ssl/SYSDBA
./disql SYSDBA@127.0.0.1:15236

3a187e9e5c054700a42533d7ebe3d8d8.png

链路是否密文

-i lo 只抓本机发起的连接,远程改网卡。TLS 前可能出现版本串 8.1.5.8,不含口令。有效证据:16 03 01 ClientHello,16 03 03 ServerHello,13 02(TLS 1.3 套件),17 03 03 应用密文。

tcpdump -i lo -nn -s 0 -X tcp port 15236
openssl s_client -connect 127.0.0.1:15236 -tls1_3 2>/dev/null | grep -E "Protocol|Cipher"

47d1057c5ec4451cac93bf197af936f6.jpg
f883ba4b373d4a1588bd9cd2c4b594fc.jpg

dcd20b2338774857b2fdd1d8f10e03ea.jpg

鉴别数据的其他保护

官方原文:当未采用通信加密时,系统自动对登录用户名密码做简单加解密,算法为 AES256_CFB。该算法内置、密钥不可由用户管理,不是合规密码技术,不能当作已完成整改。

增强机制:dmkey 生成 RSA 钥对;客户端公钥加密登录凭据;服务端用 SYSTEM_PATH/dm_login.prikey 解密。FORCE_CERTIFICATE_ENCRYPTION 只能改 dm.ini。本环境已开 SSL,未开此项。SSL 管整条会话;增强加密只管登录凭据。

./dmkey PATH=/dmdata/DAMENG PUBKEY=dm_login.pubkey
./dmkey PRIKEY=/dmdata/DAMENG/dm_login.prikey
dm.ini:FORCE_CERTIFICATE_ENCRYPTION = 1
dm_svc.conf:LOGIN_CERTIFICATE=(/dmdata/DAMENG/dm_login.pubkey)

口令存储

官方:用户口令以密文存储;缺省散列选项为 HASH WITH SHA512 SALT;SYSDBA 等系统用户同此方式。DBA_USERS 无口令列,不能当证据。本环境建 TEST_HASH 后 GET_DDL 回读,DDL 含 HASH WITH SHA512 SALT,口令显示为 <PASSWORD>。测完 DROP USER TEST_HASH;

CREATE USER TEST_HASH IDENTIFIED BY "Dm_123456" HASH WITH SHA512 SALT;
SELECT DBMS_METADATA.GET_DDL('USER','TEST_HASH') FROM DUAL;

629b18084a2d43ab9fb707fdb1bc5f30.png

算法说明

登录通道以 ServerHello 为准:TLS_AES_256_GCM_SHA384(TLS 1.3)。V$CIPHERS 是库内可选算法(COMM_ENCRYPT_NAME / 表空间等),不是当前 SSL 套件。本环境实测含 AES 与 SM4 / OPENSSL_SM4(以图为准)。

SELECT CYT_NAME, CYT_TYPE, WORK_MODE, BLOCK_SIZE, KH_SIZE FROM V$CIPHERS;

683e80c077b14924aa3f1ad62688bba0.png

使用注意

本机单机、无 MAL。ENABLE_ENCRYPT 只作用于客户端端口 15236;若以后做主备,MAL 不受该参数控制。

ENABLE_ENCRYPT≠0 时两端都要配 SSL:能读 client_ssl/用户名/,且 OpenSSL 运行库(libssl / libcrypto)就位。工具、JDBC、DEM 同样。证书为自带 CA、SHA1,生产须换合规 CA 及 SHA256 以上并重验。

不要同时开 COMM_ENCRYPT_NAME(官方:一种已够,双开耗资源)。回退:dm.ini.bak.ssl.* 拷回后重启;同目录 dm.ini.dmbak 为系统自动备份。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服