安全加固:启动PostgreSQL 14服务器SSL加密的方法指南在CentOS 7环境中

在CentOS 7操作系统中配置PostgreSQL 14以启用SSL加密,需要进行以下步骤:

1. 安装PostgreSQL 14:

首先确保安装了PostgreSQL 14,可以通过以下命令安装:

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql14-server postgresql14
 

2. 初始化数据库并启动服务:

初始化PostgreSQL数据库,并启动PostgreSQL服务:

sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14
 

3. 生成SSL证书:

需要在PostgreSQL数据目录下生成SSL证书和密钥。默认的PostgreSQL数据目录通常在 /var/lib/pgsql/14/data/

生成自签名的SSL证书和私钥:

sudo su - postgres
cd /var/lib/pgsql/14/data/
openssl req -new -x509 -days 365 -nodes -out server.crt -keyout server.key
chmod 600 server.key
chown postgres:postgres server.key server.crt
 

在这个过程中,你会被询问有关证书的信息,如组织名称和位置。[

4. 配置PostgreSQL以使用SSL:

编辑PostgreSQL的主配置文件 postgresql.conf

vi /var/lib/pgsql/14/data/postgresql.conf

确保启用了SSL,并指定了证书和密钥的位置(如果你的证书和密钥位于默认目录,ssl_cert_file 和 ssl_key_file 可以不用更改):

ssl = on
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
 

5. 调整pg_hba.conf配置:

编辑文件 /var/lib/pgsql/14/data/pg_hba.conf,并确保使用了适当的认证方法来接受SSL连接:

# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Enable SSL connections:
hostssl all             all             0.0.0.0/0               scram-sha-256
 

注意:scram-sha-256 是推荐的密码验证方法。

6. 重启PostgreSQL服务:

重启PostgreSQL服务以应用更改:

sudo systemctl restart postgresql-14
 

7. 测试SSL连接:

使用 psql命令行工具测试SSL连接,可以使用参数 -h localhost 来强制使用TCP连接而非默认的UNIX socket, -U postgres 来指定用户名:

psql "sslmode=require dbname=postgres user=postgres host=localhost"
 

如果出现 Postgres 提示符,表明SSL连接成功。

8. 防火墙调整:

根据需要,你可能必须更新CentOS 7的防火墙规则来允许外部SSL连接到PostgreSQL:

sudo firewall-cmd --add-service=postgresql --permanent
sudo firewall-cmd --reload
posted @ 2025-09-13 08:42  u95900090  阅读(24)  评论(0)    收藏  举报