注册
达梦数据库配置SSL通信加密
培训园地/ 文章详情 /

达梦数据库配置SSL通信加密

y. 2022/11/17 1700 1 3

达梦的数字证书的制作采用openssl工具实现,openssl是一个开放源代码的软件库包,软件库包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库。

一、安装OPENSSL工具

下载openssl软件库包。
方法一:官网 https://www.openssl.org/source/old/ (tar.gz 源代码安装法)
方法二:exe格式安装包
http://slproweb.com/products/Win32OpenSSL.html
http://slproweb.com/download/Win64OpenSSL_Light-1_1_1q.exe
这个网站不是官网,它是专门为不会源代码方式安装的用户准备的,它从openssl的官网下载下来源代码编译为各个平台的执行码,然后做一个界面向导方式的安装程序,方便大家界面向导方式安装。

备注:选择一个适合Win64平台的、exe格式可执行程序,单机下载。如选择轻量级的安装文件只有3-4MB大小,基本上一分钟以内就下载好了。

我们采用exe格式的安装包来安装,因为它对初学者友好、简单,合适windows。

双击运行Win64OpenSSL-3_0_5.exe文件,注意安装路径位置不要带有空格或者中文字符,其他默认下一步即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、配置openssl.cfg文件

用记事本打开C:\OpenSSL\bin\路径下的openssl.cfg 文件
dir:所有生成的文件存放的默认路径
database:签发过的证书的列表文件
new_certs_dir:存放所有新签发的证书
serial:下一个要签发的证书的序号,第一个从1开始
certificate:CA的证书文件的名字
private_key:CA的私钥文件的名字
default_days:签发证书的默认有效期,365天会经常过期不能用了,我们手动设置为3650天。
default_bit:私钥默认的长度大小,1024不够安全,我们手动设置2048

另外:我们需要手动在bin下创建ca文件夹,ca文件夹下再创建newcerts、private子文件夹。ca文件夹下创建一个内容为空的index.txt;创建一个内容为01的serial文件;privite文件夹下创建一个内容为空的.rand
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

三、安装JDK

下载地址:
JDK 1.7官网下载地址 https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html
在这里插入图片描述
下载后安装在不带空格、特殊符号、中文字符的目录下,如:C:\JDK

四、生成CA私钥和自签名证书

在这里插入图片描述
在这里插入图片描述
运行cmd.exe,切换到 C:\OpenSSL\bin 目录下,执行以下的脚本:

set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cfg echo %OPENSSL_CONF% rd /s /q ca mkdir .\ca mkdir .\ca\newcerts mkdir .\ca\private copy nul ca\index.txt set /p="01"<nul>>ca\serial mkdir server_ssl mkdir client_ssl #echo 生成 ca 私钥(ca-key.pem)和 ca 自签名证书(ca-cert.pem),需输入 ca 私钥存储密码 openssl req -new -x509 -days 3650 -keyout ca-key.pem -out ca-cert.pem -subj /C=cn/ST=hubei/L=wuhan/O=dameng/OU=tech/CN=tech/emailAddress=fcy@demeng.com

注:最后一条命令执行过程会要求用户输入长度大于等于 4 字符的 ca 私钥存储密码。本例设置的密码是changeit。生成的ca私钥是ca-key.pem,自签名证书是:ca-cert.pem,都
位于C:\OpenSSL\bin目录下面。

五、生成server端私钥和被ca签名的server数字证书

在上述命令行程序中继续执行下述语句:

set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cfg echo %OPENSSL_CONF% #生成server私钥 server-key.pem(无密码) openssl genrsa -out server-key.pem 2048 #生成server证书请求server.csr openssl req -new -key server-key.pem -out server.csr -subj "/C=cn/ST=hubei/L=wuhan/O=dameng/OU=tech/CN=server/emailAddress=fcy@demeng.com" #生成 server经ca签名的证书server-cert.pem openssl ca -startdate 20190821235959-0700 -enddate 20290821235959-0700 -in server.csr -out server-cert.pem #将server可信证书转换为格式X509格式 openssl x509 -in server-cert.pem -out server.cer copy ca-cert.pem server_ssl\ copy ca-key.pem server_ssl\ copy server.csr server_ssl\ copy server.cer server_ssl\ copy server-cert.pem server_ssl\ copy server-key.pem server_ssl\

注:执行过程中,当要求输入 ca-key.pem 的存储私钥时,请输入前面设置的“changeit”。

六、生成用户私钥和被ca签名的用户数字证书

此处的用户名为 SYSDBA,若是其他用户名只需全局替换用户名即可。在上述命令行程序中继续执行下述语句:

