第22章 Certificate System 8 から 9 への移行

Red Hat Certificate System は、8.2 から 9 などの古いメジャーバージョンからのインプレースアップグレードをサポートしません。メジャーバージョンのアップグレードの場合は、古いインスタンスを移行する必要があります。また、同じ手順を使用して、テストおよびデバッグの目的で、実稼働環境のコピーを作成できます。
証明書システムの移行には、以下の手順が必要です。

22.1. 以前のシステムからのデータのエクスポート

新しい証明書システムインスタンスを設定する前に、現在の認証局(CA)のデータをエクスポートします。
Certificate System インスタンスを実行するホストで以下を行います。
  1. エクスポートするファイルのディレクトリーを作成します。以下に例を示します。
    # mkdir -m 770 /tmp/cs_bak/
  2. 署名証明書とキーをエクスポートします。
    • ハードウェアセキュリティーモジュール(HSM)を使用する場合:
      1. CA 署名証明書のニックネームを一覧表示します。以下に例を示します。
        # grep ca.cert.signing.nickname /etc/pki/instance_name/ca/CS.cfg
        ca.signing.nickname=<nickname>
      2. CA 証明書をエクスポートします。
        # certutil -L -d /var/lib/pki/instance_name/alias/ \
             -n <nickname> \
             -a > /tmp/cs_bak/ca_signing.crt
        キーは HSM に保管され、新規インスタンスで利用可能でなければなりません。
    • HSM を使用しない場合:
      1. 設定ファイルで、CA Network Security Service(NSS)データベースを保護するパスワードを見つけ、これをファイルに書き込みます。
        # grep "internal=" /var/lib/pki/instance_name/conf/password.conf | \
             awk -F= '{print $2;}' > /tmp/cs_bak/nss_password.txt
      2. 次のステップで使用するパスワードでファイルを作成します。以下に例を示します。
        # echo Secret123 > /tmp/cs_bak/pkcs12_password.txt
      3. 署名証明書とキーをエクスポートします。
        # PKCS12Export -d /var/lib/instance_name/alias/ \
             -p /tmp/cs_bak/nss_password.txt \
             -w /tmp/cs_bak/pkcs12_password.txt \
             -o /tmp/cs_bak/ca.p12
  3. 証明書署名要求(CSR)をエクスポートします。
    # echo "-----BEGIN NEW CERTIFICATE REQUEST-----" > /tmp/cs_bak/ca_signing.csr
    
    # sed -n "/^ca.signing.certreq=/ s/^[^=]*=// p" /etc/pki/instance_name/ca/CS.cfg \
         >> /tmp/cs_bak/ca_signing.csr
    
    # echo "-----END NEW CERTIFICATE REQUEST-----" >> /tmp/cs_bak/ca_signing.csr
    
  4. CA が中間 CA の場合は、NSS データベースからルート CA または証明書チェーンを抽出します。
    # certutil -L -d /var/lib/pki/instance_name/alias/ -n "root_CA_nickname" \
         -a > /tmp/cs_bak/ca_rootca_signing.crt
  5. エクスポートしたファイルが含まれるディレクトリーを新しいサーバーにコピーします。以下に例を示します。
    # scp -r /tmp/cs_bak/ new_server:/tmp/
  6. Directory Server で CA データベースの名前を検索します。
    # grep internaldb.database /etc/pki/instance_name/ca/CS.cfg \
    			internaldb.database=<CS_database_name>
    この名前は、後でデータベースをエクスポートするために必要です。
Directory Server インスタンスを実行するホストで以下を行います。
  1. エクスポートするファイルのディレクトリーを作成し、Directory Server ユーザーに書き込み権限を付与します。以下に例を示します。
    # mkdir -m 770 /tmp/ds_bak/
    # chown root:dirsrv /tmp/ds_bak/
    注記
    db2ldif コマンドは Directory Server ユーザー(例: dirsrv)で実行されます。そのため、このユーザーが宛先ディレクトリーを書き込み可能にする必要があります。
  2. Directory Server データベースをエクスポートします。
    # db2ldif -Z<DS_instance_name> -n <CS_database_name> -a /tmp/ds_bak/old_ca.ldif
    この例では、以下のようになります。
    • DS_instance_name CA が使用する Directory Server インスタンス名たとえば、slapd-host_name のようになります。
    • CS_database_name 以前に取得した CA データベースの名前です。
  3. エクスポートしたファイルが含まれるディレクトリーを新しいサーバーにコピーします。以下に例を示します。
    # scp -r /tmp/ds_bak/ new_server:/tmp/