証明書の管理

PEMサーバーバッキングデータベースのデータディレクトリに格納されているファイルには、PEMサーバーが安全な接続を利用するのに役立つ情報が含まれています。

  • ca_certificate.crt
  • ca_key.key
  • server.crt
  • server.key
  • root.crl
  • root.crt

PEMサーバにインストールされているPEMエージェントはの有効期限を監視ca_certificate.crtファイルを。証明書の有効期限が切れそうになると、PEMは次のことを行います。

  • 既存の証明書ファイルのバックアップを作成します。
  • 新しい証明書ファイルを作成し、新しいCA証明書ファイルをPEMサーバーのroot.crtファイルに追加します。
  • アクティブなエージェントの証明書ファイルを更新するジョブを作成します。
  • PEMサーバーを再起動します。

あなたは、エージェントをアンインストールすると、そのエージェントに関連付けられた証明書は、(で維持証明書失効リストに追加されますroot.crl証明書がPEMサーバーに接続するために使用することはできないことを確実にするためのファイル)。

次のセクションには、証明書ファイルの手動での置換に関する詳細情報が含まれています。

SSL証明書を交換する

次の手順では、既存のPEMインストールのSSL証明書の置換について詳しく説明します。サーバーを新しいバージョンに同時にアップグレードする場合は、SSL証明書を置き換える前に、すべてのPEMインストーラー(最初にサーバーインストーラー、次にエージェントインストーラー)を呼び出します。次に:

  1. 実行中のすべてのPEMエージェントを、最初にサーバーホストで、次に監視対象ノードで停止します。

    LinuxホストでPEMエージェントを停止するには、ターミナルウィンドウを開き、スーパーユーザー権限を引き受けて、次のコマンドを入力します。

    /etc/init.d/pemagent stop

    Windowsホストでは、使用することができますServices PEMエージェントを停止するには、アプレットを。 PEMエージェントサービスの名前はPostgres Enterprise Manager Agentです。サービス名を強調表示Servicesダイアログ、およびクリックStop the service 。

  2. 既存のSSLキーと証明書のバックアップを取ります。 SSLキーと証明書はに格納されdata 、あなたのPEMのインストールディレクトリの下に。たとえば、Linuxシステムのデフォルトの場所は次のとおりです。

    /opt/PostgreSQL/10/data

    次のファイルのコピーを作成し、各ファイルに拡張子を追加して、名前を一意にします。

    • ca_certificate.crt
    • ca_key.key
    • root.crt
    • root.crl
    • server.key
    • server.crt

    たとえば、次のコマンド:

    # cp ca_certificate.crt ca_certificate_old.crt

    バックアップを作成ca_certificate単語を使用してファイルoldエントリに追加します。

  3. 使用openssl_rsa_generate_key()を生成する機能をca_key.keyファイルを:

    /opt/PostgreSQL/10/bin/psql -U postgres -d pem --no-psqlrc -t -A -c "SELECT public.openssl_rsa_generate_key(1024)" > /opt/PostgreSQL/10/data/ca_key.key

    作成した後ca_key.keyファイル、 cat変数に内容をCA_KEY生成する際に使用するためにca_certificate.crtファイルをして上の権限を変更ca_key.keyファイル:

    CA_KEY=$(cat /opt/PostgreSQL/10/data/ca_key.key)

    chmod 600 /opt/PostgreSQL/10/data/ca_key.key

  4. 生成するキーを使用ca_certificate.crtファイルを。簡単にするために、SQLクエリを一意の名前で一時ファイルに配置します。

    echo "SELECT openssl_csr_to_crt(openssl_rsa_key_to_csr('${CA_KEY}', 'PEM','US', 'MA', 'Bedford', 'Postgres Enterprise Manager', 'support@enterprisedb.com'), NULL, '/opt/PostgreSQL/10/data/ca_key.key')" > /tmp/_random.$$

    その後にコンテンツを配置し、クエリを実行するために変数を使用ca_certificate.crtファイル。

    /opt/PostgreSQL/10/bin/psql -U postgres -d pem --no-psqlrc -t -A -f /tmp/_random.$$ > /opt/PostgreSQL/10/data/ca_certificate.crt

    パーミッション変更ca_certificate.crtファイルを、およびSQLコマンドが含まれて一時ファイルを削除します。

    chmod 600 /opt/PostgreSQL/10/data/ca_certificate.crt

    rm -f /tmp/_random.$$

  5. 再使用ca_certificate.crtファイルとしてroot.crtファイル:

    cp /opt/PostgreSQL/10/data/ca_certificate.crt /opt/PostgreSQL/10/data/root.crt

    パーミッション変更root.crtファイルを:

    chmod 600 /opt/PostgreSQL/10/data/root.crt

  6. 使用openssl_rsa_generate_crl()証明書失効リスト(作成する機能をroot.crl ):

    /opt/PostgreSQL/10/bin/psql -U postgres -d pem --no-psqlrc -t -A -c "SELECT openssl_rsa_generate_crl('/opt/PostgreSQL/9.5/data/ca_certificate.crt', '/opt/PostgreSQL/10/data/ca_key.key')" > /opt/PostgreSQL/10/data/root.crl

    パーミッション変更root.crlファイルを:

    chmod 600 /opt/PostgreSQL/10/data/root.crl

  7. 使用openssl_rsa_generate_key()を生成する機能をserver.keyファイルを:

    /opt/PostgreSQL/10/bin/psql -U postgres -d pem --no-psqlrc -t -A -c "SELECT public.openssl_rsa_generate_key(1024)" >> /opt/PostgreSQL/10/data/server.key

    作成した後server.keyファイル、 cat変数に内容をSSL_KEY生成する際に使用するためにserver.crtファイルをして上の権限を変更server.keyファイル:

    SSL_KEY=$(cat /opt/PostgreSQL/10/data/server.key)

    chmod 600 /opt/PostgreSQL/10/data/server.key

  8. 使用SSL_KEYサーバ証明書を生成します。で証明書を保存server.crtファイル。簡単にするため、最初にSQLクエリを一意の名前を持つ一時ファイルに配置します。

    echo "SELECT openssl_csr_to_crt(openssl_rsa_key_to_csr('${SSL_KEY}', 'PEM','US', 'MA', 'Bedford', 'Postgres Enterprise Manager', 'support@enterprisedb.com'), '/opt/PostgreSQL/10/data/ca_certificate.crt', '/opt/PostgreSQL/10/data/ca_key.key')" > /tmp/_random.$$

    /opt/PostgreSQL/10/bin/psql -U postgres -d pem --no-psqlrc -t -A -f /tmp/_random.$$ >> /opt/PostgreSQL/10/data/server.crt

  9. 上の権限を変更server.crtファイル、および一時ファイルを削除します。

    chmod 600 /opt/PostgreSQL/10/data/server.crt

    rm -f /tmp/_random.$$

  10. Postgresサーバーを再起動します。

