如何在PostgreSQL上配置SSL

数据库安全通常是组织最关心的问题之一。开箱即用的 PostgreSQL 不提供足够的保护措施来确保数据保护和隐私。因此,需要采取额外措施来确保数据隐私和安全。为与服务器建立的连接启用 SSL 身份验证是确保数据隐私的方法之一。PostgreSQL 支持与数据库服务器建立的 SSL 连接,从而确保客户端和服务器之间交换的所有通信都是加密的。

如何在PostgreSQL上配置SSL

在本教程中,我们将演示如何为 PostgreSQL 数据库服务器启用 SSL 连接。

第 1 步:安装 PostgreSQL 服务器

首先,您需要在 Linux 系统上安装 PostgreSQL 服务器。如果您的服务器上已经安装了 PostgreSQL,请随时跳到下一步。

在本指南中,我们将从在 Rocky Linux 8 上安装最新版本的 PostgreSQL (PostgreSQL 14) 开始。

首先,通过 SSH 登录到您的服务器。接下来,刷新存储库并将包升级到最新版本。

sudo dnf update

AppStream 存储库未提供最新版本的 PostgreSQL。要验证这一点,请列出可用的 PostgreSQL 模块。

dnf module list postgresql -y

如何在PostgreSQL上配置SSL

从上面的输出来看,存储库提供的最新版本的 PostgreSQL 是 PostgreSQL 13.x。要安装最新版本的 PostgreSQL,请将 PostgreSQL 存储库添加到您的系统。

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

如何在PostgreSQL上配置SSL

接下来,禁用默认的 PostgreSQL 存储库:

sudo dnf module disable postgresql -qy

接下来,按如下方式安装 PostgreSQL 14 Server 和客户端。

sudo dnf install postgresql14 postgresql14-server -y

如何在PostgreSQL上配置SSL

此后,按如下方式初始化 PostgreSQL 数据库。

sudo /usr/pgsql-14/bin/postgresql-14-setup initdb

如何在PostgreSQL上配置SSL

默认情况下,PostgreSQL 安装在 Rocky Linux 上时不会自动启动。因此,启动数据库服务。

$ sudo systemctl start postgresql-14

此外,使其在系统启动时启动。

$ sudo systemctl enable postgresql-14

要确认 PostgreSQL 服务正在运行,请执行以下命令:

$ sudo systemctl status postgresql-14

如何在PostgreSQL上配置SSL

上面的输出确认 PostgreSQL 服务器已启动并正在运行。默认情况下,PostgreSQL 侦听端口 5432,您可以通过运行以下ss命令来确认这一点。

$ ss -pnltu | grep 5432

您应该得到以下输出,确认一切正常。

如何在PostgreSQL上配置SSL

第 2 步:为 Postgres 用户配置密码

postgres安装 PostgreSQL 时,会在系统中创建一个名为的默认用户。这是一个超级用户,拥有执行几乎任何任务的访问权限,包括管理数据库、表、模式函数和 PostgreSQL 数据库中的任何其他对象。

Postgres用户使用ident认证方式,不设置密码。出于安全原因,建议您设置密码以防止潜在的违规行为。

为此,请切换到根用户

$ sudo su

接下来,切换到postgres用户。

$ su - postgres

切换到 PostgreSQL shell

$ psql

然后使用如图所示的查询设置postgres用户密码。ALTER

ALTER USER postgres WITH PASSWORD 'your-password'

如何在PostgreSQL上配置SSL

第 3 步:为 PostgreSQL 服务器生成 SSL 证书

要使 SSL 与 PostgreSQL 一起工作,您需要生成三个证书文件:

  • server.key - 这是私钥文件
  • server.crt - 这是服务器证书文件
  • root.crt - 这是受信任的根证书

首先,将目录更改为 PostgreSQL 的数据目录,如图所示。

cd /var/lib/pgsql/14/data

接下来,生成一个 2048 位的 AES 加密的 RSA 私钥,如下所示。

openssl genrsa -aes128 2048 > server.key 

在创建私钥期间,系统会提示您输入密码。输入并确认。