set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cfg echo %OPENSSL_CONF% mkdir .\SYSDBA #生成SYSDBA 私钥 client-key.pem openssl genrsa -out SYSDBA/client-key.pem 2048 #生成SYSDBA证书请求client.csr openssl req -new -key SYSDBA/client-key.pem -out SYSDBA/client.csr -subj "/C=cn/ST=hubei/L=wuhan/O=dameng/OU=tech/CN=SYSDBA/emailAddress=SYSDBA@dameng.com" #生成SYSDBA经ca签名证书client-cert.pem openssl ca -startdate 20190821235959-0700 -enddate 20290821235959-0700 -in SYSDBA/client.csr -out SYSDBA/client-cert.pem #将X509格式的 client-key.pem 和 client-cert.pem 合并转换为 pkcs12 格式的文件client-pkcs.p12 #务必输入export password为 changeit(小写) openssl pkcs12 -export -inkey SYSDBA/client-key.pem -in SYSDBA/client-cert.pem -out SYSDBA/client-pkcs.p12 keytool -import -alias ca -trustcacerts -file ca-cert.pem -keystore SYSDBA/.keystore -deststorepass changeit -noprompt keytool -import -alias server -trustcacerts -file server.cer -keystore SYSDBA/.keystore -deststorepass changeit -noprompt keytool -v -importkeystore -srckeystore SYSDBA/client-pkcs.p12 -srcstoretype PKCS12 -keystore SYSDBA/.keystore -deststorepass changeit copy ca-cert.pem SYSDBA\ move SYSDBA client_ssl\

注:执行过程中,当要求输入 ca-key.pem 的存储私钥时,请输入“changeit”,当要求输入 pkcs.p12 的 export password 时,请务必输入小写的“changeit”。
若需生成多个用户则全局替换用户名之后,再次执行,一个用户名只能执行一次,执行两次或以上会出现错误;最后将目录下的server_ssl和client_ssl文件夹都拷贝到dmdbms\bin\目录下即可使用。

七、证书信息

正常的用户证书制作完,总共会有6个文件,且都有文件大小,如果你的证书有出现0kb,或者少于6个的,说明你的证书制作的有问题
在这里插入图片描述
正常的server端证书样式如下:
在这里插入图片描述

八、上传证书到服务器

将成功制作好的证书,上传到数据库上,可通过ps -ef | grep dmserver查看数据库安装位置,我的在/opt/dmdbms/下
在这里插入图片描述
找到对应server_ssl跟client_ssl路径,我的为/opt/dmdbms/bin/client_ssl跟server_ssl,然后将你做好的证书替换到该目录下里头,原数据库默认证书记得保存一份,然后把对应证书的权限给上,这一步很重要,权限一定要是你当前的用户权限
在这里插入图片描述

九、修改dm.ini文件

进入到你的实例目录下,找到dm.ini文件,修改ENABLE_ENCRYPT参数为1,并设置COMM_ENCRYPT_NAME加密算法,加密算法按照用户个人需求填写,具体有哪些加密算法,可以参考DM安全管理手册
在这里插入图片描述

十、重启服务

重新启动数据库服务

十一、剥离server key

由于证书本身被加密,就会导致如果你是以systemctl服务启动时候需要通过输入密码进行解密后加载,而后台服务启动缺少交互输入导致启动失败。
生效方式有两种:

  1. 前台启动服务,会提示你输入enter pem内容,该密码就是你生成证书时候的密码
  2. 还是以服务方式启动,但是需要把服务器端的key里面的key剥离掉
    此处需要对server-key.pem进行密码剥离,使其不用输入密码
    在这里插入图片描述
  3. 重新启动服务即可

十二、使用ssl加密方式登陆数据库

1)disql工具

./disql SYSDBA/8ay%y2kKEe@localhost:10236#“{ssl_path=/home/dmdba/dmdbms/bin/client_ssl/SYSDBA,ssl_pwd=Hzfc_77_88_99}”

关于disql登录疑问解答
在这里插入图片描述

2)使用客户端manager工具

1.将生成好的client_ssl证书拷贝到你的达梦客户端安装目录里(提前把client_ssl备份一份),我的客户端目录如下
在这里插入图片描述
2.启动客户端进行验证
直接输入密码会提示SSL环境失败,是因为当前环境是开启加密环境,必须配置ssl才能进入
在这里插入图片描述
选择高级里面,选择客户端证书位置,然后输入证书密码
在这里插入图片描述
登陆后可以看到开启ssl加密,这样就ok拉
在这里插入图片描述
3.检验通信加密是否开启的手段
在这里插入图片描述

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服