支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:開發中版本
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3

F.40. sslinfo — 取得客戶端 SSL 資訊 #

sslinfo 模組提供有關目前客戶端連線到 PostgreSQL 時所提供的 SSL 憑證資訊。如果目前的連線未使用 SSL,則該模組將無用(大多數函數將返回 NULL)。

此模組提供的某些資訊也可以使用內建的系統檢視表 pg_stat_ssl 取得。

除非安裝時配置了 --with-ssl=openssl,否則此擴充功能將無法建置。

F.40.1. 提供的函數 #

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

提供有關客戶端憑證擴充功能的資訊:擴充功能名稱、擴充功能值,以及它是否是一個關鍵擴充功能。

F.40.2. 作者 #

Victor Wagner , Cryptocom LTD

Dmitry Voronin

Cryptocom OpenSSL 開發團隊的電子郵件:

提交更正

如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步說明的內容,請使用 此表格 來報告文件問題。