Red Hat Training

A Red Hat training course is available for Red Hat Satellite

4.3. PostgreSQL データベースが SSL を使用するように設定する

デフォルトで、Satellite は最初に暗号化されていない通信によって PostgreSQL データベースに接続します。しかし、データベースの接続で SSL を使用するように設定することもできます。SSL 接続では Satellite とデータベース間の通信が暗号化されるので、広域ネットワークで管理データベースまたは外部データベースを使用している場合は有利になります。
Satellite Server と PosgreSQL データベースサーバー間の SSL 通信を有効にするには、以下の手順を実行します。
前提条件

Satellite Server と PosgreSQL データベースサーバー間の通信を有効にするには、以下が必要になります。これらのファイルを作成する方法については、使用する認証機関のドキュメントを参照してください。

  • 認証機関により署名された Satellite Server 向けの証明書ファイル。以下の手順では、ファイル名のサンプルは server.crt です。
  • 証明書の署名に使用した秘密鍵。以下の手順ではサンプルファイル名は server.key です。
  • 証明書が署名された認証機関の証明書。以下の手順では、サンプルファイル名は root-ca.cert です。
すべての Satellite サービスを停止してからデータベースで SSL を使用するように設定します。
[root@satellite ~]# spacewalk-service stop

手順4.1 データベースサーバーでの SSL 設定

  1. root でデータベースサーバーにログインします。
  2. 署名済み証明書と秘密鍵をデータベースサーバーの所定の場所にコピーします。
    [root@database~]# cp server.{key,crt} /var/opt/rh/rh-postgresql95/lib/pgsql/data/.
    [root@database~]# chown postgres:postgres /var/opt/rh/rh-postgresql95/lib/pgsql/data/server.{key,crt}
    [root@database~]# chmod 0400 /var/opt/rh/rh-postgresql95/lib/pgsql/data/server.key
    
  3. postgresql.conf ファイルを編集し、以下のオプションを追加します。
    ssl=on
    
  4. pg_hba.conf ファイルを編集します。このファイルは、データベースへのアクセスを制限するパーミッションファイルです。以下のような行を見つけます。
    host    mydb mydbuser 192.168.122.0/24 md5
    
    この行には、データベース名、データベースユーザー、および接続を可能にする IP アドレスまたは範囲が含まれます。host オプションを hostssl に変更します。
    hostssl mydb mydbuser 192.168.122.0/24 md5
    
    この変更により、着信の通信プロトコルが SSL を使用するようになり、暗号化されていない PostgreSQL 接続が拒否されるようになります。
  5. rh-postgresql95-postgresql サービスを再起動し、変更を有効にします。
    [root@database~]# service rh-postgresql95-postgresql restart
    
これでデータベースサーバーは、SSL を使用するクライアントからの接続のみを受け入れます。次の手順では、Satellite Server が SSL を使用してデータベースと通信するように設定します。

手順4.2 Satellite Server での SSL 設定

  1. root で Satellite Server にログインします。
  2. root-ca.cert 証明書をコピーします。
    [root@satellite ~]# cp root-ca.cert /etc/rhn/postgresql-db-root-ca.cert
    
  3. /etc/rhn/rhn.conf ファイルを編集して以下のオプションを追加します。
    db_ssl_enabled = 1
    
  4. 証明書を Satellite の Java web サーバーのキーストアに追加します。
    [root@satellite ~]# openssl x509 -in /etc/rhn/postgresql-db-root-ca.cert -out server.der -outform der
    [root@satellite ~]# keytool -keystore /etc/rhn/javatruststore.jks -alias postgresql -import -file server.der
    [root@satellite ~]# rm server.der
    

    重要

    キーストアに変更を加えるには、/etc/rhn/javatruststore.jks でパスワードが必要です。必要な場合は、以下のコマンドを使用してこのパスワードを変更します。
    [root@satellite ~]# keytool -storepasswd -keystore /etc/rhn/javatruststore.jks
    
  5. 新たな証明書ファイルの SELinux コンテキストを復元します。
    [root@satellite ~]# restorecon -R -F -v /etc/rhn/
    
  6. Satellite サービスを起動します。
    [root@satellite ~]# spacewalk-service start
    
これで Satellite サーバーは SSL を使用してデータベースと通信するようになります。