您稍后可以通过运行以下命令确认密钥存在:

ls -l | grep server.key

如何在PostgreSQL上配置SSL

私钥有一个与之关联的密码。但是,为了进一步使用此密钥,您需要删除密码。为此,请运行以下命令:

openssl rsa -in server.key -out server.key

如何在PostgreSQL上配置SSL

再一次,重新输入密码并按 ENTER。

第 4 步:应用所需的权限和所有权

为了增强安全性,您需要将私钥的只读权限分配给 root 用户,如图所示。

chmod 400 server.key

此外,将密钥的所有权设置为 postgres 用户和组。

chown postgres.postgres server.key

第 5 步:创建服务器证书文件

现在,根据私钥生成一个自签名证书文件。以下证书文件的有效期为 365 天。

# openssl req -new -key server.key -days 365 -out server.crt -x509 

该命令将要求您提供一些将合并到证书文件中的信息。因此,请相应地填写所有详细信息。

如何在PostgreSQL上配置SSL

由于您使用的是自签名证书,因此您将通过制作服务器证书文件的副本将其用作受信任的根证书,如图所示。

# cp server.crt root.crt

第 6 步:配置 PostgreSQL 以使用 SSL

下一步是配置 PostgreSQL 以使用 SSL。访问postgresql.conf位于data 目录内的配置文件。

$ sudo vim /var/lib/pgsql/14/data/postgresql.conf

在 下Connection Settings,找到listen_addresses参数并将其设置为允许来自所有外部主机的连接。

listen_addresses = '*'

在该SSL部分中,取消注释以下参数并设置值,如下所示。

ssl = on
ssl_ca_file = 'root.crt'
ssl_cert_file = 'server.crt'
ssl_crl_file = ''
ssl_key_file = 'server.key'
ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers
ssl_prefer_server_ciphers = on

保存更改并退出文件。接下来,打开pg_hba.conf配置文件。这是 PostgreSQL 客户端身份验证配置文件,指定允许连接哪些主机以及如何对客户端进行身份验证。

$ sudo vim /var/lib/pgsql/14/data/pg_hba.conf

在 下IPv4 local connections,按如下方式修改该行以允许来自所有主机的连接。

host    all           all           0.0.0.0/0          md5

接下来,在文件末尾添加以下行以启用 SSL 并允许来自所有主机的连接。

hostssl	 all         all          0.0.0.0/0    		md5

保存更改并退出配置文件。要使更改生效,请重新启动 PostgreSQL。

$ sudo systemctl restart postgresql-14

如果启用了 firewalld,请允许 Postgresql 服务,如图所示

$ sudo firewall-cmd --add-service=postgresql --permanent 

$ sudo firewall-cmd --reload

步骤 7:测试 SSL 连接

此时,PostgreSQL 已配置为使用 SSL 进行远程连接。为此,我们将使用用户 postgres 登录到数据库服务器,如图所示

psql -U postgres -p 5432 -h 45.79.192.104

-U标志表示我们用来访问数据库服务器的登录用户

-p标志指定 PostgreSQL 正在侦听的端口(默认为 5432)

-h标志指定主机的 IP 地址。

下面的输出确认 SSL 已启用并且我们使用的是自签名证书。

如何在PostgreSQL上配置SSL

结论

在本教程中,我们演示了如何使用自签名 SSL 证书在 PostgreSQL Server 上启用 SSL 支持。我们为 PostgreSQL 服务器上配置的所有数据库和用户启用了 SSL 连接。服务器将侦听默认 PostgreSQL 端口上的所有传入连接,并要求客户端使用 SSL。

文章链接: https://www.mfisp.com/13097.html

文章标题:如何在PostgreSQL上配置SSL

文章版权:梦飞科技所发布的内容,部分为原创文章,转载请注明来源,网络转载文章如有侵权请联系我们!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
IDC云库

理解Linux文件系统树的完整指南

2022-11-24 11:20:38

IDC云库

什么是浏览器劫持?网络安全威胁比你想象的更狡猾

2022-11-24 11:43:47

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
客户经理
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索

梦飞科技 - 最新云主机促销服务器租用优惠