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 文件时设置的密码
相关推荐
武子康14 小时前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
倔强的石头_2 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
冬奇Lab2 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence3 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
无响应de神3 天前
三、用户与权限管理
数据库·mysql
Alsn864 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
麦聪聊数据4 天前
数据服务化时代:企业数据能力输出的核心路径
数据库
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
DARLING Zero two♡4 天前
【MySQL数据库】数据类型与表约束
数据库·mysql
程序员mine4 天前
HTTPS-TLS加密与证书完全指南(中)
网络协议·https·ssl