PostgreSQLは、ユーザーがデータベースに安全に接続できるようにするSSL接続をサポートしています。この記事では、PostgreSQLデータベースでSSLを有効にする方法を見ていきます。
PostgreSQLでSSLを有効にする方法
PostgreSQLでSSL接続を有効にする手順は次のとおりです。 PostgreSQLサーバーでは、SSL構成のためにデータディレクトリに3つの証明書が必要です。それらは:
- root.crt (信頼されたルート証明書)
- server.crt (サーバー証明書)
- server.key (秘密鍵)
ターミナルを開き、次のコマンドを実行してrootとして実行します
$ sudo -
$ cd /var/lib/pgsql/data
opensslを使用して秘密鍵を生成します。パスフレーズの入力を求められます。
$ openssl genrsa -des3 -out server.key 1024
パスフレーズを削除する
$ openssl rsa -in server.key -out server.key
ボーナスリード:フォローするトップデータベースブログ
ファイルのアクセス許可と秘密鍵ファイルの所有権を更新します。
$ chmod 400 server.key
$ chown postgres.postgres server.key
同様に、サーバー証明書を作成します
$ openssl req -new -key server.key -days 3650 -out server.crt -x509
上記のステートメントで、-x509は自己署名証明書を示します。電子メール、国などの詳細の入力を求められます。入力して、証明書の生成を完了してください。
自己署名証明書を使用しているため、サーバーキーをルート証明書として使用します。
$ cp server.crt root.crt
pg_hba.confを更新して、次の行を追加します
# IPv4 remote connections for authenticated users hostssl all www-data 0.0.0.0/0 md5 clientcert=1 hostssl all postgres 0.0.0.0/0 md5 clientcert=1
postgresql.confを編集して、次の行を追加します
ssl = on
PostgreSQLサーバーを再起動します
$ /etc/init.d/postgresql restart
ボーナスリード:PostgreSQLで最大接続数を増やす方法
PostgreSQLクライアントでSSLを有効にする
PostgreSQLクライアントでSSLを有効にするには3つのファイルも必要です。 〜/.postgresql/に保存します ディレクトリ
- root.crt (信頼されたルート証明書)
- postgresql.crt (クライアント証明書)
- postgresql.key (秘密鍵)
postgresql.keyを作成します クライアントマシンでパスフレーズを削除します。
$openssl genrsa -des3 -out /tmp/postgresql.key 1024
$openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key
ボーナスリード:PostgreSQLパフォーマンスチューニングのヒント
次に、postgresql.crtを作成し、信頼されたルート(サーバーからの秘密鍵ファイル)を使用して署名します。 注意 、証明書の共通名(CN)の入力を求められたら、データベース名に設定します。
$openssl req -new -key /tmp/postgresql.key -out /tmp/postgresql.csr
$openssl x509 -req -in server.req -out /tmp/postgresql.csr -CA root.crt -CAkey server.key -out /tmp/postgresql.crt -CAcreateserial
サーバーの/tmpディレクトリに作成された3つのファイルをクライアントマシンにコピーします。 root.crtをサーバーの/tmpディレクトリからクライアントの〜/ .postgresql /にコピーします ディレクトリ。
この記事がPostgreSQLでSSLを有効にするのに役立つことを願っています。