16.7. Connexions TCP/IP sécurisées avec SSL

PostgreSQL dispose d'un support natif pour l'utilisation de connexions SSL, cryptant ainsi les communications clients/serveurs pour une sécurité améliorée. Ceci requiert l'installation d'OpenSSL à la fois sur le système client et sur le système serveur et que ce support soit activé au moment de la construction de PostgreSQL (voir le Chapitre 14).

Avec le support SSL compilé, le serveur PostgreSQL peut être lancé avec SSL activé en activant ssl dans postgresql.conf. Lors d'un démarrage en mode SSL, le serveur cherchera les fichiers server.key et server.crt dans le répertoire des données, qui devraient contenir respectivement la clé privée du serveur et le certificat. Ces fichiers doivent être configurés correctement avant qu'un serveur dont le mode SSL est activé puisse démarrer. Si la clé privée est protégée avec une phrase, le serveur la demandera et ne se lancera pas tant que celle-ci n'aura pas été saisie.

Le serveur écoutera les connexions SSL et standard sur le même port TCP et négociera avec tout client se connectant qu'il utilise ou non SSL. Voir le Chapitre 19 pour savoir comment forcer l'utilisation de SSL pour certaines connexions.

Pour les détails sur la création de la clé privé et du certificat du serveur, référez-vous à la documentation d'OpenSSL documentation. Un simple certificat signé par soi-même peut être utilisé pour commencer les tests mais un certificat signé par une autorité (CA) (soit un des CA globaux soit un local) devrait être utilisé en production de façon à ce que le client puisse vérifier l'identité du serveur. Pour créer rapidement un certificat signé soi-même, utilisez la commande OpenSSL suivante :

openssl req -new -text -out server.req

Remplissez les informations que openssl réclame. Assurez-vous que vous entrez le nom local de l'hôte sur << Common Name >> ; le mot de passe de challenge peut être laissé vide. Le programme générera une clé qui est protégée par une phrase ; elle n'acceptera pas une phrase qui fait moins de quatre caractères. Pour supprimer la phrase (ce que vous devez faire si vous voulez automatiser le lancement du serveur), lancez les commandes

openssl rsa -in privkey.pem -out server.key
rm privkey.pem

Saisissez l'ancienne phrase pour débloquer la clé existante. Maintenant, saisissez

openssl req -x509 -in server.req -text -key server.key -out server.crt
chmod og-rwx server.key

pour remplacer le certificat en un certificat signé par soi-même et copiez la clé et le certificat là où le serveur les cherchera.