DM8配置SSL

一、Docker运行DM8服务

a.获取镜像并加载
dm8-20250206-x86-rh6-rq-single.tar

bash 复制代码
docker load -i dm8_20250206_x86_rh6_rq_single.tar

b.创建数据目录

bash 复制代码
mkdir -p /opt/docker/dm8_ssl/data
chmod 777 /opt/docker -R

c.运行(数据库密码根据实际情况修改)

bash 复制代码
docker run -d \
  --name dm8_ssl \
  --privileged=true \
  --restart=always \
  -p 15236:5236 \
  -e LD_LIBRARY_PATH=/opt/dmdbms/bin \
  -e PAGE_SIZE=16 \
  -e EXTENT_SIZE=32 \
  -e LOG_SIZE=1024 \
  -e UNICODE_FLAG=1 \
  -e INSTANCE_NAME=dm8_ssl \
  -e SYSDBA_PWD={{自定义密码}} \
  -v /opt/docker/dm8_ssl/data:/opt/dmdbms/data \
  dm8:dm8_20250206_rev257733_x86_rh6_64

d.查看日志

bash 复制代码
docker logs -f dm8_ssl

e.客户端连接测试

连接信息如下:

hostname: localhost

port: 15236

username1: SYSDBA

password1: {{自定义密码}}

二、配置SSL

a.容器内已经存在证书文件

bash 复制代码
# 客户端证书
/opt/dmdbms/bin/client_ssl
# 服务端证书
/opt/dmdbms/bin/server_ssl

b.将容器内证书复制到服务器上

bash 复制代码
docker cp dm8_ssl:/opt/dmdbms/bin/client_ssl/SYSDBA /root/ssl_file/dm8_ssl

c.进入证书目录

bash 复制代码
cd /root/ssl_file/dm8_ssl/SYSDBA

d.编写脚本(rebuild_keystore.sh)

bash 复制代码
#!/bin/bash
#cd /opt/dmdbms/bin/client_ssl/SYSDBA
echo "=== 重新生成 .keystore 文件 ==="

# 输入新密码
read -sp "请输入新的密钥库密码: " NEW_PASS
echo ""

# 备份旧文件
[ -f .keystore ] && mv .keystore .keystore.bak

# 生成 PKCS12
openssl pkcs12 -export -inkey client-key.pem -in client-cert.pem -out client.p12 -password pass:$NEW_PASS

# 转换为 keystore
keytool -importkeystore -srckeystore client.p12 -srcstoretype PKCS12 -srcstorepass $NEW_PASS -destkeystore .keystore -deststorepass $NEW_PASS -noprompt

# 导入 CA 证书
keytool -import -alias ca -trustcacerts -file ca-cert.pem -keystore .keystore -storepass $NEW_PASS -noprompt

# 清理临时文件
rm -f client.p12

# 验证
echo "=== 验证 keystore ==="
keytool -list -keystore .keystore -storepass $NEW_PASS

echo "✅  完成!新密码已设置为: $NEW_PASS"

e.执行脚本(记住设置的密码,客户端连接时需要用到)

bash 复制代码
./rebuild_keystore.sh

f.修改服务端配置

bash 复制代码
# 将ENABLE_ENCRYPT设置为1
vim /opt/docker/dm8_ssl/data/DAMENG/dm.ini

g.重启服务

bash 复制代码
# 方式一
docker restart dm8_ssl
# 方式二
docker exec -it dm8_ssl /bin/bash
/opt/dmdbms/bin/DmService restart

三、验证SSL

a.dbeaver验证

bash 复制代码
# JdbcURL如下:
jdbc:dm://ip:15236?sslFilesPath=E:\\client_ssl\\dm8&sslKeystorePass=keystore文件密码
sslFilesPath: 指定 .keystore 文件目录,注意是所在目录
sslKeystorePass: 生成 .keystore 文件时设置的密码
相关推荐
小马92616 小时前
智能体时代的两块基石:DeepSeek Harness 开源与“认知基础设施“数据库
数据库·人工智能·开源·agent
那年窗外下的雪.17 小时前
VXLAN EVPN 分层排障:从 VTEP 可达、ARP/MAC 到 MAC Mobility
服务器·前端·网络·数据库·spine
冰暮流星17 小时前
mysql练习1
数据库·mysql
三84417 小时前
MySQL 文件读写函数详解:从 CTF 实战到 LOAD_FILE、INTO OUTFILE、LOAD DATA INFILE 应用
数据库·sql
jufeng130718 小时前
【系列:TDengine 工业物联网实战:从零搭起可运行系统 · 第 10 篇】
docker·时序数据库·tdengine·高可用
来让爷抱一个18 小时前
拯救我的“烂尾“项目:我用MonkeyCode把五个AI热点实践了个遍
网络·数据库·人工智能·prompt·ai编程
可涵不会debug18 小时前
LangChain 示例选择器(Example selectors)完整基础概念解读
服务器·前端·数据库
_Narcissus_18 小时前
B树概念及操作笔记(含完整代码实现)
c语言·数据结构·数据库·c++·笔记·b树·算法
l12586518 小时前
# RAG多轮对话检索设计:Query重写如何让“那它呢“变成完整问题
前端·数据库·人工智能·python·算法·fastapi·milvus
小弥儿18 小时前
GitHub今日热榜 | 2026-08-20:Agent 上下文数据库接棒
数据库·学习·开源·github