在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