PostgreSQL sslinfo

2021-09-16 17:32 更新
F.37.1. 提供的函數(shù)

在連接到PostgreSQL時(shí),sslinfo模塊提供當(dāng)前客戶(hù)端提供的 SSL 證書(shū)的有關(guān)信息。如果當(dāng)前連接不使用 SSL,這個(gè)模塊就沒(méi)有用處(大部分函數(shù)將返回 NULL)。

本模塊提供的一些信息,也可以使用內(nèi)置系統(tǒng)視圖 pg_stat_ssl 來(lái)獲得。

除非安裝時(shí)用--with-openssl進(jìn)行了配置,這個(gè)擴(kuò)展壓根就不會(huì)被編譯。

F.37.1. 提供的函數(shù)

ssl_is_used() 返回 boolean

如果當(dāng)前到服務(wù)器的連接使用 SSL 則返回 true,否則返回 false。

ssl_version() 返回 text

返回 SSL 連接使用的協(xié)議名稱(chēng)(如 TLSv1.0、TLSv1.1 或者 TLSv1.2)。

ssl_cipher() 返回 text

返回 SSL 連接所用的加密方法名稱(chēng)(如 DHE-RSA-AES256-SHA)。

ssl_client_cert_present() 返回 boolean

如果當(dāng)前客戶(hù)端已經(jīng)向服務(wù)器出示了一個(gè)合法的 SSL 客戶(hù)端證書(shū)則返回 true,否則返回 false(服務(wù)器可能被配置要求一個(gè)客戶(hù)端配置,也可能沒(méi)有被配置成這樣)。

ssl_client_serial() 返回 numeric

返回當(dāng)前客戶(hù)端證書(shū)的序列號(hào)。證書(shū)序列號(hào)和證書(shū)發(fā)行人的組合被確??梢?唯一標(biāo)識(shí)一個(gè)證書(shū)(但是不能唯一標(biāo)識(shí)其擁有者 — 擁有者應(yīng)該定期地更換其密鑰, 并且從發(fā)行人那里得到新的證書(shū))。

因此,如果你運(yùn)行自己的 CA 并且只允許服務(wù)器接收來(lái)自于這個(gè) CA 的證書(shū),序列號(hào)就是最可靠的(雖然并非很好記憶)標(biāo)識(shí)一個(gè)用戶(hù)的方法。

ssl_client_dn() 返回 text

返回當(dāng)前客戶(hù)端證書(shū)的完整主題,并且將字符數(shù)據(jù)轉(zhuǎn)換成當(dāng)前數(shù)據(jù)庫(kù)的編碼。我們假定如果你在證書(shū)名中使用非 ASCII 字符,你的數(shù)據(jù)庫(kù)也有能力展示這些字符。如果你的數(shù)據(jù)庫(kù)使用 SQL_ASCII 編碼,名稱(chēng)中的非 ASCII 字符將被表示為 UTF-8 序列。

結(jié)果看起來(lái)像/CN=某人 /C=某個(gè)國(guó)家 /O=某個(gè)組織

ssl_issuer_dn() 返回 text

返回當(dāng)前客戶(hù)端證書(shū)的完整的發(fā)行人名稱(chēng),并把字符數(shù)據(jù)轉(zhuǎn)換成當(dāng)前數(shù)據(jù)庫(kù)的編碼。編碼轉(zhuǎn)換以與ssl_client_dn相同的方式處理。

這個(gè)函數(shù)的返回值與證書(shū)序列號(hào)的組合唯一地標(biāo)識(shí)證書(shū)。

如果在服務(wù)器的證書(shū)授權(quán)中心文件中有多于一個(gè)的可信 CA 證書(shū),或者如果 CAI 已經(jīng)發(fā)行了某些中間認(rèn)證授權(quán)證書(shū),這個(gè)函數(shù)就真的很有用。

ssl_client_dn_field(fieldname text) 返回 text

這個(gè)函數(shù)返回證書(shū)主題中指定域的值,如果域不存在則返回 NULL。域的名稱(chēng)是字符串常量,它們被使用 OpenSSL 對(duì)象數(shù)據(jù)庫(kù)轉(zhuǎn)換成 ASN1 對(duì)象標(biāo)識(shí)符。下列值是可接受的:

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都是可選的。它們之中哪些會(huì)被包括或者不會(huì)被包括完全取決于你的 CA 策略。不過(guò),這些域的含義由 X.500 和 X.509 標(biāo)準(zhǔn)嚴(yán)格地定義,因此你不能只是為它們分配任意含義。

ssl_issuer_field(fieldname text) 返回 text

ssl_client_dn_field一樣,但是用于證書(shū)發(fā)行人而不是證書(shū)主題。

ssl_extension_info() 返回 setof record

提供有關(guān)客戶(hù)端證書(shū)擴(kuò)展的信息:擴(kuò)展名、擴(kuò)展值以及是否為 決定性的擴(kuò)展。

 

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)