PostgreSQL Replication (4) レプリケーションの通信でSSLを利用する

こんにちは。

グローバルソリューション事業部の吉村です。

 

先日、後野が PostgreSQL Replication 設定を紹介しましたが、

今回はレプリケーション時の通信をSSL設定にしようと思います。

MasterとSlaveのPostgreSQLサーバがローカル間の通信ならまだ安心ですが、

インターネット越しのレプリケーションとなると、

セキュアな通信を行い、データを保護したいですよね。

 

手順としては、

  1. 自己証明書を作成する
  2. Master 側の pg_hba.conf で SSL 通信のみ受け付ける
  3. Master 側の postgresql.conf で SSL 機能を有効化する
  4. Slave側の recovery.conf でSSL でレプリケーションを有効化する

という流れになります。

 

pgsql-image

後野の構成図を参考にしながら、一度レプリケーションが構築された状態を前提とします。

 

 

1.自己証明書を作成

 

CentOS 6.5 OpenSSLでオレオレ認証局」を参考にさせていただきました。

上記リンクの手順の通りに自己証明書を作成していきますが、必ずCA認証局の作成から行ってください。

これにプラスして、以下の作業が必要です。

 

server.crt、server.key、cacert.pem を PostgreSQL のデータディレクトリに移動

 

証明書関連の所有者、グループを  postgres に変更

 

秘密鍵のパーミッションを変更

 

これらのいずれかを設定し忘れると、SSL 有効化したあとに、PostgreSQLが起動しなくなるので、ご注意ください。

 

 

2.Master 側の pg_hba.conf で SSL 通信のみ受け付ける

 

Master側で Replication の接続制限を行います。

その際に、SSL通信のみ受け付けるように設定します。

 

 

3.Master 側の postgresql.conf で SSL 機能を有効化する

 

Master側でSSL機能を有効化します。

 

ここまでできたら、Master側のPostgreSQLを再起動して、SSLを有効化しましょう。

 

 

4.Slave側の recovery.conf でSSL でレプリケーションを有効化する

 

続いて、Slave側でレプリケーションの設定にSSLを有効化します。

 

こちらも Slave 側のPostgreSQLを再起動して、SSLを有効にしましょう。

 

これで、設定完了です。

 

実際にSlave側から SSL での接続を確認します。

 

正常に SSL connection 出来ていますね!

 

 

それでは、今回はここまでです。

 

次回もお楽しみに!

Share on LinkedIn
LINEで送る
Pocket

吉村

吉村

クララオンライン グローバルビジネスストラテジー部でマーケティング担当として働いています。 クラウド関連技術と中国関連の情報をお届けしてます。 たまに DJ とかします。日本語RAPが大好きです。