証明書の管理¶
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インストーラー(最初にサーバーインストーラー、次にエージェントインストーラー)を呼び出します。次に:
実行中のすべてのPEMエージェントを、最初にサーバーホストで、次に監視対象ノードで停止します。
LinuxホストでPEMエージェントを停止するには、ターミナルウィンドウを開き、スーパーユーザー権限を引き受けて、次のコマンドを入力します。
/etc/init.d/pemagent stopWindowsホストでは、使用することができます
ServicesPEMエージェントを停止するには、アプレットを。 PEMエージェントサービスの名前はPostgres Enterprise Manager Agentです。サービス名を強調表示Servicesダイアログ、およびクリックStop the service。既存の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エントリに追加します。-
使用
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-
生成するキーを使用
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.crtrm -f /tmp/_random.$$ 再使用
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使用
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使用
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-
使用
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 上の権限を変更
server.crtファイル、および一時ファイルを削除します。chmod 600 /opt/PostgreSQL/10/data/server.crtrm -f /tmp/_random.$$Postgresサーバーを再起動します。
/etc/init.d/postgresql-10 restart
エージェントのSSL証明書を更新する¶
PEMサーバーと対話するエージェントごとに、以下を行う必要があります。
- rsaキーと証明書を生成します。
- キーと証明書をエージェントにコピーします。
- エージェントを再起動します。
各エージェントは、に格納されている固有の識別子有するpem.agentテーブルpemデータベース。キーおよび証明書ファイルを、エージェントの識別子に対応するキーまたは証明書に置き換える必要があります。あなたが移動しなければならないことに注意してくださいagent.keyとagent.crt以降のコマンドは、以前に生成されたファイルを上書きします。次のキーファイルのペアを生成する前に、それぞれのPEMエージェントホスト上の場所にステップ2と3で生成されたファイルを(。
PEMエージェントキーファイルペアを生成するには:
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-
キーファイルが必要になります薬剤を同定した後、生成
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
-
各エージェントの証明書を生成します。証明書を生成するには、次のコマンドを実行して、証明書ファイルに出力をキャプチャします。
/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のコマンドラインを介して取得した)エージェントのエージェント数です。
権限を変更し
agent.crtファイルを:chmod 600 agent.crtPEMエージェントサービスを再起動する前に、各エージェントのキーと証明書ファイルを新しく生成されたファイルで置き換えます。
Linuxでは、次のコマンドを使用してサービスを再起動します。
/etc/init.d/pemagent start-
Windowsホストでは、サービスアプレットを使用してPEMエージェントを起動できます。 PEMエージェントサービスの名前は
Postgres Enterprise Managerエージェント。 [サービス]ダイアログでサービス名を強調表示し、クリックしStart the service。