Generating SSL files for HA PEM backend hosts
=============================================

このページでは、 HA
PEMバックエンドのSSLファイルを生成する方法について説明します。

外部CAを使用する場合
--------------------

!!!注

SSL対応のPostgresクラスターをプロビジョニングする既存のプロセスがある場合、これらの条件は既に満たされている可能性があります。
この場合、それ以上のアクションは必要ありません。

.. ::
   独自の証明書を使用している場合、各バックエンドPostgresインスタンスのサーバー証明書とキーを生成します。ローカルインスタンスの証明書とキー、およびCAのパブリック証明書を、各バックエンドホストのPGDATAに配置します。 CAがPEMエージェントのクライアント証明書の署名に使用するものと同じであることが重要です。それ以外の場合、`cert` 認証は失敗します。

オプションで、証明書失効リストCRLが利用可能な場合は、それを含めることができます。

これらのファイルが\ ``postgres`` または\ ``enterprisedb``
ユーザーとグループが所有していること、および権限が\ ``0600``
に設定されていることを確認します。

sslutilsを使用する場合
----------------------

HA展開では、PEMは、クラスターマネージャーとの衝突を回避するためにクラスターを構成または再起動しません。したがって、sslutilsは手動で構成する必要があります。

!!!注 これらの手順は\ ``postgres`` または\ ``enterprisedb``
ユーザーとして実行して、ファイルの所有権が正しいことを確認します。

1. 認証局として機能するときにsslutilsが使用する単一の証明書とキーペアを生成します。これらを各バックエンドホストのPGDATAに配置します。

.. code:: sh

       openssl genrsa -out ca_key.key 2048

       openssl req -x509 -new -nodes -key ca_key.key -sha256 -days 3650 \
       -out ca_certificate.crt \
       -subj "/C=.../ST=.../L=.../O=.../CN=PEM CA"

1. 各バックエンドホストで、\ ``ca_certificate.crt``
   のコピーを作成し、\ ``root.crt``
   という名前を付けます。これもPGDATAに保存する必要があります。

2. 各バックエンドホストで、サーバーキーを生成し、CAによって署名されたサーバー証明書を生成します。クライアント接続に\ ``verify-full``
   SSLモードを使用する予定がある場合、共通名がサーバーのDNS名と一致することが重要です。

.. code:: sh

       openssl genrsa -out server.key 2048

       openssl req -new -key server.key -out server.csr \
           -subj "/C=.../ST=.../L=.../O=.../CN=..."

       openssl x509 -req -in server.csr -CA ca_certificate.crt -CAkey ca_key.key \
           -CAcreateserial -out server.crt -days 3650 -sha256

1. キーファイルと証明書ファイルのアクセス許可を設定し、CSRを削除します。

.. code:: sh

       chmod 0600 ca_certificate.crt
       chmod 0600 ca_key.key
       chmod 0600 root.crt
       chmod 0600 server.crt
       chmod 0600 server.key
       rm server.csr
