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 文件时设置的密码
相关推荐
KaiwuDB20 分钟前
KaiwuDB 运维实战04:DRBD + KaiwuDB——物联网场景下的低成本数据库高可用方案
运维·数据库·物联网·时序数据库·kaiwudb·aiot·多模数据库
谢亮_vipxieliang1 小时前
镜像安全:扫描、签名与软件供应链
安全·docker
夜雪一千2 小时前
MySQL外键彻底入门:是什么、怎么用、什么时候不该用
数据库·mysql
qq_334466862 小时前
删除SSMS的历史登录记录
数据库·sql
天衍四九-2 小时前
Docker容器实战系列(八):Docker生产最佳实践与避坑指南,系列终章
运维·docker·容器
zl_dfq2 小时前
Redis 之 【常见面试题总结】(从数据类型到高可用、缓存一致性全解析)
数据库·redis
龙亘川2 小时前
铭记英烈守初心,数字强基促服务:亘川智城退役军人服务系统的实践与价值
java·数据库·人工智能
kv1103 小时前
Android studio国内开发有关
java·数据库·android studio
哭泣方源炼蛊4 小时前
正则表达式c++内容汇集
数据库·c++·mysql·正则表达式
余槐i4 小时前
EXPLAIN 显示走了索引查询仍慢:回表与选择性在 500 万行表上拉开 10 倍耗时
数据库·postgresql·性能优化·vacuum·explain