达梦数据库-学习-67-SSL加密认证
目录一、环境信息二、介绍三、实验步骤1、备份openssl.cnf2、修改openssl.cnf3、基目录创建4、服务端和客户端证书存放目录创建5、用户客户端证书存放目录创建6、目录树展示7、CA证书生成8、服务器私钥生成9、签发申请生成10、CA签名证书生成11、证书格式转换为x509格式12、拷贝文件13、客户端用户私钥生成14、客户端用户证书签发申请15、客户端用户CA根证书16、转换为pkcs12格式17、JDBC .keystore文件生成1导入CA根证书2导入服务器证书3导入客户端私钥和证书18、自签名CA根证书拷贝19、部署服务端证书20、客户端证书修改用户组21、数据库参数修改22、不加证书disql登录失败23、加证书disql登录成功24、JDBC连接1jdbc_conn.java源码2编译3运行一、环境信息名称值CPUIntel(R) Core(TM) i5-1035G1 CPU 1.00GHz操作系统CentOS Linux release 7.9.2009 (Core)内存5G逻辑核数6DM版本1 DM Database Server 64 V82 DB Version: 0x7000c3 03134284194-20240703-234060-201084 Msg Version: 125 Gsu level(5) cnt: 0二、介绍基于传输层的 SSL 协议加密选择是否使用 SSL 协议加密以 DM 数据库服务器端的设置为准即通过设置服务器配置文件 DM.INI 中的 ENABLE_ENCRYPT 参数来指定客户端以服务器采用的通信方式与其。进行通信。三、实验步骤1、备份openssl.cnf[rootlocalhost ~]# cp /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl.cnf_bak2、修改openssl.cnf[ CA_default ] dir /opt/ca # Where everything is kept certs $dir/certs # Where the issued certs are kept crl_dir $dir/crl # Where the issued crl are kept database $dir/index.txt # database index file. #unique_subject no # Set to no to allow creation of # several ctificates with same subject. new_certs_dir $dir/newcerts # default place for new certs. certificate $dir/ca-cert.pem # The CA certificate serial $dir/serial # The current serial number crlnumber $dir/crlnumber # the current crl number # must be commented out to leave a V1 CRL crl $dir/crl.pem # The current CRL private_key $dir/ca-key.pem # The private key RANDFILE $dir/.rand # private random number file x509_extensions usr_cert # The extentions to add to the cert只修改[ CA_default ]标签下的参数dir、certificate、private_key、RANDFILE其他不动。3、基目录创建mkdir -p /opt/ca cd /opt/ca mkdir {certs,crl,newcerts} echo 01 serial touch index.txt4、服务端和客户端证书存放目录创建mkdir /opt/ca/server_ssl mkdir /opt/ca/client_ssl5、用户客户端证书存放目录创建数据库中所有用户都需要生成客户端证书否则无法登录。这里以SYSDBA为例其他用户需创建相应名字的目录。mkdir -p /opt/ca/client_ssl/SYSDBA6、目录树展示[rootlocalhost ca]# tree . ├── certs ├── client_ssl │ └── SYSDBA ├── crl ├── index.txt ├── newcerts ├── serial └── server_ssl7、CA证书生成密码设置简单一些我这边是123456[rootlocalhost ca]# openssl req -new -x509 -days 3650 -keyout ca-key.pem -out ca-cert.pem -subj /Ccn/STguangdong/Lguangzhou/Odameng/OUdev/CNlw/emailAddressabcdm.com Generating a 2048 bit RSA private key .................................. .......... writing new private key to ca-key.pem Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- [rootlocalhost ca]# ll 总用量 12 -rw-r--r--. 1 root root 1375 8月 6 20:47 ca-cert.pem -rw-r--r--. 1 root root 1834 8月 6 20:47 ca-key.pem drwxr-xr-x. 2 root root 6 8月 6 20:36 certs drwxr-xr-x. 3 root root 20 8月 6 20:37 client_ssl drwxr-xr-x. 2 root root 6 8月 6 20:36 crl -rw-r--r--. 1 root root 0 8月 6 20:36 index.txt drwxr-xr-x. 2 root root 6 8月 6 20:36 newcerts -rw-r--r--. 1 root root 3 8月 6 20:36 serial drwxr-xr-x. 2 root root 6 8月 6 20:37 server_ssl [rootlocalhost ca]#可以看到生成了CA私钥和根证书。8、服务器私钥生成[rootlocalhost ca]# openssl genrsa -out server_ssl/server-key.pem Generating RSA private key, 2048 bit long modulus ....................................................... ............ e is 65537 (0x10001)9、签发申请生成[rootlocalhost ca]# openssl req -new -key server_ssl/server-key.pem -out server_ssl/server.csr -subj /Ccn/STguangdong/Lguangzhou/Odameng/OUdev/CNserver/emailAddressserverdm.com10、CA签名证书生成密码还是123456[rootlocalhost ca]# openssl ca -days 3650 -in server_ssl/server.csr -out server_ssl/server-cert.pem Using configuration from /etc/pki/tls/openssl.cnf Enter pass phrase for /opt/ca/ca-key.pem: Check that the request matches the signature Signature ok Certificate Details: Serial Number: 1 (0x1) Validity Not Before: Aug 6 12:56:29 2026 GMT Not After : Aug 3 12:56:29 2036 GMT Subject: countryName cn stateOrProvinceName guangdong organizationName dameng organizationalUnitName dev commonName server emailAddress serverdm.com X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: CC:2A:96:FF:04:0A:8A:32:03:EB:9D:53:DB:8C:1B:54:C6:A4:F0:58 X509v3 Authority Key Identifier: keyid:ED:9E:B5:5F:B9:33:D1:34:38:17:21:E0:9B:6E:EC:93:5D:C9:F4:FE Certificate is to be certified until Aug 3 12:56:29 2036 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated11、证书格式转换为x509格式[rootlocalhost ca]# openssl x509 -in server_ssl/server-cert.pem -out server_ssl/server.cer12、拷贝文件[rootlocalhost ca]# cp ca-cert.pem server_ssl [rootlocalhost ca]# cp ca-key.pem server_ssl13、客户端用户私钥生成密码还是123456[rootlocalhost ca]# openssl genrsa -aes256 -out client_ssl/SYSDBA/client-key.pem Generating RSA private key, 2048 bit long modulus ................................................. .................................... e is 65537 (0x10001) Enter pass phrase for client_ssl/SYSDBA/client-key.pem: Verifying - Enter pass phrase for client_ssl/SYSDBA/client-key.pem:14、客户端用户证书签发申请[rootlocalhost ca]# openssl req -new -key client_ssl/SYSDBA/client-key.pem -out client_ssl/SYSDBA/client.csr -subj /Ccn/STguangdong/Lguangzhou/Odameng/OUdev/CNSYSDBA/emailAddressdmclientdm.com Enter pass phrase for client_ssl/SYSDBA/client-key.pem:15、客户端用户CA根证书[rootlocalhost ca]# openssl ca -days 365 -in client_ssl/SYSDBA/client.csr -out client_ssl/SYSDBA/client-cert.pem Using configuration from /etc/pki/tls/openssl.cnf Enter pass phrase for /opt/ca/ca-key.pem: Check that the request matches the signature Signature ok Certificate Details: Serial Number: 2 (0x2) Validity Not Before: Aug 6 13:05:59 2026 GMT Not After : Aug 6 13:05:59 2027 GMT Subject: countryName cn stateOrProvinceName guangdong organizationName dameng organizationalUnitName dev commonName SYSDBA emailAddress dmclientdm.com X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 98:80:33:C5:4F:0A:0E:93:60:59:74:0C:26:DD:CA:9F:46:38:23:61 X509v3 Authority Key Identifier: keyid:ED:9E:B5:5F:B9:33:D1:34:38:17:21:E0:9B:6E:EC:93:5D:C9:F4:FE Certificate is to be certified until Aug 6 13:05:59 2027 GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated16、转换为pkcs12格式[rootlocalhost ca]# openssl pkcs12 -export -inkey client_ssl/SYSDBA/client-key.pem -in client_ssl/SYSDBA/client-cert.pem -out client_ssl/SYSDBA/client-pkcs.p12 Enter pass phrase for client_ssl/SYSDBA/client-key.pem: Enter Export Password: Verifying - Enter Export Password:17、JDBC .keystore文件生成1导入CA根证书[rootlocalhost ca]# keytool -import -alias ca -trustcacerts -file ca-cert.pem -keystore client_ssl/SYSDBA/.keystore -deststorepass 123456 -noprompt 证书已添加到密钥库中2导入服务器证书[rootlocalhost ca]# keytool -import -alias server -trustcacerts -file server_ssl/server.cer -keystore client_ssl/SYSDBA/.keystore -deststorepass 123456 -noprompt 证书已添加到密钥库中3导入客户端私钥和证书[rootlocalhost ca]# keytool -importkeystore -srckeystore client_ssl/SYSDBA/client-pkcs.p12 -srcstorepass 123456 -srcstoretype PKCS12 -keystore client_ssl/SYSDBA/.keystore -storetype PKCS12 -deststorepass 123456 正在将密钥库 client_ssl/SYSDBA/client-pkcs.p12 导入到 client_ssl/SYSDBA/.keystore... keytool 错误: java.io.IOException: DerInputStream.getLength(): lengthTag109, too big.报错应该是前面配置错了。[rootlocalhost ca]# openssl pkcs12 -info -in client_ssl/SYSDBA/client-pkcs.p12 -nodes无输出则损坏。[rootlocalhost ca]# rm -f client_ssl/SYSDBA/.keystore删除旧的 keystore 文件。[rootlocalhost ca]# keytool -importkeystore -srckeystore client_ssl/SYSDBA/client-pkcs.p12 -srcstoretype PKCS12 -srcstorepass 123456 -destkeystore client_ssl/SYSDBA/.keystore -deststoretype PKCS12 -deststorepass 123456 正在将密钥库 client_ssl/SYSDBA/client-pkcs.p12 导入到 client_ssl/SYSDBA/.keystore... 已成功导入别名 1 的条目。 已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消导入PKCS12文件。[rootlocalhost ca]# keytool -import -alias ca -trustcacerts -file ca-cert.pem -keystore client_ssl/SYSDBA/.keystore -storepass 123456 -noprompt 证书已添加到密钥库中导入CA根证书。[rootlocalhost ca]# keytool -import -alias server -trustcacerts -file server_ssl/server.cer -keystore client_ssl/SYSDBA/.keystore -storepass 123456 -noprompt 证书已添加到密钥库中导入服务器证书。[rootlocalhost ca]# keytool -importkeystore -srckeystore client_ssl/SYSDBA/client-pkcs.p12 -srcstorepass 123456 -srcstoretype PKCS12 -keystore client_ssl/SYSDBA/.keystore -storetype PKCS12 -deststorepass 123456 正在将密钥库 client_ssl/SYSDBA/client-pkcs.p12 导入到 client_ssl/SYSDBA/.keystore... 存在现有条目别名 1, 是否覆盖? [否]: 1 错误的答案, 请再试一次 存在现有条目别名 1, 是否覆盖? [否]: y 已成功导入别名 1 的条目。 已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消这次正常了。18、自签名CA根证书拷贝[rootlocalhost ca]# cp ca-cert.pem client_ssl/SYSDBA/19、部署服务端证书mv /opt/Dm8/bin/server_ssl /opt/Dm8/bin/server_ssl_bak cp -r /opt/ca/server_ssl /opt/Dm8/bin/ chown -R dmdba:dmdba /opt/Dm8/bin/server_ssl20、客户端证书修改用户组[rootlocalhost ca]# chown -R dmdba:dmdba /opt/ca/client_ssl21、数据库参数修改ENABLE_ENCRYPT改为1重启数据库。SP_SET_PARA_VALUE (2,ENABLE_ENCRYPT,1);22、不加证书disql登录失败[dmdbalocalhost ~]$ disql SYSDBA/qwer1234S SSL_do_handshake failure [-70019]:网络通讯失败. disql V8 用户名:23、加证书disql登录成功[dmdbalocalhost ~]$ disql SYSDBA/qwer1234S192.168.217.66:5236#{SSL_PATH/opt/ca/client_ssl/SYSDBA,SSL_PWD123456} 服务器[192.168.217.66:5236]:处于普通打开状态 登录使用时间 : 16.871(ms) disql V8 SQL quit24、JDBC连接1jdbc_conn.java源码import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class jdbc_conn { static String cname dm.jdbc.driver.DmDriver; static String url jdbc:dm://writemaster?writemaster(192.168.217.66:5236)schemaSYSDBAsocketTimeout0connectTimeout25000sslFilesPath/opt/ca/client_ssl/SYSDBAsslKeystorePass123456; static String userid SYSDBA; static String pwd qwer1234S; public static void main(String[] args) { for (int i 1; i 5; i) { Connection con null; // 每次循环独立 try { Class.forName(cname); con DriverManager.getConnection(url, userid, pwd); con.setAutoCommit(true); System.out.println([SUCCESS] conn database - 第 i 次); } catch (Exception e) { System.out.println([FAIL] conn database - 第 i 次 e.getMessage()); } finally { try { disConn(con); } catch (SQLException e) { System.out.println([WARN] 关闭连接失败 - 第 i 次 e.getMessage()); } } } } public static void disConn(Connection con) throws SQLException { if (con ! null) { con.close(); } } }2编译javac -cp .:/opt/Dm8/drivers/jdbc/DmJdbcDriver8.jar jdbc_conn.java3运行[dmdbalocalhost JDBC]$ java -cp .:/opt/Dm8/drivers/jdbc/DmJdbcDriver8.jar jdbc_conn [SUCCESS] conn database - 第1次 [SUCCESS] conn database - 第2次 [SUCCESS] conn database - 第3次 [SUCCESS] conn database - 第4次 [SUCCESS] conn database - 第5次

