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 16.7, « Connexions tcp/ip sécurisées avec ssl » pour des détails sur la fonctionnalité SSL côté serveur.
Si le serveur demande un certificat au client, libpq enverra le certificat stocké dans le fichier ~/.postgresql/postgresql.crt se trouvant à l'intérieur du répertoire personnel de l'utilisateur. Un fichier de la clé privée correspondante, ~/.postgresql/postgresql.key, doit aussi être présent et ne doit pas être lisible par tout le monde (sur les systèmes Microsoft Windows, ces fichiers sont nommés %APPDATA%\postgresql\postgresql.crt et %APPDATA%\postgresql\postgresql.key).
Si le fichier ~/.postgresql/root.crt est présent dans le répertoire personnel de l'utilisateur, libpq utilisera la liste de certificats stockés pour vérifier le certificat du serveur (sur les systèmes Microsoft Windows, le fichier est nommé %APPDATA%\postgresql\root.crt). La connexion SSL échouera si le serveur ne présente pas de certificat ; du coup, pour utiliser cette fonctionnalité, le serveur doit avoir un fichier server.crt. 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 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.