3.7. SSL の安全な TCP/IP 接続

PostgreSQLは本来的にSSLの接続が クライアント/サーバの通信が更に安全になるよう暗号化する ことをサポートしています。そのためにはOpenSSL がクライアントとサーバシステムの両方にインストールされビルド時に 動作可能になっている必要があります。(Chapter 1を参照してください。)

SSL サポートがコンパイルされると、PostgreSQLサーバは SSL 接続を動作可能にするために引数-l (アルファベットのエル) と一緒に起動することができるようになります。SSL モードで起動する 時は、postmaster はファイルserver.keyserver.crtをデータディレクトリの中から探します。 これらのファイルは SSL が動作可能なサーバが起動する前に正しく 設定されなけばいけません。もしプライベートキーがパスフレーズで 保護されている場合は、postmaster はパスフレーズの入力を待ち、 入力されるまでは起動しません。

postmaster は標準と SSL 接続の両方を同じ TCP/IP ポート上で受け付け (listen)し、接続するクライアントが SSL を使用するかどうかを検討します。 特定の接続に対しサーバ側で SSL の使用を強制する方法については Chapter 4を参照して下さい。

サーバのプライベートキーと証明書を作成する方法の詳細は OpenSSLのドキュメントを参照して下さい。 簡単な自筆の証明書はテストで始めるために使うことができますが、 クライアントがサーバ識別を確かめるためには CA (世界共通の CA もしくは地元のもの)の署名付き証明書が必要です。 自筆の証明書を作るためには下記の OpenSSL コマンドを使って下さい。

openssl req -new -text -out cert.req
openssl に聞かれる質問に答えて下さい。Common Name にはローカルホスト名 を入力して下さい。チャレンジパスワードは空白でも構いません。 スクリプトがパスフレーズによって保護されたキーを作成しますが、 4 文字以下のパスフレーズは認めません。パスフレーズを削除する時は (postmaster の自動起動を行いたい時はそうしなければいけません)、 下記のコマンドを実行して下さい。
openssl rsa -in privkey.pem -out cert.pem
既に存在するキーのロックを外すために、古いパスフレーズを入力します。 そして、下記を実行してください。
openssl req -x509 -in cert.req -text -key cert.pem -out cert.cert
cp cert.pem $PGDATA/server.key
cp cert.cert $PGDATA/server.crt
これは証明書を自筆の物にし、キーと許可書を postmaster が探す場所に コピーするためです。