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

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

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

新しい Certificate System インスタンスを設定する前に、現在の認証局 (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 インスタンス名です。以下に例を示します。
    • CS_database_name 以前に取得した CA データベースの名前です。
  3. エクスポートされたファイルを含むディレクトリーを新しいサーバーにコピーします。以下に例を示します。
    # scp -r /tmp/ds_bak/ new_server:/tmp/