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=Somebody /C=Some country/O=Some organization
。
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>
如果您在文件中發現任何不正確、與您對特定功能的實際體驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。