このドキュメントで説明されているソフトウェアはサポートされていないか、拡張サポートが提供されています。
現在サポートされているリリースにアップグレードすることをお薦めします。

第3章 SpacewalkサーバーまたはSpacewalkプロキシでのSSL証明書の置き換え

SpacewalkサーバーまたはSpacewalkプロキシをインストールするときは、Spacewalkクライアントで使用できる自己署名SSL証明書を作成します。 この項では、自己署名証明書または期限切れのCA署名証明書を、認証局(CA)によって署名された証明書に置き換える方法について説明します。

個々のSpacewalkサーバーまたはSpacewalkプロキシの証明書、またはワイルドカード証明書がカバーするドメイン内のすべてのSpacewalkサーバーまたはSpacewalkプロキシのワイルドカード証明書を使用できます。

SpacewalkサーバーまたはSpacewalkプロキシ上の既存の証明書を置き換えるには:

  1. システムの既存のSSL構成のバックアップを作成します。次に例を示します:

    # tar -cvf SSLconfig.tar \ 
      /etc/httpd/conf/ssl.* \
      /etc/pki/spacewalk/jabberd/server.pem \
      /root/ssl-build \
      /var/www/html/pub 
  2. CAからサーバー証明書を取得し、この証明書をシステムのSSLビルド階層にインストールします:

    1. 証明書署名リクエスト(CSR)ファイル/root/ssl-build/swksvr/ server.csrをCAに送信します。

      swksvrは、ドメイン名を削除して既存のSSL構成を設定するために使用したSpacewalkサーバーまたはSpacewalkプロキシの名前です。

      リクエストを検証した後、CAは署名されたサーバー証明書ファイルを返します。

    2. 署名されたサーバー証明書ファイルのバックアップを作成します。

    3. 必要に応じて、証明書をPEM形式に変換します。

      PEM形式の証明書ファイルは、開始マーカーと終了マーカーの間にbase64エンコードされた証明書項を含むテキスト・ファイルです。たとえば、次のようになります:

      -----BEGIN CERTIFICATE-----
      MIIF7DCCBNSgAwIBAgIQbsx6pacDIAm4zrz06VLUkTANBgkqhkiG9w0BAQUFADCB
      ...
      Rs/iGAZeqa6ogZpHFt4MKGwlJ7net4RYxh84HqTEy2Y=
      -----END CERTIFICATE-----

      PEM形式の証明書ファイルのファイル拡張子は、通常.crtまたは.pemです。 ただし、バイナリDER形式の証明書ファイルには、.crt拡張子が付いていることもあります。

      DER形式の証明書ファイルは、通常は.cerまたは.derというファイル拡張子を持つバイナリ・ファイルですが、拡張子.certまたは.crtも持つことができます。

      次のコマンドを使用して、証明書ファイルがDER形式であるかどうかをテストできます:

      # openssl x509 -inform der -text -in certificate_file
    4. 証明書ファイルがDER形式の場合は、ファイルをPEM形式の証明書ファイルに変換します。次に例を示します:

      # openssl x509 -inform der -in server.cer -out server.pem
    5. UNIXまたはLinuxシステムでPEM形式の証明書ファイルが生成されなかった場合は、^Mキャリッジ・リターン文字が含まれている可能性があります。 これらの文字を削除するには、次のいずれかのコマンドを使用できます:

      # sed -i -e 's/\r//' server.pem
      -or-
      # dos2unix server.pem

      dos2unixコマンドは、dos2unixパッケージで使用できます。

    6. PEM形式のサーバー証明書ファイルを/root/ssl-build/swksvr/ server.crtにコピーして、元のファイルを上書きします。

      # cp server.pem /root/ssl-build/swksvr/server.crt
  3. CA公開証明書を/root/ssl-buildディレクトリにファイルRHN-ORG-TRUSTED-SSL-CERTとして追加し、元のファイルを上書きします:

    • 使用可能な場合は、サーバー証明書を発行したCAからCAチェーン証明書を取得します。 この証明書ファイルを/root/ssl-build/RHN-ORG-TRUSTED-SSL-CERTにコピーします。例:

      # cp ca_chain.pem /root/ssl-build/RHN-ORG-TRUSTED-SSL-CERT
    • CAチェーン証明書が発行CAから入手できない場合は、CAチェーン証明書を自分で作成します:

      1. 発行CAからルートCA公開証明書と中間CA公開証明書を取得します。

      2. サーバー証明書を発行したCAのパブリック証明書ファイルで始まるCAパブリック証明書ファイルのチェーンを、ルートCAのパブリック証明書ファイルに/root/ssl-build/RHN-ORG-TRUSTED-SSL-CERTに連結します。たとえば、次のようになります:

        # cat intermediate_ca.pem root_ca.pem > /root/ssl-build/RHN-ORG-TRUSTED-SSL-CERT

        この例では、intermediate_ca.pemはサーバー証明書に署名した中間CAのパブリック証明書ファイルで、root_ca.pemは中間証明書に署名したルートCAのパブリック証明書ファイルです。

        CAチェーン証明書ファイル内のパブリック証明書の順序は重要です。 CAチェーン証明書は、コンポーネント証明書が正しい順序でないと機能しません。

    • ルートCAがサーバー証明書に直接署名した場合(現在はそうは考えられません)、ルートCAの公開証明書だけが必要です。 ルートCA公開証明書ファイルを/root/ssl-build/RHN-ORG-TRUSTED-SSL-CERTにコピーします。例:

      # cp root_ca.pem /root/ssl-build/RHN-ORG-TRUSTED-SSL-CERT
  4. 次のコマンドを使用して、サーバー証明書をCA公開証明書に対して検証します:

    # openssl verify -CAfile /root/ssl-build/RHN-ORG-TRUSTED-SSL-CERT \
      /root/ssl-build/swksvr/server.crt
    /root/ssl-build/swksvr/server.crt: OK

    このコマンドでエラーが返された場合は、RHN-ORG-TRUSTED-SSL-CERTが正しく作成され、サーバーに構成された日時が正しいことを確認してください。

  5. CAパブリック証明書をSpacewalkデータベースに格納し、プロビジョニング・クライアント・システムで使用できるようにします。

    # rhn-ssl-dbstore -v --ca-cert=/root/ssl-build/RHN-ORG-TRUSTED-SSL-CERT
    Public CA SSL certificate:  /root/ssl-build/RHN-ORG-TRUSTED-SSL-CERT

    コマンドがエラーを返す場合は、-vvvなどのより高いレベルのデバッグを指定してコマンドを再入力し、問題に関する詳細情報を収集します。

  6. WebサーバーSSLパッケージを生成してインストールします:

    1. WebサーバーSSLパッケージを生成します。

      # rhn-ssl-tool --gen-server --rpm-only --dir /root/ssl-build
      
      ...working...
      
      Generating web server's SSL key pair/set RPM:
          /root/ssl-build/swksvr/rhn-org-httpd-ssl-key-pair-swksvr-1.0-rev.src.rpm
          /root/ssl-build/swksvr/rhn-org-httpd-ssl-key-pair-swksvr-1.0-rev.noarch.rpm
      
      The most current Spacewalk Proxy Server installation process against RHN hosted
      requires the upload of an SSL tar archive that contains the CA SSL public
      certificate and the web server's key set.
      
      Generating the web server's SSL key set and CA SSL public certificate archive:
          /root/ssl-build/swksvr/rhn-org-httpd-ssl-archive-swksvr-1.0-rev.tar
      
      Deploy the server's SSL key pair/set RPM:
          (NOTE: the Red Hat Satellite or Proxy installers may do this step for you.)
          The "noarch" RPM needs to be deployed to the machine working as a
          web server, or Red Hat Satellite, or Spacewalk Proxy.
          Presumably 'swksvr.mydom.com'.

      rpmを使用して、パッケージがインストールするファイルをリストすることができます。

      # rpm -qlp /root/ssl-build/swksvr/rhn-org-httpd-ssl-key-pair-swksvr-1.0-rev.src.rpm
      rhn-org-httpd-ssl-key-pair-swksvr-1.0.tar.gz
      rhn-org-httpd-ssl-key-pair-swksvr.spec
      # rpm -qlp /root/ssl-build/swksvr/rhn-org-httpd-ssl-key-pair-swksvr-1.0-rev.noarch.rpm
      /etc/httpd/conf/ssl.crt/server.crt
      /etc/httpd/conf/ssl.csr/server.csr
      /etc/httpd/conf/ssl.key/server.key
      /etc/pki/spacewalk/jabberd/server.pem
    2. WebサーバーSSL noarchパッケージをインストールします。

      # rpm -Uhv /root/ssl-build/swksvr/rhn-org-httpd-ssl-key-pair-swksvr-1.0-rev.noarch.rpm
      Preparing...                ########################################### [100%]
         1:rhn-org-httpd-ssl-key-p########################################### [100%]
  7. パブリックCA証明書パッケージを生成し、パッケージとCAパブリック証明書ファイルの両方をクライアントに使用可能にします:

    1. パブリックCA証明書パッケージを生成します。

      # rhn-ssl-tool --gen-ca --dir=/root/ssl-build --rpm-only
      
      ...working...
      Generating CA public certificate RPM:
          /root/ssl-build/rhn-org-trusted-ssl-cert-1.0-rev.src.rpm
          /root/ssl-build/rhn-org-trusted-ssl-cert-1.0-rev.noarch.rpm
      
      Make the public CA certificate publicly available:
          (NOTE: the Red Hat Satellite or Proxy installers may do this step for you.)
          The "noarch" RPM and raw CA certificate can be made publicly accessible
          by copying it to the /var/www/html/pub directory of your Red Hat Satellite or
          Proxy server.

      rpmを使用して、パッケージがインストールするファイルをリストすることができます。

      # rpm -qlp /root/ssl-build/rhn-org-trusted-ssl-cert-1.0-rev.src.rpm
      rhn-org-trusted-ssl-cert-1.0.tar.gz
      rhn-org-trusted-ssl-cert.spec
      # rpm -qlp /root/ssl-build/rhn-org-trusted-ssl-cert-1.0-rev.noarch.rpm 
      /usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT
    2. SpacewalkサーバーまたはSpacewalkプロキシもクライアントとして構成されている場合は、パブリックCA証明書noarchパッケージをこのシステムにインストールします。

      # rpm -Uhv /root/ssl-build/pub/rhn-org-trusted-ssl-cert-1.0-rev.noarch.rpm
      Preparing...                ########################################### [100%]
         1:rhn-org-trusted-ssl-cer########################################### [100%]

      パブリックCA証明書は/usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERTとしてインストールされます。

    3. クライアントからアクセスできるように、rhn-org-trusted-ssl-cert-1.0-rev.noarch.rpmパッケージとCA公開証明書ファイルを/var/www/html/pubにコピーします。

      # cp /root/ssl-build/rhn-org-trusted-ssl-cert-1.0-rev.noarch.rpm /var/www/html/pub
      # cp /root/ssl-build/RHN-ORG-TRUSTED-SSL-CERT /var/www/html/pub

      更新されたRHN-ORG-TRUSTED-SSL-CERT/var/www/html/pubにコピーしないと、osa-dispatcherサービスが開始されません。

      RHN-ORG-TRUSTED-SSL-CERTのインストールされたコピーが同一であることを確認するには、ダイジェスト値を比較します:

      # sha1sum /root/ssl-build/RHN-ORG-TRUSTED-SSL-CERT \
        /usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT \
        /var/www/html/pub/RHN-ORG-TRUSTED-SSL-CERT
      74380a372bfa55d8ab7579bf01502c874b8aae84
                            /root/ssl-build/RHN-ORG-TRUSTED-SSL-CERT
      74380a372bfa55d8ab7579bf01502c874b8aae84
                            /usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT
      74380a372bfa55d8ab7579bf01502c874b8aae84
                            /var/www/html/pub/RHN-ORG-TRUSTED-SSL-CERT

      rhn-org-trusted-ssl-cert-1.0-rev.src.rpmパッケージは、通常、クライアントが使用することはできません。

  8. Spacewalkサーバーで、Spacewalkサービスを停止し、jabberdデータベースを消去して、Spacewalkを再始動します。

    # spacewalk-service stop
    # rm -Rf /var/lib/jabberd/db/*
    # spacewalk-service start

    Spacewalkプロキシで、Spacewalkプロキシ・サービスを再起動します:

    # rhn-proxy restart
  9. 残りのSpacewalkクライアントで、パブリックCA証明書パッケージをダウンロードしてインストールします。次に例を示します:

    # wget https://swksvr.mydom.com/pub/rhn-org-trusted-ssl-cert-1.0-rev.noarch.rpm
    --2015-06-05 15:15:44--  https://swksvr.mydom.com/pub/rhn-org-trusted-ssl-cert-1.0-rev.noarch.rpm
    Resolving swksvr.mydom.com... 192.168.1.3
    Connecting to swksvr.mydom.com|192.168.1.3|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 4840 (4.7K) [application/x-rpm]
    Saving to: “rhn-org-trusted-ssl-cert-1.0-2.noarch.rpm”
    
    100%[======================================>] 4,840       --.-K/s   in 0s      
    
    2015-06-05 15:15:44 (57.5 MB/s) - “rhn-org-trusted-ssl-cert-1.0-rev.noarch.rpm” saved [4840/4840]
    
    # rpm -Uhv /root/ssl-build/pub/rhn-org-trusted-ssl-cert-1.0-rev.noarch.rpm
    Preparing...                ########################################### [100%]
       1:rhn-org-trusted-ssl-cer########################################### [100%]

    その後、サーバー証明書が失効または期限切れになったためにサーバー証明書を置き換えた場合は、サーバー証明書に署名するCAを変更しない限り、クライアント上のパブリックCA証明書を更新する必要はありません。