El módulo sslinfo proporciona información sobre el certificado
SSL que el cliente actual proporcionó al conectarse a
PostgreSQL. El módulo no tiene utilidad (la mayoría de las funciones
devolverán NULL) si la conexión actual no utiliza SSL.
Parte de la información disponible a través de este módulo también se puede obtener
utilizando la vista de sistema integrada
pg_stat_ssl.
Esta extensión no se compilará en absoluto a menos que la instalación se haya
configurado con --with-ssl=openssl.
ssl_is_used() returns boolean
Devuelve true si la conexión actual al servidor utiliza SSL, y false en caso contrario.
ssl_version() returns text
Devuelve el nombre del protocolo utilizado para la conexión SSL (por ejemplo, TLSv1.0, TLSv1.1, TLSv1.2 o TLSv1.3).
ssl_cipher() returns text
Devuelve el nombre del cifrado (cipher) utilizado para la conexión SSL (por ejemplo, DHE-RSA-AES256-SHA).
ssl_client_cert_present() returns boolean
Devuelve true si el cliente actual ha presentado un certificado de cliente SSL válido al servidor, y false en caso contrario. (El servidor puede o no estar configurado para requerir un certificado de cliente).
ssl_client_serial() returns numeric
Devuelve el número de serie del certificado del cliente actual. Se garantiza que la combinación del número de serie del certificado y el emisor del certificado identifica de forma única un certificado (pero no a su propietario; el propietario debería cambiar sus claves periódicamente y obtener nuevos certificados del emisor).
Por lo tanto, si ejecutas tu propia CA (Autoridad de Certificación) y permites que el servidor acepte únicamente certificados de esta CA, el número de serie es el medio más confiable (aunque no muy nemotécnico) para identificar a un usuario.
ssl_client_dn() returns text
Devuelve el nombre distinguido (subject DN) completo del certificado del cliente actual, convirtiendo los datos de caracteres a la codificación actual de la base de datos. Se asume que si utilizas caracteres no ASCII en los nombres del certificado, tu base de datos también es capaz de representar estos caracteres. Si tu base de datos utiliza la codificación SQL_ASCII, los caracteres no ASCII en el nombre se representarán como secuencias UTF-8.
El resultado se ve como /CN=Somebody /C=Some country/O=Some organization.
ssl_issuer_dn() returns text
Devuelve el nombre distinguido del emisor (issuer DN) completo del certificado del cliente actual, convirtiendo
los datos de caracteres a la codificación actual de la base de datos. Las conversiones de codificación
se manejan de la misma manera que para ssl_client_dn.
La combinación del valor de retorno de esta función con el número de serie del certificado identifica de forma única al certificado.
Esta función es realmente útil solo si tienes más de un certificado de CA de confianza en el archivo de la autoridad de certificación de tu servidor, o si esta CA ha emitido algunos certificados de autoridad de certificación intermedios.
ssl_client_dn_field(fieldname text) returns text
Esta función devuelve el valor del campo especificado en el asunto (subject) del certificado, o NULL si el campo no está presente. Los nombres de los campos son constantes de cadena que se convierten en identificadores de objeto ASN1 utilizando la base de datos de objetos de OpenSSL. Se aceptan los siguientes valores:
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
Todos estos campos son opcionales, excepto commonName. Depende
completamente de la política de tu CA cuál de ellos se incluirá y cuál
no. Sin embargo, el significado de estos campos está estrictamente definido por
los estándares X.500 y X.509, por lo que no puedes simplemente asignarles un significado
arbitrario.
ssl_issuer_field(fieldname text) returns text
Al igual que ssl_client_dn_field, pero para el emisor del certificado
en lugar del asunto (subject) del certificado.
ssl_extension_info() returns setof record
Proporciona información sobre las extensiones del certificado de cliente: el nombre de la extensión, el valor de la extensión y si es una extensión crítica.
Victor Wagner <[email protected]>, Cryptocom LTD
Dmitry Voronin <[email protected]>
Correo electrónico del grupo de desarrollo de OpenSSL de Cryptocom:
<[email protected]>