PostgreSQLは、セキュリティを高めるためにクライアントサーバ間の通信を暗号化するSSL接続の使用を元来サポートしています。 サーバ側のSSL機能についての詳細は項16.7を参照してください。
サーバがクライアント証明に依存する場合、libpqはユーザのホームディレクトリにある~/.postgresql/postgresql.crtファイルに格納された証明書を送信します。 また、一致する~/.postgresql/postgresql.key秘密キーファイルも存在しなければならず、更に誰にでも読み取りできるような権限を付与してはなりません。 (Microsoft Windowsでは、このファイルの名前はそれぞれ%APPDATA%\postgresql\postgresql.crtと%APPDATA%\postgresql\postgresql.keyです。)
サーバがクライアント証明に依存する場合、libpqはユーザのホームディレクトリにある~/.postgresql/postgresql.crtファイルに格納された証明書を送信します。 また、一致する~/.postgresql/postgresql.key秘密キーファイルも存在しなければならず、更に誰にでも読み取りできるような権限を付与してはなりません。 (Microsoft Windowsでは、このファイルの名前はそれぞれ%APPDATA%\postgresql\postgresql.crtと%APPDATA%\postgresql\postgresql.keyです。) SSL接続は、サーバに証明書が存在しない場合は失敗します。 従って、この機能を使用するためにはサーバもroot.crtファイルを持たなければなりません。
もしアプリケーションでSSL(更にlibpq)を使用していたら、SSLライブラリをアプリケーションで初期化したことを libpq に知らせるのにPQinitSSL(int)
を使用できるでしょう。