9.4. マルチホームシステム上での Subscription Asset Manager の設定

SSL 証明書は、サーバーの特定と認証をサーバーのホスト名に依存しています。Subscription Asset Manager がマルチホームインスタンス上で実行中の場合は、安全な接続を確保するために各インターフェイスでそれぞれの証明書が必要になります。
  1. 自己署名証明書認証局 (CA) を使ってサーバー証明書を生成するように設定します。

    注記

    CA が設定済みの場合、またはサードパーティーの CA を使って証明書を発行できる場合は、このステップを省略します。
    1. /etc/pki 内にディレクトリーとサブディレクトリーを作成します。この例では myCA を作成しています。
      以下では分かりやすくするために、コマンドを複数行に分割していますが、実際には 1 行のコマンドにして実行します。
      [root@server1 ~]# mkdir -m 0755 \
           /etc/pki/myCA \
           /etc/pki/myCA/private \
           /etc/pki/myCA/certs \
           /etc/pki/myCA/newcerts \
           /etc/pki/myCA/crl
    2. OpenSSL 設定ファイルを新規 PKI ディレクトリーにコピーし、パーミッションを設定します。
      [root@server1 ~]# cp /etc/pki/tls/openssl.cnf /etc/pki/myCA/openssl.my.cnf
      [root@server1 ~]# chmod 0600 /etc/pki/myCA/openssl.my.cnf
    3. インデックスファイルを作成します。
      [root@server1 ~]# touch /etc/pki/myCA/index.txt
    4. シリアル番号ファイルを作成し、開始番号を付けます。
      [root@server1 ~]# echo '01' > /etc/pki/myCA/serial
    5. CA ディレクトリーを開きます。
      [root@server1 ~]# cd /etc/pki/myCA/
    6. 自己署名 CA 証明書を生成します。証明書の対象者に使用する場所や会社などの情報の入力が求められます。
      [root@server1 myCA]# openssl req -config openssl.my.cnf -new -x509 -extensions v3_ca -keyout private/myca.key -out certs/myca.crt -days 1825
      
      -----
      Country Name (2 letter code) [XX]:US
      State or Province Name (full name) []:North Carolina
      Locality Name (eg, city) [Default City]:Raleigh
      Organization Name (eg, company) [Default Company Ltd]:Example
      Organizational Unit Name (eg, section) []:Engineering
      Common Name (eg, your name or your server's hostname) []:server1
      Email Address []:admin@example.com
      -----
    7. 新規 CA ディレクトリー (/etc/pki/myCA/) の場所に使用する OpenSSL 設定ファイルを編集します。
      [root@server1 myCA]# sed -i "s/\/etc\/pki\/CA/\/etc\/pki\/myCA/" openssl.my.cnf
    8. マルチホームの CA 設定ファイルを作成します。
      [root@server1 myCA]# cp /etc/pki/tls/openssl.cnf /etc/pki/myCA/openssl.my_multihome.cnf
    9. マルチホームの設定ファイルを編集します。
      • CA ディレクトリーを /etc/pki/myCA に変更します。
        dir            = /etc/pki/myCA
      • copy_extensions の行のコメントを解除し、値を copy に設定します。
        copy_extensions = copy
      • req_extensions の行のコメントを解除し、リクエストのバージョン 3 拡張を有効にします。
        req_extensions = v3_req
      • subjectAltNames 拡張を追加し、システム上の他のインターフェイスを追加します。
        subjectAltName = @alt_names
        
        [alt_names]
        DNS.1   = server2
        DNS.2   = server3
  2. Subscription Asset Manager 用のサーバー証明書を作成し、署名します。
    1. マルチホーム設定ファイルを使用して、Subscription Asset Manager の証明書リクエストを作成します。CA 証明書の作成時と同様に、証明書の対象者名の構築に使用する情報 (場所や組織名) が求められます。
      [root@server1 myCA]# openssl req -config openssl.my_multihome.cnf -new -nodes -keyout private/server.key -out server.csr -days 365
      
      -----
      Country Name (2 letter code) [XX]:US
      State or Province Name (full name) []:North Carolina
      Locality Name (eg, city) [Default City]:Raleigh
      Organization Name (eg, company) [Default Company Ltd]:Example
      Organizational Unit Name (eg, section) []:Engineering
      Common Name (eg, your name or your server's hostname) []:server1
      Email Address []:admin@example.com
      
      Please enter the following 'extra' attributes
      to be sent with your certificate request
      A challenge password []:
      An optional company name []:
      -----
    2. 生成されたキーの所有者とパーミッションを設定します。
      [root@server1 myCA]# chown root.apache /etc/pki/myCA/private/server.key
      [root@server1 myCA]# chmod 0440 /etc/pki/myCA/private/server.key
    3. マルチホーム設定ファイルを使用して、証明書に署名します。
      [root@server1 myCA]# openssl ca -config openssl.my_multihome.cnf -keyfile ./private/myca.key -cert ./certs/myca.crt -policy policy_anything -out certs/server.crt -infiles server.csr
    4. 証明書が有効であることを確認します。
      [root@server1 myCA]# openssl verify -purpose sslserver -CAfile /etc/pki/myCA/certs/myca.crt /etc/pki/myCA/certs/server.crt
  3. 新規証明書を使って Subscription Asset Manager web サーバーをセットアップします。
    1. 証明書を Subscription Asset Manager 証明書ディレクトリーにコピーします。
      [root@server1 myCA]# /etc/pki/myCA/certs/server.crt /etc/pki/katello/
      [root@server1 myCA]# /etc/pki/myCA/certs/myca.crt /etc/pki/katello/
      [root@server1 myCA]# /etc/pki/myCA/certs/server.key /etc/pki/katello/
    2. web サーバー設定ファイルが新規証明書をポイントするように編集します。
      [root@server1 myCA]# vim /etc/httpd/conf.d/katello.conf 
            
      SSLCaCertificateFile /etc/candlepin/certs/candlepin-ca.crt
      SSLCertificateFile /etc/pki/katello/server.crt
      SSLCertificateKeyFile /etc/pki/katello/server.key
    3. Subscription Asset Manager サービスを再起動して、新規証明書の情報を読み込みます。
      [root@server1 myCA]# service tomcat6 restart && service pulp-server restart && service katello restart && service katello-jobs restart
    4. CA 証明書を web サーバーの pub/ ディレクトリーにコピーし、クライアントがダウンロードできるようにします。
      [root@server1 myCA]# cp /etc/pki/myCA/certs/myca.crt /var/www/html/pub/
    5. CA 証明書を SAM web UI へのアクセスに使用するブラウザーにインポートします。
  4. 新規証明書 RPM を使ってクライアント上で設定および証明書をインストールするようセットアップします。
    1. pub ディレクトリーを開きます。
      [root@server1 myCA]# cd /var/www/html/pub
    2. Red Hat Subscription Manager 設定ファイルが新規作成の CA を使用するよう編集します。
      [root@server1 pub]# sed 's/scandlepin-local/smyca/' ~/ssl-build/rhsm-katello-reconfigure > ~/ssl-build/rhsm-katello-reconfigure-myca
    3. 新規証明書と更新済み rhsm.conf ファイルを使って新規クライアント RPM を生成します。
      [root@server1 pub]# SERVER_NAMES="server1 server2 server3"
      [root@server1 pub]# for KATELLO_SERVER in $SERVER_NAMES; do sed "s/KATELLO_SERVER=.*/KATELLO_SERVER=${KATELLO_SERVER}/" ~/ssl-build/rhsm-katello-reconfigure-myca > ~/ssl-build/rhsm-katello-reconfigure-myca-${KATELLO_SERVER};/usr/share/katello/certs/gen-rpm.sh --name "candlepin-cert-consumer-${KATELLO_SERVER}" --version 1.0 --release 2 --packager None --vendor None --group 'Applications/System' --summary "Subscription-manager consumer certificate for Katello instance ${KATELLO_SERVER}" --description 'Consumer certificate and post installation script that configures rhsm.' --post /root/ssl-build/rhsm-katello-reconfigure-myca-${KATELLO_SERVER} /etc/rhsm/ca/candlepin-local.pem:666=/root/ssl-build/candlepin-cert.crt /etc/rhsm/ca/myca.pem:666=/etc/pki/myCA/certs/myca.crt && /sbin/restorecon ./*rpm; done
      これでマルチホーム設定内の各インターフェイスに新規 RPM が作成されます。
      ./candlepin-cert-consumer-server1.noarch.rpm
      ./candlepin-cert-consumer-server1.src.rpm
      ./candlepin-cert-consumer-server2.noarch.rpm
      ./candlepin-cert-consumer-server2.src.rpm
      ./candlepin-cert-consumer-server3.noarch.rpm
      ./candlepin-cert-consumer-server3.src.rpm
  5. すべての Subscription Asset Manager クライアント上の各インターフェイスに更新済み RPM をインストールします。
    [root@sam-client ~]# yum -y install http://server1/pub/candlepin-cert-consumer-server1.noarch.rpm
    [root@sam-client ~]# yum -y install http://server2/pub/candlepin-cert-consumer-server2.noarch.rpm
    [root@sam-client ~]# yum -y install http://server3/pub/candlepin-cert-consumer-server3.noarch.rpm