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サーバーを再起動します。

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

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

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_certificate.crtファイルを生成し、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.crtファイルを生成し、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テーブルに格納されている一意の識別子があります。キーと証明書ファイルを、エージェントの識別子に対応するキーまたは証明書に置き換える必要があります。後続のコマンドは、以前に生成されたファイルを上書きします。あなたは次のキーファイルのペアを生成する前に、それぞれのPEMエージェントホスト上の場所に、ステップ2と3で生成された(agent.keyとagent.crtファイルを移動しなければならないことをしてくださいノート。

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をクリックします。