/etc/init.d/postgresql-10 restart

エージェントのSSL証明書を更新する

PEMサーバーと対話するエージェントごとに、以下を行う必要があります。

  • rsaキーと証明書を生成します。
  • キーと証明書をエージェントにコピーします。
  • エージェントを再起動します。

各エージェントは、に格納されている固有の識別子有するpem.agentテーブルpemデータベース。キーおよび証明書ファイルを、エージェントの識別子に対応するキーまたは証明書に置き換える必要があります。あなたが移動しなければならないことに注意してくださいagent.keyとagent.crt以降のコマンドは、以前に生成されたファイルを上書きします。次のキーファイルのペアを生成する前に、それぞれのPEMエージェントホスト上の場所にステップ2と3で生成されたファイルを(。

PEMエージェントキーファイルペアを生成するには:

  1. psqlを使用して、エージェントの数とそれに対応する識別子を見つけます。

    /opt/PostgreSQL/10/bin/psql -U postgres -d pem --no-psqlrc -t -A -c "SELECT ID FROM pem.agent"

  • Linuxでは、あなたはまた、鍵と証明書のエージェント識別子と場所を見つけることができますPEMagentのセクション/etc/postgres-reg.iniファイルを。

  • Windowsでは、情報はレジストリに保存されます。

    • 64ビットWindowsインストールでは、次を確認します。

      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\EnterpriseDB\PEM\agent

    • 32ビットWindowsインストールでは、次を確認します。

    HKEY_LOCAL_MACHINE\SOFTWARE\EnterpriseDB\PEM\agent

  1. キーファイルが必要になります薬剤を同定した後、生成agent.key各エージェントのを。キーを生成するには、次のコマンドを実行して、出力をファイルにキャプチャします。

    /opt/PostgreSQL/10/bin/psql -U postgres -d pem --no-psqlrc -t -A -c "SELECT openssl_rsa_generate_key(1024)" > agent.key

権限を変更しagent.keyファイルを:

chmod 600 agent.key
  1. 各エージェントの証明書を生成します。証明書を生成するには、次のコマンドを実行して、証明書ファイルに出力をキャプチャします。

    /opt/PostgreSQL/10/bin/psql -U postgres -d pem --no-psqlrc -t -A -c "SELECT openssl_csr_to_crt(openssl_rsa_key_to_csr('$(cat agent.key)', 'agent<$ID>', 'US', 'MA', 'Bedford', 'Postgres Enterprise Manager', 'support@enterprisedb.com'), '/opt/PostgreSQL/10/data/ca_certificate.crt', '/opt/PostgreSQL/10/data/ca_key.key')" > agent.crt

$ IDは、(psqlのコマンドラインを介して取得した)エージェントのエージェント数です。

  1. 権限を変更しagent.crtファイルを:

    chmod 600 agent.crt

  2. PEMエージェントサービスを再起動する前に、各エージェントのキーと証明書ファイルを新しく生成されたファイルで置き換えます。

  • Linuxでは、次のコマンドを使用してサービスを再起動します。

    /etc/init.d/pemagent start

  • Windowsホストでは、サービスアプレットを使用してPEMエージェントを起動できます。 PEMエージェントサービスの名前はPostgres Enterprise Managerエージェント。 [サービス]ダイアログでサービス名を強調表示し、クリックしStart the service 。