PostgreSQL开启openssl(通讯加密)

上一节安装了数据库,这节我们开启openssl,并开启密码复杂度检查模块

【没有开启ssl,使用wireshark工具对抓取的包解析,传输的sql会被解析到,开启ssl 抓包时sql会加密

       Server.key server.crt位置都处于$PGDATA下,为保证安全性,可以将其放置于不同的位置,权限为0600,对于postgres用户可读可写,其他用户都没有任何权限

目录

创建根CSR文件

创建根CRT文件

创建服务器CSR文件

创建服务器CRT文件

配置数据库 启用ssl

重新启动数据库,检查ssl是否已经开启

创建ssl扩展

使用ssl方式登录数据库

检查当前是否为ssl模式

启用密码check机制

修改配置文件  在最后一行添加预加载库

重启数据库,验证简单密码是否可以创建


创建根CSR文件

[postgres@localhost ~]$ cd ~
[postgres@localhost ~]$ mkdir openssl
[postgres@localhost ~]$ cd openssl/
[postgres@localhost openssl]$ openssl req -new -nodes -text -out root.csr -keyout root.key -subj "/CN=test1"

查看会生成两个文件(.key和.csr)

 注意:-subj  参数内容 必须以/开头

删除其他用户的权限

[postgres@localhost openssl]$ chmod og-rwx root.key

创建根CRT文件

修改openssl配置文件   修改默认路径如下

[postgres@localhost openssl]$ cp /etc/pki/tls/openssl.cnf /home/postgres/openssl/
[postgres@localhost openssl]$ vi openssl.cnf 

 生成CRT文件

[postgres@localhost openssl]$ openssl x509 -req -in root.csr -text -days 3650 -extfile /home/postgres/openssl/openssl.cnf -extensions v3_ca -signkey root.key -out root.crt

创建服务器CSR文件

[postgres@localhost openssl]$ openssl req -new -nodes -text -out server.csr -keyout server.key -subj "/CN=test1"

删除其他用户的权限

[postgres@localhost openssl]$ chmod og-rwx server.key

创建服务器CRT文件

[postgres@localhost openssl]$ openssl x509 -req -in server.csr -text -days 365 -CA root.crt -CAkey root.key -CAcreateserial -out server.crt

配置数据库 启用ssl

修改配置文件

[postgres@localhost openssl]$ vi $PGDATA/postgresql.conf
ssl = on
#ssl_ca_file = ''
ssl_cert_file = '/home/postgres/openssl/server.crt'
#ssl_crl_file = ''
ssl_key_file = '/home/postgres/openssl/server.key'

说明:crt和key这些文件 默认路径是在$PGDATA,为了安全 我们新建了目录,在自定义的目录生成 ,所以这里密钥的路径要改一下。

对于密钥文件的处理,我们做了两步,一个是修改了密钥的默认路径,一个是修改了key的权限,都是为了安全考虑

重新启动数据库,检查ssl是否已经开启

[postgres@localhost openssl]$ pg_ctl restart
[postgres@localhost openssl]$ psql

postgres=# show ssl;
 ssl 
-----
 on
(1 row)

postgres=# show ssl_key_file ;
           ssl_key_file            
-----------------------------------
 /home/postgres/openssl/server.key
(1 row)

postgres=# show ssl_cert_file; 
           ssl_cert_file           
-----------------------------------
 /home/postgres/openssl/server.crt
(1 row)

创建ssl扩展

postgres=# create extension sslinfo;

使用ssl方式登录数据库

[postgres@localhost openssl]$ psql "host=localhost user=postgres dbname=postgres password=123456 sslmode=require"

检查当前是否为ssl模式

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

启用密码check机制

上一节已经编译过所有模块了,如果没有编译,需要先将模块编译出来并且放到lib库

[postgres@bogon passwordcheck]$ cd /home/postgres/postgresql-12.0/contrib/passwordcheck
[postgres@bogon passwordcheck]$ make
[postgres@bogon passwordcheck]$ make install
[postgres@bogon passwordcheck]$ cp passwordcheck.so /home/postgres/install/lib/

修改配置文件  在最后一行添加预加载库

[postgres@localhost openssl]$ vi $PGDATA/postgresql.conf 

重启数据库,验证简单密码是否可以创建

[postgres@localhost openssl]$ pg_ctl restart
[postgres@localhost openssl]$ psql
psql (12.0)
Type "help" for help.

postgres=# create user user1 with password '123456';
2022-07-05 12:11:49.250 EDT [23839] ERROR:  password is too short
2022-07-05 12:11:49.250 EDT [23839] STATEMENT:  create user user1 with password '123456';
ERROR:  password is too short

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值