相关新闻

openrig实战:铝型材搭建直驱级模拟驾驶舱全攻略

openrig实战:铝型材搭建直驱级模拟驾驶舱全攻略

说实话,我第一次看到 openrig 这个词的时候也愣了一下——"rig" 在模拟赛车圈里就是指那整套驾驶舱框架,open 就是开放、开源。那时候我刚把一台直驱基座装到几百块的入门支架上,手感惨不忍睹:方向盘一打弯,…

2026/10/2 21:31:39 阅读更多 →
openrig:搭建标准化可复用的硬件测试平台

openrig:搭建标准化可复用的硬件测试平台

最近我把工作台上那套反复拼凑的调试装置彻底推翻重做了一遍,项目代号就叫 openrig。说实话,这个名字最开始只是某个仓库文件夹的随手命名,但做着做着就变成了我现在利用率最高的东西。被折腾过硬件的人应该都有同感:板子到手想验…

2026/10/2 21:31:39 阅读更多 →
从零搭建AI工程能力:三次踩坑经验与完整落地指南

从零搭建AI工程能力:三次踩坑经验与完整落地指南

从零搭建AI工程能力这件事,我前前后后折腾过三回。第一回是跟着网上的教程跑通了几个Demo,觉得自己行了;第二回是接手一个真实项目,发现Demo和工程之间隔着一条鸿沟;第三回才算真正摸到了门道——不是模型调得多好&…

