1、安装 openssl-win32.exe
解压 windwosOpenssl_32and64.zip 文件,双击.exe 文件进行安装,请将安装目录维持默认(即 C:\OpenSSL);安装完成以后,增加系统环境变量环境变量“OPENSSL_CONF”值为“C:\OpenSSL\bin\openssl.cfg”。并将“C:\OpenSSL\bin\”加到 path 环境变量中。
注:请安装32位的openssl软件。软件下载地址:http://slproweb.com/products/Win32OpenSSL.html
2、安装JDK和keytool.exe
确保机器上已经安装了JDK,并将 JDK 下的 keytool.exe 所在的文件路径加到 path 环境变量中。如果你的机器上没有安装 JDK,但是安装了达梦客户端,比如安装在D盘,则在“D:\dmdbms\jdk\bin”中有 keytool.exe 工具,那么你可以将“D:\dmdbms\jdk\bin”加到 path 环境变量中。
3、配置openssl.cfg文件
用记事本打开C:\OpenSSL\bin\路径下的openssl.cfg 文件,然后在[ CA_default ]一节修改如下的配置项:
[ CA_default ]
dir = ./ca # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
#unique_subject = no # Set to 'no' to allow creation of
#several ctificates with same subject.
new_certs_dir = $dir/newcerts # default place for new certs.
certificate = ca-cert.pem #The CA certificate
serial = $dir/serial # The current serial number
crlnumber = $dir/crlnumber # the current crl number
#must be commented out to leave a V1 CRL
crl = $dir/crl.pem # The current CRL
private_key = ca-key.pem # The private ke
RANDFILE = $dir/private/.rand # private random number file
4、生成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=tech@test.com"
注:最后一条命令执行过程会要求用户输入长度大于等于 4 字符的 ca 私钥存储密码。本例设置的密码是123456。生成的ca私钥是ca-key.pem,自签名证书是:ca-cert.pem,都位于C:\OpenSSL\bin目录下面。
5、生成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=server@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 的存储私钥时,请输入前面设置的“123456”。
6、生成用户私钥和被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 的存储私钥时,请输入“123456”,当要求输入 pkcs.p12 的 export password 时,请务必输入小写的“changeit”。
若需生成多个用户则全局替换用户名之后,再次执行,一个用户名只能执行一次,执行两次或以上会出现错误;最后将目录下的server_ssl和client_ssl文件夹都拷贝到dmdbms\bin\目录下即可使用。
7、开启通信加密
修改dm.ini将ENABLE_ENCRYPT的值改为1。
8、使用ssl加密方式登陆数据库
8.1disql工具
需要将新生成的加密client_ssl替换系统自带的client_ssl。切换到dmdbms/bin目录:
./disql SYSDBA/SYSDBA#/dm/dmdbms/bin/client_ssl/SYSDBA/@changeit