Configuring SSL authentication on a Failover Manager cluster
============================================================

フェールオーバーマネージャーのSSL認証を有効にできます。接続するすべてのクライアントは、クラスター内のデータベースサーバーに接続するときにSSL認証を使用する必要があります。既存のクライアントが現在使用している接続方法を変更する必要があります。

フェールオーバーマネージャークラスターでSSLを有効にするには

1. ``server.crt`` および\ ``server.key`` ファイルをEDB Postgres Advanced
   Serverインストールの下の\ ``data``
   ディレクトリに配置します。当局によって署名された証明書を購入するか、独自の自己署名証明書を作成できます。自己署名証明書の作成については、
   `PostgreSQL core documentation <https://www.postgresql.org/docs/current/ssl-tcp.html#SSL-CERTIFICATE-CREATION>`_ を参照してください。

2. フェールオーバーマネージャークラスター内の各データベースの\ ``postgresql.conf``
   ファイルを変更し、SSLを有効にします。

.. code:: ini

       ssl=on

``postgresql.conf``
ファイルを変更した後、サーバーを再起動する必要があります。

1. フェールオーバーマネージャークラスターの各ノードで\ ``pg_hba.conf``
   ファイルを変更し、ファイルの先頭に次の行を追加します。

.. code:: shell

       hostnossl all all all reject

この行は、SSL認証を使用していない接続を拒否するようにサーバーに指示します。これにより、接続するクライアントにSSL認証が強制されます。
``pg_hba.conf`` ファイルの変更については、
`PostgreSQL core documentation <https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html>`_ を参照してください。

1. ``server.crt`` および\ ``server.key``
   ファイルをデータディレクトリに配置した後、証明書をJavaが理解できる形式に変換します。次のコマンドを使用できます。

.. code:: shell

       openssl x509 -in server.crt -out server.crt.der -outform der

詳細については、 `Postgres JDBC documentation <https://jdbc.postgresql.org/documentation/head/ssl-client.html>`_ を参照してください。

1. 証明書をJavaの信頼できる証明書ファイルに追加します。

.. code:: shell

       keytool -keystore $JAVA_HOME/lib/security/cacerts -alias <alias_name> -import -file server.crt.der

``$JAVA_HOME`` は、Javaインストールのホームディレクトリです。
``alias_name``
には任意の文字列を指定できますが、証明書ごとに一意である必要があります。
``keytool``
コマンドを使用して、使用可能な証明書のリストを確認したり、特定の証明書に関する情報を取得したりできます。
``keytool`` コマンドの使用の詳細については、次を入力してください。

.. code:: shell

       man keytool

各データベースサーバーからの証明書は、各エージェントの信頼できる証明書ファイルにインポートする必要があります。
``cacerts``
ファイルの場所は、システムごとに異なる場合があります。詳細については、
`Postgres JDBC documentation <https://jdbc.postgresql.org/documentation/head/ssl-client.html>`_ を参照してください。

1. クラスター内の各ノードで :ref:`efm.properties file <The cluster properties file>` を変更し、 ``jdbc.sslmode``
   プロパティを設定します。
