首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

PostgreSQL SSL 加密連線完整配置指南:OpenSSL 憑證產生、伺服器設定、客戶端驗證

     編輯:關於SqlServer

啟用 PostgreSQL SSL 加密傳輸,保護資料在網路傳輸中機密性與完整性。本文提供從 OpenSSL 自簽憑證產生、伺服器 `postgresql.conf` 配置、客戶端 (ODBC/psql) 設定的完整步驟,適用開發/測試環境;生產環境建議申請 CA 簽署憑證。

1. OpenSSL 產生伺服器憑證與私鑰

# 1. 產生私鑰 (移除密碼短語,避免啟動需手動輸入)
openssl genrsa -out server.key 2048

# 2. 產生憑證簽署請求 (CSR) - Common Name 填寫伺服器 FQDN 或 IP
openssl req -new -key server.key -out server.csr -config openssl.cnf
# 互動式輸入: CN = pg-server.example.com (或 192.168.1.100)

# 3. 自簽憑證 (有效期 365 天)
openssl x509 -req -in server.csr -signkey server.key -out server.crt -days 365

# 4. (可選) 轉 DER 格式供特定客戶端使用
openssl x509 -in server.crt -out server.der.crt -outform DER

2. 部署憑證檔案

  • 將 server.crt、server.key 複製至 PostgreSQL **資料目錄** (通常 `/`,如 `/var/lib/pgsql/data/`)
  • **權限關鍵**:私鑰必須僅擁有者可讀
    chmod 600 server.key
    chmod 644 server.crt
    chown postgres:postgres server.key server.crt

3. 修改 postgresql.conf 啟用 SSL

# 啟用 SSL
ssl = on

# 憑證檔案路徑 (相對於資料目錄)
ssl_cert_file = 'server.crt'
ssl_key_file  = 'server.key'

# (可選) CA 憑證驗證客戶端憑證
# ssl_ca_file = 'root.crt'

# (可選) 僅允許加密連線 (拒絕平文)
# ssl_min_protocol_version = 'TLSv1.2'
# ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL'

4. 重新載入/重啟服務生效

# 系統服務
systemctl reload postgresql-14
# 或
pg_ctl reload -D /var/lib/pgsql/data

5. 驗證 SSL 連線

psql 命令列

# 強制 SSL 模式連線
psql "host=pg-server.example.com port=5432 dbname=mydb user=myuser sslmode=require"

# 連線成功後查詢 SSL 狀態
\conninfo
# 輸出應包含: SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256)

ODBC 客戶端設定 (Windows)

  • ODBC 資料來源管理員 → PostgreSQL Unicode → 設定
  • SSL Mode:選擇 require (驗證憑證) 或 verify-ca/verify-full (需 CA)
  • 若使用自簽憑證,客戶端需匯入 server.crt 至「受信任的根憑證授權機構」

SSL Mode 選項對照

模式行為適用場景
disable不加密僅測試/內網受信環境
allow嘗試 SSL,失敗回退平文不推薦
prefer優先 SSL,失敗回退相容舊客戶端
require**強制 SSL,不驗證 CA**自簽憑證、內網生產
verify-ca強制 SSL + 驗證 CA企業 CA 環境
verify-full強制 SSL + 驗證 CA + 驗證 CN/主體替代名最高安全、生產標準

常見問題排查

  • ❌ `psql: SSL error: certificate verify failed` → 客戶端未信任 CA,或 CN 不匹配,改用 `sslmode=require` 或匯入 CA
  • ❌ `FATAL: could not load server certificate file` → 檢查檔案路徑、權限 (600)、擁有者
  • ❌ 連線緩慢 → SSL 握手開銷,啟用 `ssl_session_cache`、調整 `ssl_ciphers`

完成配置後,所有經網路傳輸的查詢、結果、認證資訊皆受 TLS 加密保護,告別明文傳輸風險。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved