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 文件时设置的密码
相关推荐
catoop13 小时前
API Key 设计与安全生成方案:结构拆解、数据库设计与 Java 实现
java·数据库·安全
Web极客码13 小时前
我用 Claude 分析 Redis 哨兵日志,实现跨机房数据不一致自动对齐
数据库·redis·php
库库的数据库笔记13 小时前
国产信创数据库的MySQL兼容性深度对比解析
大数据·数据库·mysql·oceanbase·政务
姚远Oracle ACE14 小时前
为什么无法连接到 PostgreSQL?
数据库·postgresql
ss27314 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 22 PostgreSQL实例与集群
数据库·笔记·postgresql
ss27314 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 21 PostgreSQL进程与内存架构介绍
数据库·笔记·postgresql
Henry-SAP15 小时前
SAP PP模块全景概览
数据库
喜欢吃豆16 小时前
Better Auth 深度解析:从用户认证到企业级身份基础设施
数据库·架构·权限·多租户
其实防守也摸鱼16 小时前
Cylab在线靶场——CTF中的通用技能
linux·数据库·学习·算法·靶场·ctf·学习网络安全