unvdb开启ssl单向认证方式
**SSL单向认证: **只有一端校验对端的证书合法性,通常都是客户端来校验服务器的合法性。即在一般的单向认证中,只要求服务器端部署了ssl证书就行,客户端可以无证书,任何用户都可以去访问服务端,服务端只是提供了身份认证。
client: 无证书 server: server.crt, server.key
使用opsnessl生成密钥和自签名证书
生成一个有效期365天的简单自签名证书
[unvdb@arm18 ~]$ openssl req -new -x509 -days 365 -nodes -text -out server.crt -keyout server.key -subj "/CN=192.168.4.18"
Generating a 2048 bit RSA private key
.....................................................................+++
.................................................................................................+++
writing new private key to 'server.key'
-----
[unvdb@arm18 ~]$ ll
总用量 8
-rw-rw-r-- 1 unvdb unvdb 4087 5月 9 11:32 server.crt
-rw-rw-r-- 1 unvdb unvdb 1704 5月 9 11:32 server.key
openssl req 参数说明
-new :创建一个证书请求文件,会交互式提醒输入一些信息,这些交互选项以及交互选项信息的长度值以及其他一些扩展属性在配置文件(默认为 :openssl.cnf,还有些辅助配置文件)中指定了默认值。如果没有指定"-key"选项,则会自动生成一个RSA私钥,该私钥的生成位置 :也在openssl.cnf中指定了。如果指定了-x509选项,则表示创建的是自签署证书文件,而非证书请求文件 -x509 :指定该选项时,将生成一个自签署证书,而不是创建证书请求。一般用于测试或者为根CA创建自签名证书 -days n :指定自签名证书的有效期限,默认30天,需要和"-x509"一起使用。 -nodes :默认情况下,openssl req自动创建私钥时都要求加密并提示输入加密密码,指定该选项后则禁止对私钥文件加密 -text :以文本格式打印证书请求 -out filename :证书请求或自签署证书的输出文件,也可以是其他内容的输出文件,不指定时默认stdout -keyout filename :指定自动创建私钥时私钥的存放位置,若未指定该选项,则使用配置文件中default_keyfile指定的值,默认该值为privkey.pem -subj args :替换或自定义证书请求时需要输入的信息,并输出修改后的请求信息。args的格式为"/type0=value0/type1=value1...", :如果value为空,则表示使用配置文件中指定的默认值,如果value值为".",则表示该项留空。其中可识别type(man req)有: :C是Country、ST是state、L是localcity、O是Organization、OU是Organization Unit、CN是common name等
修改权限
[unvdb@arm18 ~]$ chmod 600 server.key
[unvdb@arm18 ~]$ ll
总用量 8
-rw-rw-r-- 1 unvdb unvdb 4087 5月 9 11:32 server.crt
-rw------- 1 unvdb unvdb 1704 5月 9 11:32 server.key
复制认证文件到数据目录下
cp server.crt /data/udb
cp server.key /data/udb
配置unvdbsvr.conf和ud_hba.conf文件
--修改unvdbsvr.conf
ssl=on
ssl_cert_file='server.crt'
ssl_key_file='server.key'
#ssl_ca_file 是用在客户端SSL双向认证上,服务端的SSL验证和此参数无关
--修改ud_hba.conf,新增ssl认证连接规则
hostssl all all 0.0.0.0/0 md5
hostnossl all all 0.0.0.0/0 reject
重启数据库,连接数据库可以看到ssl生效
[root@nna ~]# ud_sql -U unvdb "host=192.168.43.100 dbname=test port=1111 user=unvdb"
Password for user unvdb:
ud_sql (24.2, server 22.4)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.
test=#