他のバージョンの文書 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

3.7. SSLによる安全なTCP/IP接続

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

SSL サポートを有効にしてコンパイルされた場合、PostgreSQL サーバは、postgresql.conf において ssl パラメータを有効にすることで、SSL サポートを有効にして起動することができます。 SSL モードで起動するときは、サーバはファイル server.keyserver.crt をデータディレクトリの中から探します。これらのファイルはそれぞれサーバのプライベートキーと証明書を含んだものです。 SSL が動作可能なサーバを起動するためには、これらのファイルを正しく設定しなければなりません。もしプライベートキーがパスフレーズで保護されている場合は、サーバはパスフレーズの入力を促し、入力されるまでは起動しません。

サーバは標準接続と SSL 接続の両方を同じ TCP/IP ポート上で監視し、接続してきたクライアントと SSL を使用するかどうかを交渉します。 特定の接続に対し、サーバに SSL の使用を強制させる方法については Chapter 6 を参照してください。

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

openssl req -new -text -out server.req

opensslから出される質問に答えてください。このとき、Common Nameにはローカルホスト名を入力して、チャレンジパスワードは空白でも構いません。 スクリプトがパスフレーズで保護されたキーを生成しますが、4 文字以下のパスフレーズは認められません。パスフレーズを削除するためには (サーバの自動起動を行いたいのであれば)、下記のコマンドを実行してください。

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

既存のキーのロックを外すために、古いパスフレーズを入力します。そして、下記を実行してください。

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

このように、証明書を自筆署名の証明書にして、キーと証明書とをサーバが見つけられる場所にコピーします。