Managing Certificates

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

  • ca_certificate.crt

  • ca_key.key

  • server.crt

  • server.key

  • root.crl

  • root.crt

PEMサーバーと共にインストールされるPEMエージェントは、ca_certificate.crtファイルの有効期限を監視します。証明書の有効期限が間もなくエキスパイアと、PEMは次のことを行います。

  • 既存の証明書ファイルのバックアップを作成します。

  • 新しい証明書ファイルを作成し、新しいCA証明書ファイルをPEMサーバーのルート.crtファイルに追加します。

  • アクティブなエージェントの証明書ファイルを更新するジョブを作成します。

  • PEMサーバーを再起動します。

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

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

SSL証明書の置き換え

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

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

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

  • systemdを使用するLinuxの場合、たとえば:Centos 7または8

*   systemctl stop pemagent

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

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

  • /var/lib/pgsql/x/dataここで、xはPostgreSQLデータベースバージョンです。

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

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

例、コマンド:

*   # cp ca_certificate.crt ca_certificate_old.crt
  • エントリーにワードoldを追加して、ca_certificateファイルのバックアップを作成します。

  1. openssl_rsa_generate_key()ファンクションを使用して、ca_key.keyファイルを生成します。

*   /usr/pgsql-x.x/bin/psql -U postgres -d pem --no-psqlrc -t -A -c "SELECT public.openssl_rsa_generate_key(1024)" > /var/lib/pgsql/x/data/ca_key.key
  • ca_key.keyファイルを生成し、ca_key.keyファイルの特権を変更するときに使用する変数CA_KEYの内容をcatしファイル。

*   CA_KEY=$(cat /var/lib/pgsql/x/data/ca_key.key)
*    chmod 600 /var/lib/pgsql/x/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,
*   '/var/lib/pgsql/x/data/ca_key.key')" > /tmp/_random.$$
  • 次に、変数を使用してクエリーを実行し、コンテンツをca_certificate.crtファイルに配置します。

*   /usr/pgsql-x/bin/psql -U postgres -d pem --no-psqlrc -t -A -f /tmp/_random.$$ > /var/lib/pgsql/x/data/ca_certificate.crt
  • ca_certificate.crtファイルの権限を変更し、 SQLコマンドを含む一時ファイルを削除します。

*   chmod 600 /var/lib/pgsql/x/data/ca_certificate.crt
*    rm -f /tmp/_random.$$
  1. ca_certificate.crtファイルをroot.crtファイルとして再利用しファイル。

*   cp /var/lib/pgsql/x/data/ca_certificate.crt /var/lib/pgsql/x/data/root.crt
  • root.crtファイルのアクセス許可を変更します。

*   chmod 600 /var/lib/pgsql/x/data/root.crt
  1. openssl_rsa_generate_crl()ファンクションを使用して、証明書失効リスト(root.crl)を作成します。

*   /usr/pgsql-x/bin/psql -U postgres -d pem --no-psqlrc -t -A -c
*    "SELECT openssl_rsa_generate_crl('/var/lib/pgsql/x/data/ca_certificate.crt', '/var/lib/pgsql/x/data/ca_key.key')" > /var/lib/pgsql/x/data/root.crl
  • root.crlファイルのアクセス許可を変更します。

*   chmod 600 /var/lib/pgsql/x/data/root.crl
  1. openssl_rsa_generate_key()ファンクションを使用して、server.keyファイルを生成します。

*   /usr/pgsql-x/bin/psql -U postgres -d pem --no-psqlrc -t -A -c "SELECT public.openssl_rsa_generate_key(1024)" >> /var/lib/pgsql/x/data/server.key
  • server.keyファイルを生成し、server.keyファイルの特権を変更するときに使用する変数SSL_KEYの内容をcatしファイル。

*   SSL_KEY=$(cat /var/lib/pgsql/x/data/server.key)
*    chmod 600 /var/lib/pgsql/x/data/server.key
  1. 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'),
*   '/var/lib/pgsql/x/data/ca_certificate.crt',
*   '/var/lib/pgsql/x/data/ca_key.key')" > /tmp/_random.$$
*     /usr/pgsql-x/bin/psql -U postgres -d pem --no-psqlrc -t -A -f /tmp/_random.$$ >> /var/lib/pgsql/x/data/server.crt
  1. server.crtファイルの特権を変更し、一時ファイルを削除します。

*   chmod 600 /var/lib/pgsql/x/data/server.crt
*    rm -f /tmp/_random.$$
  1. Postgresサーバーを再起動します。

  • Linuxで`init.d`を使用する場合;例、Centos6ホストの場合:
    
*   /etc/init.d/postgresql-x restart
  • Linuxでsystemdを使用する場合;例、Centos7ホストの場合:

*   systemctl restart postgresql-x

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

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

  • rsaキーと証明書を生成します。

  • キーと証明書をエージェントにコピーします。

  • エージェントをリスタートします。

各エージェントには、pemデータベースのpem.agentテーブルに格納されている一意の識別子があります。キーと証明書ファイルを、エージェントの識別子に対応するキーまたは証明書に置き換える必要があります。次のキーファイルペアを生成する前に、agent.keyおよびノートファイル(手順2および3で生成されたファイルをそれぞれのPEMエージェントホストの所定の場所に移動する必要があります。後続のコマンドは以前に生成されたファイルを上書きします)

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

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

*   /usr/pgsql-x/bin/psql -U postgres -d pem --no-psqlrc -t -A -c "SELECT ID FROM pem.agent"
  • Linuxでは、/etc/postgres-reg.iniファイルのPEMagentセクションで、キーと証明書のエージェント識別子と場所を見つけることもできます。

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

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

*   HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\EnterpriseDB\PEM\agent
  • -32ビットWindowsインストールでは、次を確認します。

*   HKEY_LOCAL_MACHINE\SOFTWARE\EnterpriseDB\PEM\agent

2.キーファイルを必要とするエージェントを特定した後、各エージェントに対してagent.keyを生成します。 キーを生成するには、次のコマンドを実行して、出力をファイルにキャプチャします:

*   /usr/pgsql-x/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

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

*   /usr/pgsql-x/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'),
*   '/var/lib/pgsql/x/data/ca_certificate.crt',
*   '/var/lib/pgsql/x/data/ca_key.key')" > agent.crt
  • ここで、* $ ID *はエージェントのエージェント番号です( psqlコマンドラインから取得)。

  1. agent.crtファイルの特権を変更します。

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

    • init.dを使用するLinuxでは、次のコマンドを使用してサービスをリスタートします。

*   /etc/init.d/pemagent start
  • systemdを使用するLinuxでは、次のコマンドを使用してサービスをリスタートします。

*   systemctl start pemagent

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