簡體   English   中英

通過 PHP PDO 通過 SSL 連接到 PGSQL

[英]Connecting to PGSQL over SSL via PHP PDO

我可以在哪里傳遞我的客戶端證書以連接到 PostgreSQL 數據庫? 我是否必須在 PDO 構造函數中的dsnoptions參數中傳遞這些證書? 我無法在線找到任何文檔。

我在 Ubuntu 16.04.1 上使用 PHP 7.0.22。 我為 pgsql 驅動程序啟用了 SSL 支持。 我確實在 PDO 類中找到了這些常量: PDO::MYSQL_ATTR_SSL_CAPDO::MYSQL_ATTR_SSL_KEY和其他一些,但這些顯然是用於 mySQL 而不是 PGSQL。


編輯

這是基於以下答案的有效安全實現:

$dbh = new PDO('pgsql:localhost=host;port=26257;dbname=bank;sslmode=require;sslcert=[path]/client.maxroach.crt;sslkey=[path]/client.maxroach.key;sslrootcert=[path]/ca.crt;',
    'maxroach', null, array(
      PDO::ATTR_ERRMODE          => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_EMULATE_PREPARES => true,
  ));

根據對PDO Postgres 連接字符串手冊的評論,完整的 DSN 字符串直接傳遞給底層庫函數PQconnectdb 因此,您應該能夠使用PostgreSQL 文檔中為該字符串指定的所有參數。

該頁面的相關引用:

  • sslmode:此選項確定是否或以何種優先級與服務器協商安全的 SSL TCP/IP 連接。
  • sslcert:該參數指定客戶端 SSL 證書的文件名。
  • sslkey:此參數指定用於客戶端證書的密鑰的位置。

所有三個參數在鏈接的頁面上都有更多詳細信息。

請注意,雖然由 PostgreSQL 提供,但這些代碼都與 PHP 運行在同一台服務器上,因此所有路徑都將從該服務器加載,並且需要 PHP 主機進程可以讀取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM