sslinfo
模块提供有关当前客户端连接到 PostgreSQL 时提供的 SSL 证书的信息。如果当前连接未使用 SSL,则该模块无用(大多数函数将返回 NULL)。
此模块提供的一些信息也可以使用内置的系统视图 pg_stat_ssl
获取。
除非安装时配置了 --with-ssl=openssl
,否则此扩展将根本无法构建。
ssl_is_used()
返回布尔值 如果当前与服务器的连接使用 SSL,则返回 true,否则返回 false。
ssl_version()
返回文本 返回用于 SSL 连接的协议名称(例如,TLSv1.0、TLSv1.1、TLSv1.2 或 TLSv1.3)。
ssl_cipher()
返回文本 返回用于 SSL 连接的密码名称(例如,DHE-RSA-AES256-SHA)。
ssl_client_cert_present()
返回布尔值 如果当前客户端已向服务器提供有效的 SSL 客户端证书,则返回 true,否则返回 false。(服务器可能配置为需要客户端证书,也可能未配置。)
ssl_client_serial()
返回数值 返回当前客户端证书的序列号。证书序列号和证书颁发者的组合保证可以唯一标识证书(但不能标识其所有者 — 所有者应该定期更改其密钥,并从颁发者处获取新证书)。
因此,如果您运行自己的 CA,并且只允许服务器接受来自此 CA 的证书,则序列号是识别用户最可靠(尽管不是很容易记忆)的方式。
ssl_client_dn()
返回文本 返回当前客户端证书的完整主题,将字符数据转换为当前数据库编码。假设如果在证书名称中使用非 ASCII 字符,则数据库也能够表示这些字符。如果数据库使用 SQL_ASCII 编码,则名称中的非 ASCII 字符将表示为 UTF-8 序列。
结果看起来像 /CN=某人 /C=某个国家/O=某个组织
。
ssl_issuer_dn()
返回文本 返回当前客户端证书的完整颁发者名称,将字符数据转换为当前数据库编码。编码转换的处理方式与 ssl_client_dn
相同。
此函数的返回值与证书序列号的组合唯一地标识该证书。
只有当服务器的证书颁发机构文件中存在多个受信任的 CA 证书,或者此 CA 颁发了一些中间证书颁发机构证书时,此函数才真正有用。
ssl_client_dn_field(fieldname 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)
返回文本 与 ssl_client_dn_field
相同,但用于证书颁发者而不是证书主题。
ssl_extension_info()
返回记录集 提供有关客户端证书扩展的信息:扩展名称、扩展值,以及它是否是关键扩展。
Victor Wagner <[email protected]>
, Cryptocom LTD
Dmitry Voronin <[email protected]>
Cryptocom OpenSSL 开发团队的电子邮件:<[email protected]>
如果您发现文档中有任何不正确、与您使用特定功能的经验不符或需要进一步澄清的内容,请使用此表单报告文档问题。