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

相关概念:

SSL通过在发送方和接收方之间建立加密通道,确保数据在传输过程中的安全性和完整性。

SSL的关键特点

加密通信:SSL使用对称和非对称加密技术来加密数据,确保数据在传输过程中不被窃听或篡改。

身份验证:通过数字证书验证通信双方的身份,确保数据发送给正确的接收方。

完整性保护:使用消息认证码(MAC)或散列函数来检查数据在传输过程中是否被修改。

SSL的组件

证书:SSL使用数字证书来验证服务器的身份。每个证书都包含服务器的公钥和身份信息。

证书颁发机构(CA):独立的第三方,用于验证和颁发数字证书,确保它们的可靠性和有效性。

加密算法:SSL使用多种加密算法,如RSA、AES和3DES,来加密和解密数据。

SSL的握手过程

客户端Hello:客户端发送一个包含其SSL版本和加密套件的请求。

服务器Hello:服务器响应客户端的请求,选择一个加密套件,并发送其证书。

密钥交换:客户端和服务器使用选定的加密套件交换密钥,以创建会话密钥。

会话建立:使用会话密钥加密和解密数据,确保数据的私密性和完整性。

CA,即Certificate Authority,数字证书中心。 是指具备一定资质条件的数字证书签发机构,包含根密钥和根证书, 其核心功能就是通过根密钥和根证书并使用一定的算法来"签发"和"管理"数字证书。

数字证书 通常是由相关的CA进行签发,安全性可以得到绝对可靠。通常情况下,数字证书中一般包含公钥并由CA对其进行数字签名,证书的作用也主要是用来证明公钥的真实性与合法性。

数字签名 数字签名是一种基于公钥加密技术的电子签名,用于确保数据的完整性和验证数据发送者的身份。它通过使用发送者的私钥对数据进行加密,接收者则使用发送者的公钥对签名进行解密和验证。

一、安装OPENSSL工具

下载openssl软件库包。

官网 https://www.openssl.org/source/old/

或者:软件下载地址:http://slproweb.com/products/Win32OpenSSL.html

双击运行Win64OpenSSL-3_3_2.exe文件,注意安装路径位置不要带有空格或者中文字符,其他默认下一步即可


注意在写安装路径的时候,不要用Program files路径,系统默认可能选择此路径。后续会报错:

报错:Can't open "C:\Program Files\OpenSSL-Win64\bin" for reading, Permission denied

用管理员身份执行cmd也报错。


安装路径设置如下路径:

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0ee92cf227bc4064adde777e994151df.pn

在这里插入图片描述

在这里插入图片描述

新建系统环境变量:

增加系统环境变量环境变量"OPENSSL_CONF"值为"C:\OpenSSL-Win64\bin\openssl.cfg"。

并将"并将"C:\OpenSSL-Win64\bin\"加到 path 环境变量中。"加到 path 环境变量中。

二、配置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

三、安装JDK

下载地址:

官网下载地址 https://www.oracle.com/java/technologies/javase

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

切换到openssl的bin目录下:可以查看帮助菜单

执行以下的脚本:

bash 复制代码
set OPENSSL_CONF=C:\OpenSSL-Win64\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  cakey.pem  -out  cacert.pem  -subj "/C=cn/ST=hubei/L=wuhan/O=dameng/OU=tech/CN=tech/emailAddress=tech@test.com"

执行脚本

call SSL.bat

本例设置的密码是123456。生成的ca私钥是ca-key.pem,自签名证书是:ca-cert.pem,都位于C:\OpenSSL-Win64\bin目录下面。

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

执行如下脚本:

备注:由于我直接执行会有乱码,所以一条一条的执行如下脚本

bash 复制代码
set OPENSSL_CONF=C:\OpenSSL-Win64\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=server@demeng.com"
#生成 server经ca签名的证书server-cert.pem
openssl ca --days 365 -in server.csr -out server-cert.pem
#将server可信证书转换为格式X509格式
openssl x509 -in server-cert.pem -out server.cer
copy cacert.pem server_ssl\
copy cakey.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\

报错:Could not open file or uri for loading CA private key from ./CA/private/cakey.pem: No such file or directory

将cakey.pem以及cacert.pem复制到/CA/private/目录

执行过程中,当要求输入 cakey.pem 的存储私钥时,请输入前面设置的"123456"。

openssl ca --days 365 -in server.csr -out server-cert.pem

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

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

bash 复制代码
set OPENSSL_CONF=C:\OpenSSL-Win64\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 --days 365 -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\

注:执行过程中,当要求输入 cakey.pem 的存储私钥时,请输入"123456",当要求输入 pkcs.p12 的 export password 时,请务必输入小写的"changeit"。



若需生成多个用户则全局替换用户名之后,再次执行,一个用户名只能执行一次,执行两次或以上会出现错误;

最后将目录下的server_ssl和client_ssl文件夹都拷贝到dmdbms\bin\目录下即可使用。

相关推荐
幽兰的天空1 小时前
介绍 HTTP 请求如何实现跨域
网络·网络协议·http
lisenustc1 小时前
HTTP post请求工具类
网络·网络协议·http
心平气和️1 小时前
HTTP 配置与应用(不同网段)
网络·网络协议·计算机网络·http
初级代码游戏2 小时前
openssl 正确生成v3带SAN的证书
https·证书·ssl·openssl·tls·v3
加酶洗衣粉2 小时前
MongoDB部署模式
数据库·mongodb
Suyuoa2 小时前
mongoDB常见指令
数据库·mongodb
添砖,加瓦2 小时前
MongoDB详细讲解
数据库·mongodb
Zda天天爱打卡2 小时前
【趣学SQL】第二章:高级查询技巧 2.2 子查询的高级用法——SQL世界的“俄罗斯套娃“艺术
数据库·sql
我的运维人生2 小时前
MongoDB深度解析与实践案例
数据库·mongodb·运维开发·技术共享
Gworg2 小时前
网站HTTP改成HTTPS
网络协议·http·https