2026/10/2 21:30:39 阅读更多 →

最新新闻

Warp 远程会话中的 ApplyFileDiffs:基于 RemoteServer RPC 的远程 Diff 应用架构设计

Warp 远程会话中的 ApplyFileDiffs:基于 RemoteServer RPC 的远程 Diff 应用架构设计

桌面应用开发者工具人工智能AI 应用AI Agent代码智能体 【免费下载链接】warp Warp is an agentic development environment, born out of the terminal. 项目地址: https://gitcode.com/GitHub_Trending/wa/warp 点击查看 免费下载 本技术指南深入讲解 Warp&#…

2026/10/2 22:09:17 阅读更多 →
Unity新输入系统实现鼠标单击、双击、长按判定与事件分发框架

Unity新输入系统实现鼠标单击、双击、长按判定与事件分发框架

最近在做一个需要同时支持鼠标左键单击、双击、长按三种操作的小项目,切换到 Unity 的 New Input System 之后,第一版代码写得非常简陋:一个 MonoBehaviour 里塞满了 if 判断、时间戳和一堆“状态变量”。加功能只敢加在同一个文件里&#xf…

2026/10/2 22:08:16 阅读更多 →
TLQ 7/8消息中间件运维常用命令与故障排查实战指南

TLQ 7/8消息中间件运维常用命令与故障排查实战指南

