sslinfo
模組提供有關目前客戶端連線到 PostgreSQL 時所提供的 SSL 憑證資訊。如果目前的連線未使用 SSL,則該模組將無用(大多數函數將返回 NULL)。
此模組提供的某些資訊也可以使用內建的系統檢視表 pg_stat_ssl
取得。
除非安裝時配置了 --with-ssl=openssl
,否則此擴充功能將無法建置。
ssl_is_used() returns boolean
如果目前與伺服器的連線使用 SSL,則返回 true,否則返回 false。
ssl_version() returns text
返回用於 SSL 連線的協定的名稱(例如,TLSv1.0、TLSv1.1、TLSv1.2 或 TLSv1.3)。
ssl_cipher() returns text
返回用於 SSL 連線的密碼的名稱(例如,DHE-RSA-AES256-SHA)。
ssl_client_cert_present() returns boolean
如果目前的客戶端已向伺服器提交有效的 SSL 客戶端憑證,則返回 true,否則返回 false。(伺服器可能已配置為要求客戶端憑證,也可能未配置。)
ssl_client_serial() returns numeric
返回目前客戶端憑證的序號。憑證序號和憑證頒發者的組合保證能唯一識別憑證(但不能識別其所有者 — 所有者應該定期更改其金鑰,並從頒發者處獲取新憑證)。
因此,如果您執行自己的 CA,並且僅允許伺服器接受來自此 CA 的憑證,則序號是識別使用者最可靠(儘管不是很助記)的方法。
ssl_client_dn() returns text
返回目前客戶端憑證的完整主體,並將字元資料轉換為目前的資料庫編碼。假設如果您在憑證名稱中使用非 ASCII 字元,則您的資料庫也能夠表示這些字元。如果您的資料庫使用 SQL_ASCII 編碼,則名稱中的非 ASCII 字元將表示為 UTF-8 序列。
結果看起來像 /CN=某人 /C=某國家/O=某組織
。
ssl_issuer_dn() returns text
返回目前客戶端憑證的完整頒發者名稱,並將字元資料轉換為目前的資料庫編碼。編碼轉換的處理方式與 ssl_client_dn
相同。
此函數的返回值與憑證序號的組合唯一地標識了該憑證。
僅當您的伺服器憑證授權單位檔案中有多個受信任的 CA 憑證,或者此 CA 頒發了一些中間憑證授權單位憑證時,此函數才真正有用。
ssl_client_dn_field(fieldname text) returns text
此函數返回憑證主體中指定欄位的值,如果該欄位不存在,則返回 NULL。欄位名稱是使用 OpenSSL 物件資料庫轉換為 ASN1 物件識別碼的字串常數。以下值是可以接受的
commonName (alias CN) surname (alias SN) name givenName (alias GN) countryName (alias C) localityName (alias L) stateOrProvinceName (alias ST) organizationName (alias O) organizationalUnitName (alias OU) title description initials postalCode streetAddress generationQualifier description dnQualifier x500UniqueIdentifier pseudonym role emailAddress
除了 commonName
之外,所有這些欄位都是可選的。這完全取決於您的 CA 的政策,哪些欄位將被包括在內,哪些欄位將不被包括在內。但是,這些欄位的含義由 X.500 和 X.509 標準嚴格定義,因此您不能僅僅為它們分配任意含義。
ssl_issuer_field(fieldname text) returns text
與 ssl_client_dn_field
相同,但適用於憑證頒發者而不是憑證主體。
ssl_extension_info() returns setof record
提供有關客戶端憑證擴充功能的資訊:擴充功能名稱、擴充功能值,以及它是否是一個關鍵擴充功能。
Victor Wagner <vitus@cryptocom.ru>
, Cryptocom LTD
Dmitry Voronin <carriingfate92@yandex.ru>
Cryptocom OpenSSL 開發團隊的電子郵件:<openssl@cryptocom.ru>
如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步說明的內容,請使用 此表格 來報告文件問題。