Generating agent certificates manually
======================================

このページでは、エージェント証明書を手動で生成する方法について説明します。これは、
sslutilsではなくローカルCAを使用している場合、またはsslutilsを使用しているが、共通エージェント証明書の使用に移行する場合に必要です。

これらの手順は、証明書署名要求CSRを提供する必要がある組織または外部CAを使用している場合にも役立ちます。この場合、手順3および4をCAの適切な手順に置き換える必要があります。

これらのさまざまなSSLモデルの詳細については、
:ref:`Deciding on an SSL model <Deciding on an SSL model>` を参照してください。

エージェント証明書とキーの生成
------------------------------

1. エージェントが実行されるホストで、エージェントキーを生成します。

.. code:: shell

      # Running as root
      openssl genrsa -out agent.key 4096 

1. エージェントのCSRを生成します。

.. code:: shell

      openssl req -new -key agent.key -out agent.csr -subj /C=<country>/ST=<state>/L=<locality>/O=<organization>/CN=<agent_user>

``-subj`` は組織に合わせて適切に入力し、 ``<agent_user>``
は、エージェントがPEMデータベースに接続するために使用するPostgresのユーザー名に置き換えます。

1. CAが存在するホストにCSRをコピーします。

2. CAホストで、\ ``openssl x509``
   コマンドを使用してCSRに署名し、エージェント証明書を生成します。

.. code:: shell

      openssl x509 -req -days 365 -in agent.csr -CA ca_certificate.crt -CAkey ca_key.key -CAcreateserial -out agent.crt

1. ``agent.crt`` をエージェントホストにコピーします。

2. エージェントホストで、\ ``agent.crt`` および\ ``agent.key``
   ファイルの権限を変更します。

.. code:: shell

      chmod 600 agent.crt agent.key

新しい証明書とキーを使用するようにエージェントを構成する
--------------------------------------------------------

次の手順は、この証明書とキーを新しいエージェントが使用するか、既に登録されているエージェントが使用するかによって異なります。

1. 新しい証明書とキーファイルへの絶対パスを提供して、エージェントを登録します。
   ``<agent_user>``
   の値は、証明書の一般名と一致し、PEMバックエンドデータベースで\ ``pem_agent``
   ロールを持つPostgresユーザーである必要があります。

.. code:: shell

       export PEM_SERVER_PASSWORD=edb

       /usr/edb/pem/agent/bin/pemworker --register-agent \
       --pem-server 192.168.99.130 \
       --pem-user enterprisedb \
       --pem-port 5444 \
       --pem-agent-user <agent_user> \
       -o agent_ssl_crt=/root/.pem/agent.crt \
       -o agent_ssl_key=/root/.pem/agent.key

1. pemagentサービスを有効にして開始します。

.. code:: shell

       systemctl enable pemagent
       systemctl start pemagent

1. エージェントホストの\ ``agent.cfg`` ファイルの\ ``agent_ssl_key``
   、および\ ``agent_ssl_crt``
   パラメーターを編集して、それぞれ新しいキーと証明書への絶対パスを提供します。エージェントユーザーも変更する場合は、
   ``agent_user``
   も編集します。証明書の一般名と一致し、PEMバックエンドデータベースで\ ``pem_agent``
   ロールを持つPostgresユーザーである必要があります。

.. code:: ini

       agent_user=<agent_user>
       agent_ssl_key=/<new_location>/agent.key
       agent_ssl_crt=/<new_location>/agent.crt

1. pemagentサービスを再起動します。

.. code:: shell

       systemctl restart pemagent