拿到TLQ 7/8这套消息中间件的时候,很多运维同事的第一反应是:这玩意儿不就是国产消息队列嘛,思路应该和RabbitMQ、Kafka差不太多。可真到了配置环境、启服务、查队列、定位故障的时候才发现,命令一多就容易乱,今天记住了明天又得翻手册。尤其是从TLQ 7升级到TLQ 8之后,部分命令…

2026/10/2 22:08:16 阅读更多 →
OpenClaw on reComputer:隐私优先的边缘情绪识别Agent部署指南

OpenClaw on reComputer:隐私优先的边缘情绪识别Agent部署指南

1. 项目概述:为什么在 reComputer 上跑 OpenClaw 是个“隐私优先”的硬核选择OpenClaw on reComputer —— 这个标题乍看像一串技术缩写堆砌,但拆开来看,它其实指向一个正在快速成型的边缘智能新范式:把高敏感度的情绪识别&#x…

2026/10/2 22:08:16 阅读更多 →
SpringBoot+Vue3+MyBatis流浪动物救助平台源码解析

SpringBoot+Vue3+MyBatis流浪动物救助平台源码解析

1. 从小区流浪猫说起:这套系统到底解决的问题是什么我最初关注流浪动物救助,是因为小区楼下那只橘猫。它有固定的喂食点,有志愿者拍照发朋友圈,但信息散在十几个群里,今天谁喂了、明天猫在哪、有没有生病,全…

