Postgresql

為什麼在 DigitalOcean 上啟動託管 Postgres 集群時要下載 CA 證書?

  • July 10, 2020

我第一次嘗試由 DigitalOcean.com 作為託管服務提供的 Postgres 集群。

作為配置新集群的一部分,他們的 Web 界面為我提供了使用者名、密碼、埠號等。在那個網頁上有一個小連結,上面寫著Download the CA certificate。我假設CA意味著Certificate Authority

➥ 為什麼我會使用或不使用該連結來下載證書?

當我點擊該連結時,我的機器上會出現一個名為ca-certificate.crt. 我將如何使用這個文件?

您可以將它與 TLS 一起使用來驗證您是否連接到正確的伺服器。

連接字元串如下所示:

host=... port=... dbname=... user=... sslmode=verify-full sslrootcert=/path/to/ca-certificate.crt

如果您無法以這種方式指定連接字元串,則可以使用環境變數 PGSSLMODEPGSSLROOTCERT.

然後 PostgreSQL 客戶端庫將驗證伺服器的證書實際上是由 CA 證書籤名的,並且伺服器名稱是正確的。

當然,這需要配置您的 PostgreSQL 客戶端庫--with-openssl

為了詳細說明 Laurenz 的回答,如果有人可以攔截您用於 Digital Ocean 的網際網路流量,他們可以設置一個惡意PostgreSQL伺服器,您會在不知不覺中連接到該伺服器,然後他們可以記錄您的查詢、結果,甚至可能是您的密碼。

使用 verify-full 是一種確保您實際連接的伺服器可以訪問由 CA 頒發給您為連接指定的主機名的證書(和相應的密鑰)的方法。因此,除非中間人破壞了實際的 CA,或者誘騙您安裝惡意 CA 證書,否則他無法再使用這個伎倆了。

即使您不是特別關心 MITM,您也應該下載證書(通過 https!)並安裝和配置它以供使用,如果沒有別的,作為學習經驗。您可以通過在連接字元串中指定 IP 地址而不是主機名來測試它,並且應該阻止它,因為 IP 地址(可能)不在伺服器的證書中。

引用自:https://dba.stackexchange.com/questions/270706