以 SSL 模式連線到 PostgreSQL

Shihab Sikder 2023年10月12日
以 SSL 模式連線到 PostgreSQL

當我們嘗試連線資料庫時,Postgres 使用 SSL 來驗證連線的安全性。它在 HTTP 中預設禁用,但在 HTTPS 中,我們需要連線的 SSL 模式才能在 Postgres 資料庫中執行任何操作。

如果連線不是私有的,則可以有多個攻擊引數。任何人都可以通過資料庫請求-響應輕鬆地使用嗅探工具。

PostgreSQL 中有哪些 SSL 模式

Postgres 提供了不同型別的 SSL 模式。首先,讓我們看一下 Postgres 的通用連線字串。

const connectionString =
    'postgres://<database_username>:<database_userpassword>@<hostaddress>:<port_no>/<database_name>'

現在,我們可以新增引數 sslmode,如下所示。

const connectionString =
    'postgres://<database_username>:<database_userpassword>@<hostaddress>:<port_no>/<database_name>?sslmode=<ssl_mode>'

這是 Postgres 提供的 SSL 模式列表。

sslmode 竊聽保護 中間人保護 描述
disable 它不會關心安全性。不會加密任何資料。
allow 也許 它不會關心安全性並加密連線。
prefer 也許 它不會強制使用加密;如果伺服器支援加密的開銷,那麼它將加密。
require 是的 加密資料,它會面臨一些加密的開銷,而網路可以確保使用者想要連線到正確的伺服器。
verify-ca 是的 取決於 CA 政策 加密資料,加密的開銷並始終連線到受信任的伺服器。
verify-full 是的 是的 資料將被加密,使用者接受開銷,網路和伺服器都是受信任的,並且只連線到被詢問的特定伺服器。

你也可以在環境變數中設定此標誌。

PGSSLMODE=verify-full PGSSLROOTCERT=ca.pem

在這裡,ca.pem 是關鍵。你需要從 CA 收集它; CA 代表證書頒發機構。

要使用 Postgres SSL 模式完全配置伺服器,你可以按照 this blog 中的步驟操作。

這是 Postgres 官方文件中關於 SSL 模式的說明。

Using NULL-SHA or NULL-MD5 ciphers, authentication can be done without any encryption overhead. A man-in-the-middle, on the other hand, might read and pass communications between the client and the server. In addition, as compared to the overhead of authentication, encryption has a low overhead. NULL ciphers are not recommended for these reasons.

此外,你可以檢視官方文件此處。他們展示瞭如何在使用 SSL 模式時對證書進行自簽名。

作者: Shihab Sikder
Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website