2026/10/2 22:08:16 阅读更多 →
2026年论文党必备:TaoToken 统一 Key 接入降AI率工具实测与配置清单

2026年论文党必备:TaoToken 统一 Key 接入降AI率工具实测与配置清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 22:08:16 阅读更多 →

日新闻

从零搭建AI工程化:模型之外的完整闭环

从零搭建AI工程化:模型之外的完整闭环

先搞清楚一件事:从零开始做 AI 工程化,难的从来不是调模型、写提示词,而是把一套原型 Demo 变成长得像是“正经系统”的东西。你手里可能已经有了能跑通的代码,也可能刚读完一些概念,但真到了要把它变成可维护、可观测…

2026/10/2 0:00:20 阅读更多 →
大模型训练显存估计与混合精度训练实战指南

大模型训练显存估计与混合精度训练实战指南

1. 大模型训练显存估计与混合精度训练详解显存不够用,几乎是每个做大模型训练的人都会撞上的第一堵墙。你可能也经历过:模型代码写完了,数据管道跑通了,满心欢喜地按下训练启动脚本,结果几秒钟后终端弹出一行红字——C…

2026/10/2 0:00:20 阅读更多 →
小样本学习数据集选型指南:27个真正可用的高质量数据集

小样本学习数据集选型指南:27个真正可用的高质量数据集

1. 小样本学习的“弹药库”:为什么你总在找数据集,却总找不到真正能用的? 小样本、数据集——这两个词最近半年在我处理的200多个AI项目咨询里,出现频率排进前三。不是模型调不好,不是代码写不对,而是卡在…

2026/10/2 0:00:20 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/1 20:05:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 5:26:06 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 6:09:11 阅读更多 →