相关概念:

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目录下:可以查看帮助菜单
在这里插入图片描述

执行以下的脚本:

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数字证书

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

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,若是其他用户名只需全局替换用户名即可。在上述命令行程序中继续执行下述语句:

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\目录下即可使用。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