PostgreSQLLa base de données la plus sophistiquée au monde.

30.16. Support de SSL

PostgreSQL™ dispose d'un support natif des connexions SSL pour crypter les connexions client/serveur et améliorer ainsi la sécurité. Voir la Section 17.8, « Connexions tcp/ip sécurisées avec ssl » pour des détails sur la fonctionnalité SSL côté serveur.

libpq lit le fichier de configuration système d'OpenSSL™. Par défaut, ce fichier est nommé openssl.cnf et est placé dans le répertoire indiqué par openssl version -d. Cette valeur par défaut peut être surchargé en configurant la variable d'environnement OPENSSL_CONF avec le nom du fichier de configuration souhaité.

Pour vérifier que le certificat du serveur est de confiance, placez les certificats des autorités (CA) de confiance dans le fichier ~/.postgresql/root.crt dans le répertoire personnel de l'utilisateur. (Sur Microsoft Windows, le fichier est nommé %APPDATA%\postgresql\root.crt.) libpq vérifiera ensuite que le certificat du serveur est signé par une des autorités de confiance. La connexion SSL échouera si le serveur ne présente pas un certificat de confiance. Les entrées de la liste de révocation des certificats (CRL) sont aussi vérifiées si le fichier ~/.postgresql/root.crl existe (%APPDATA%\postgresql\root.crl sur Microsoft Windows).

Si le serveur réclame un certificat de confiance du client, libpq enverra le certificat stocké dans le fichier ~/.postgresql/postgresql.crt du répertoire personnel de l'utilisateur. Le certificat doit être signé par une des autorités (CA) de confiance du serveur. Un fichier de clé privé correspondant ~/.postgresql/postgresql.key doit aussi être présent sauf si la clé secrète du certificat est stocké dans un jeton matériel, comme spécifié dans PGSSLKEY. (Sur Microsoft Windows, ces fichiers sont nommés %APPDATA%\postgresql\postgresql.crt et %APPDATA%\postgresql\postgresql.key.) Le fichier de clé privée ne doit pas être lisible par tout le monde.

Si la variable d'environnement PGSSLKEY est configuré, sa valeur doit consister d'un nom de moteur et d'un identifiant clé séparés par une virgule. Dans ce cas, libpq chargera le moteur indiqué, c'est-à-dire le module OpenSSL™ qui supporte un matériel spécial et référence la clé avec l'identifiant indiqué. Les identifiants sont spécifiques au moteur. Typiquement, les jetons d'un matériel de chiffrement ne révèlent pas les clés secrètes à l'application. À la place, les applications délèguent les opérations cryptographiques qui nécessitent la clé secrète du jeton matériel.

Si vous utilisez SSL dans votre application (ainsi que dans libpq), vous pouvez utiliser PQinitSSL(int) pour indiquer à libpq que la bibliothèque SSL a déjà été initialisée par votre application. Voir http://h71000.www7.hp.com/doc/83final/BA554_90007/ch04.html pour des détails sur l'API SSL.

Tableau 30.1. Utilisation du fichier SSL libpq/client

Fichier Contenu Effet
~/.postgresql/postgresql.crt certificat client requis par le serveur
~/.postgresql/postgresql.key clé privée du client prouve le certificat client envoyé par l'utilisateur ; n'indique pas que le propriétaire du certificat est de confiance
~/.postgresql/root.crt autorité de confiance du certificat vérifie que le certificat du serveur est signé par une autorité de confiance
~/.postgresql/root.crl certificats révoqués par les autorités le certificat du serveur ne doit pas être sur cette liste