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

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

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

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

サーバのプライベートキーと証明書を作成する方法の詳細は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

このように、証明書を自己署名の証明書にして、キーと証明書とをサーバが検索する場所にコピーします。

アダルトレンタルサーバー