大家好 ,我是阿萨。随着安全越来越重要,数据库的连接也开始启用SSL连接了。 有不了解SSL 连接方式的,可以参考如下文章:
今天主要讲解下Postgresql 配置单向SSL 证书连接的方式。
一,什么是单向认证?
SSL 单向认证过程:客户端校验下服务器端证书的合法性就可以了。就类似你给家里的箱子上了锁,只要你有钥匙 就可以开门。不需要其他的信息。
单向认证过程,客户端不需要整证书。服务器端需要一个crt 和一个key 组合成一个证书文件。
二, 如何生成证书?
先查看下openssl 版本
openssl version
先创建key
openssl genrsa -out server.key 2048openssl genrsa -des3 -out server.key 2048
再生成crt
openssl req -new -x509 -key server.key -out server.crt -days 365
三, 如何配置Postgresql?
先找到Postgresql的data 目录
cd /var/lib/pgsql/12/data
复制server.crt 和 server.key 到对应的目录下
cp server.crt @pgData/server.crtcp server.key @pgData/server.key
修改这2个文件的权限,(一定要修改,否则等会无法重启)
chmod 600 server.*
修改这2个文件的宿主
chown postgres:postgres server.*
修改postgres.conf 文件,增加如下内容
vi postgres.confssl = on ssl_cert_file = 'server.crt' ssl_key_file = 'server.key'
修改pg_hba.conf,增加如下内容:
hostssl all all 0.0.0.0/0 md5
然后重启postgres
systemctl restart postgresql-12
四. 客户端连接
我用的dbeaver 连接的,第一页信息和其他一样,重点是SSL 的配置:
我截图展示下:点测试成功即可。
五, SSL 连接模式介绍
sslmode | 窃听保护 | 中间人 保护 | 描述 |
disable | 不支持 | 不支持 | 我不在乎安全,我也不想支付加密的开销。 |
allow | 可能支持 | 不支持 | 我不关心安全问题,但如果服务器坚持要加密的话,我会支付加密的开销。 |
prefer | 可能支持 | 不支持 | 我不关心加密,但如果服务器支持加密,我愿意支付加密的开销。 |
require | 支持 | 不支持 | 我希望我的数据被加密,我接受开销。我相信网络将确保我始终连接到我想要的服务器 |
verify-ca | 支持 | 引来CA策略 | 我希望我的数据加密,我接受开销。我想确保我连接到一个我信任的服务器。 |
verify-full | 支持 | 不支持 | 我想加密我的数据,我接受开销。我希望确保连接到我信任的服务器,并且它是我指定的服务器。 |
最简单的postgresSQL 配置就完成了。