有些客户有等保的数据库双因子认证的需求,这里是配置 SSL双因子身份验证部署
1、创建目录
/opt/ca 作为生成秘钥文件的目录,server_ssl存放服务器秘钥文件目录,client_ssl存放客户端秘钥文件目录。
#root下执行
mkdir /opt/ca
cd /opt/ca
mkdir server_ssl
mkdir client_ssl
2、生成 CA 根证书(签发所有证书)
这里需要设置一个CA私钥密码, 后面用到ca的key时,都是需要这个密码的。
2.1、生成CA私钥 (密码 Ca_123456)
openssl genrsa -aes256 -out ca-key.pem 4096
2.2、生成CA根证书,有效期10年
openssl req -new -x509 -days 3650 -key ca-key.pem -out ca-cert.pem -subj "/C=CN/ST=LIAONING/L=DALIAN/O=DAMENG/OU=DBA/CN=DM-CA-ROOT"
3、生成数据库服务端证书(数据库实例使用)
3.1、生成没有密码的服务端key
不设置密码,数据库启动就不用密码,如果设置了密码,数据库启动时都需要输入这个密码。
openssl genrsa -out server_ssl/server-key.pem
3.2、生成证书请求csr
这里的CN 设置的是数据库名字,考虑到集群的情况。
openssl req -new -key server_ssl/server-key.pem -out server_ssl/server.csr -subj "/C=CN/ST=LIAONING/L=DALIAN/O=DAMENG/OU=DBA/CN=DAMENG"
3.3、CA签发服务端证书,有效期10年
这里需要CA的密码(Ca_123456)
openssl x509 -req -days 3650 -in server_ssl/server.csr -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out server_ssl/server-cert.pem
3.4、复制CA根证书、秘钥到服务端证书目录中
cp ca-cert.pem server_ssl/
cp ca-key.pem server_ssl/
4、生成客户端证书(双因子登录核心,每个数据库用户单独有自己的证书)
本例子是生成SYSDBA用户的登入证书
4.1、客户端私钥,加密密码 Cli_123456 (这个密码也是通过disql登入数据库时需要使用的密码)
mkdir client_ssl/SYSDBA
openssl genrsa -aes256 -out client_ssl/SYSDBA/client-key.pem 4096
4.2、客户端证书请求
CN 一定要设置为 数据库用户的名字,登入数据库用户的名字 需要输入 密码 Cli_123456
openssl req -new -key client_ssl/SYSDBA/client-key.pem -out client_ssl/SYSDBA/client.csr -subj "/C=CN/ST=LIAONING/L=DALIAN/O=DAMENG/OU=DBA/CN=SYSDBA"
4.3、CA签发客户端证书,有效期10年
这里需要CA的密码(Ca_123456)
openssl x509 -req -days 3650 -in client_ssl/SYSDBA/client.csr -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out client_ssl/SYSDBA/client-cert.pem
4.4、CA证书拷贝到客户端认证目录中(client_ssl/SYSDBA)
cp ca-cert.pem client_ssl/SYSDBA/
4.5、jdbc连接证书生成
将私钥和证书合并转化为pkcs12格式文件
需要使用 密码 Cli_123456
需要设定Export密码,本例设置为Abc_123456
openssl pkcs12 -export -inkey client_ssl/SYSDBA/client-key.pem -in client_ssl/SYSDBA/client-cert.pem -out client_ssl/SYSDBA/client-pkcs.p12
导入所有证书到keystore文件,并设置keystore文件密码为Abc_123456(-deststorepass)(jdbc连接数据库使用的密码)
keytool -import -alias ca -trustcacerts -file ca-cert.pem -keystore client_ssl/SYSDBA/.keystore -deststorepass Abc_123456 -noprompt
keytool -import -alias server -trustcacerts -file server_ssl/server-cert.pem -keystore client_ssl/SYSDBA/.keystore -deststorepass Abc_123456 -noprompt
keytool -importkeystore -srckeystore client_ssl/SYSDBA/client-pkcs.p12 -srcstorepass Abc_123456 -srcstoretype PKCS12 -keystore client_ssl/SYSDBA/.keystore -deststorepass Abc_123456
5、部署SSL证书到服务端
将生成的服务器秘钥文件夹 server_ssl 拷贝到 达梦数据库home目录下的bin下,替换之前的server_ssl文件夹。
cd /data/dm/dmdbms/bin
mv server_ssl server_ssl_bak
cp /opt/ca/server_ssl ./ -r
chown -R dmdba:dinstall server_ssl
6.部署client端证书
将/opt/ca/client_ssl整个目录拷贝到客户端机器上。
mv client_ssl/ client_ssl_bak
cp /opt/ca/client_ssl ./ -r
chown -R dmdba:dinstall client_ssl
注意:应用服务器配置需要把这个client_ssl目录拷贝到应用服务器上,注意权限。
7、达梦数据库配置加密参数
SP_SET_PARA_VALUE(2,'ENABLE_ENCRYPT',1);
SQL> select name,value,file_value from v$parameter where name like '%ENABLE_ENCRYPT%' or name like '%COMM_ENCRYPT_NAME%';
重启数据库
8、数据库连接
disql连接
[dmdba@ecm ~]$ disql /nolog
disql V8
SQL> login
服务名:xxxxx
用户名:SYSDBA
密码:xxxx
SSL路径:/data/dm/dmdbms/bin/client_ssl/SYSDBA
SSL密码:Cli_123456
UKEY名称:按回车
UKEY PIN码:按回车
MPP类型:按回车
是否读写分离(y/n):按回车
协议类型:按回车
服务器[172.xxx:5236]:处于主库打开状态
登录使用时间 : 23.582(ms)
SQL>
manager连接
#连接页面
配置 用户名和密码
#高级选项
jdbc:dm://172.xxxx:5236?sslFilesPath=/data/dm/dmdbms/bin/client_ssl/SYSDBA&sslKeystorePass=Abc_123456
https://eco.dameng.com
文章
阅读量
获赞
