PG特性之配置SSL连接

PostgreSQL支持使用ssl加密连接来增加安全性,要启用这个特性,数据库在编译时必须指定–with-openssl选项

SSL 服务器文件作用

文件内容效果
ssl_cert_file ($PGDATA/server.crt)服务器证书发送给客户端来说明服务器的身份
ssl_key_file ($PGDATA/server.key)服务器私钥证明服务器证书是其所有者发送的,并不说明证书所有者是值得信任的
ssl_ca_file可信的证书颁发机构检查客户端证书是由一个可信的证书颁发机构签名的
ssl_crl_file被证书授权机构撤销的证书客户端证书不能出现在这个列表上

配置步骤

创建自签名证书

openssl req -new -x509 -days 365 -nodes -text -out server.crt \
  -keyout server.key -subj "/CN=node1"

修改权限

 chmod og-rwx server.key

创建服务器私钥

 openssl req -new -nodes -text -out root.csr \
  -keyout root.key -subj "/CN=node1"

修改权限

chmod og-rwx root.key

创建根证书

openssl x509 -req -in root.csr -text -days 3650 \
  -extfile /etc/pki/tls/openssl.cnf -extensions v3_ca \
  -signkey root.key -out root.crt

创建根证书密钥

openssl req -new -nodes -text -out server.csr \
  -keyout server.key -subj "/CN=node1"

修改权限

  chmod og-rwx server.key

创建由新的根证书颁发机构签名的服务器证书

openssl x509 -req -in server.csr -text -days 365 \
  -CA root.crt -CAkey root.key -CAcreateserial \
  -out server.crt

复制服务器证书和服务器密钥到$PGDATA

cp /home/pg14/ssl/server.crt  /home/pg14/data
 cp /home/pg14/ssl/server.key  /home/pg14/data

修改参数文件

postgresql.auto.conf参数文件添加下面三行
ssl = on
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'

重启数据库

pg_ctl restart  -D $PGDATA -l /tmp/logfile

创建ssl扩展

postgres=# create extension sslinfo;
CREATE EXTENSION
postgres=# select ssl_is_used();
 ssl_is_used 
-------------
 f

验证ssl连接

退出重新以远程连接方式连接
 psql -d postgres -U postgres -h localhost
psql (14.6)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

postgres=# select ssl_is_used();
 ssl_is_used 
-------------
 t
(1 row)

错误:

ERROR:  could not open extension control file "/home/pg14/soft/share/postgresql/extension/sslinfo.control": No such file or directory
这是因为在指定目录下没有找到sslinfo.control,可以find一下该文件,发现他在/home/pg14/postgresql-14.6/contrib/sslinfo目录下,这是因为编译安装时没有使用world编译,将这个目录下的所有文件都复制到/home/pg14/soft/share/postgresql/extension/下,创建扩展还是报错:
ERROR:  could not access file "$libdir/sslinfo": No such file or directory,要先弄清$libdir是哪个目录,执行pg_config --pkglibdir发现$libdir
是/home/pg14/soft/lib/postgresql目录,里面确实没有sslinfo.so文件,于是去/home/pg14/postgresql-14.6/contrib/sslinfo目录下,把sslinfo.c重新编译,make&&make install 把生成的sslinfo.so文件复制到/home/pg14/soft/lib/postgresql目录下,再次创建扩展成功。
  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰阔落_Louis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值