达梦的数字证书的制作采用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.检验通信加密是否开启的手段
在这里插入图片描述
如果还有任何问题,欢迎到达梦在线服务平台提问
社区 | 达梦在线服务平台https://eco.dameng.com

更多推荐