Le module sslinfo
fournit des informations sur le
certificat SSL que le client actuel a fourni lors de sa connexion à
PostgreSQL. Le module est inutile (la plupart des
fonctions renvoient NULL) si la connexion actuelle n'utilise pas SSL.
Certaines des informations disponibles dans ce module peuvent aussi être
obtenues en utilisant la vue système interne pg_stat_ssl
.
Cette extension ne se construira pas du tout sauf si l'installation était
configurée avec --with-openssl
.
ssl_is_used() returns boolean
Renvoie TRUE si la connexion actuelle au serveur utilise SSL.
ssl_version() returns text
Renvoie le nom du protocole utilisé pour la connexion SSL (c'est-à-dire TLSv1.0, TLSv1.1, or TLSv1.2).
ssl_cipher() returns text
Renvoie le nom du chiffrement utilisé pour la connexion SSL (par exemple DHE-RSA-AES256-SHA).
ssl_client_cert_present() returns boolean
Renvoie TRUE si le client actuel a présenté un certificat client SSL au serveur. (Le serveur pourrait être configuré pour réclamer un certificat client.)
ssl_client_serial() returns numeric
Renvoie un numéro de série du certificat actuel du client. La combinaison du numéro de série de certificat et du créateur du certificat garantit une identification unique du certificat (mais pas son propriétaire -- le propriétaire doit régulièrement changer ses clés et obtenir de nouveaux certifications à partir du créateur).
Donc, si vous utilisez votre propre CA et autorisez seulement les certificats de ce CA par le serveur, le numéro de série est le moyen le plus fiable (bien que difficile à retenir) pour identifier un utilisateur.
ssl_client_dn() returns text
Renvoie le sujet complet du certificat actuel du client, convertissant des données dans l'encodage actuel de la base de données. Nous supposons que si vous utilisez des caractères non ASCII dans le noms des certificats, votre base de données est capable de représenter ces caractères aussi. Si votre bases de données utilise l'encodage SQL_ASCII, les caractères non ASCII seront représentés par des séquences UTF-8.
Le résultat ressemble à ceci : /CN=Somebody /C=Some
country/O=Some organization
.
ssl_issuer_dn() returns text
Renvoie le nom complet du créateur du certificat actuel du client,
convertissant les données caractères dans l'encodage actuel de la base
de données. Les conversions d'encodage sont gérées de la même façon que
pour ssl_client_dn
.
La combinaison de la valeur en retour de cette fonction avec le numéro de série du certificat identifie de façon unique le certificat.
Cette fonction est réellement utile si vous avez plus d'un certificat d'un CA de confiance dans le fichier d'autorité de certificat de votre serveur, ou si ce CA a envoyé quelques certificats intermédiaires d'autorité.
ssl_client_dn_field(fieldname text) returns text
Cette fonction renvoie la valeur du champ spécifié dans le sujet du certificat, ou NULL si le champ n'est pas présent. Les noms du champ sont des constantes de chaîne qui sont converties dans des identifieurs d'objet ASN1 en utilisant la base de données des objets OpenSSL. Les valeurs suivantes sont acceptables :
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
Tous ces champs sont optionnels, sauf
commonName
. L'inclusion des champs dépend
entièrement de la politique de votre CA. Par contre, la signification des
champs est strictement définie par les standards X.500 et X.509, donc
vous ne pouvez pas leur donner des significations arbitraires.
ssl_issuer_field(fieldname text) returns text
Identique à ssl_client_dn_field
, mais pour le
créateur du certificat, plutôt que pour le sujet du certificat.
ssl_extension_info() returns setof record
Fournit des informations sur les extensions des certificats clients : nom de l'extension, valeur de l'extension, et s'il s'agit d'une extension critique.
Victor Wagner <vitus@cryptocom.ru>
, Cryptocom LTD
Dmitry Voronin <carriingfate92@yandex.ru>
E-Mail du groupe de développement Cryptocom OpenSSL :
<openssl@cryptocom.ru>