5.7. 一括発行の実行

管理者が多数の証明書を同時に送信および生成する必要がある場合があります。Certificate System で提供されるツールの組み合わせを使用して、証明書要求を含むファイルを CA に送信できます。この手順例では、リクエストを生成する PKCS10Client コマンドと、CA に要求を送信する sslget コマンドを使用します。
  1. このプロセスはスクリプト化されているため、CA (ホスト、ポート) と、認証に使用されるアイテム (エージェント証明書と証明書データベースおよびパスワード) を識別するために複数の変数を設定する必要があります。たとえば、ターミナルでエクスポートして、セッションに以下の変数を設定します。
    export d=/var/tmp/testDir
    export p=password
    export f=/var/tmp/server.csr.txt
    export nick="CA agent cert"
    export cahost=1.2.3.4
    export caport=8443
    注記
    ローカルシステムには、エージェントの証明書を持つ有効なセキュリティーデータベースが必要です。データベースを設定するには、以下を行います。
    1. ブラウザーからエージェントユーザー証明書および鍵をエクスポートまたはダウンロードし、agent.p12 などのファイルに保存します。
    2. 必要に応じて、セキュリティーデータベース用の新しいディレクトリーを作成します。
      mkdir ${d}
    3. 必要な場合は、新規セキュリティーデータベースを作成します。
      certutil -N -d ${d}
    4. Certificate System インスタンスを停止します。
      systemctl stop pki-tomcatd@instance_name.service
    5. pk12util を使用して証明書をインポートします。
      # pk12util -i /tmp/agent.p12 -d ${d} -W p12filepassword
      手順に成功すると、コマンドは以下の出力を出力します。
      pk12util: PKCS12 IMPORT SUCCESSFUL
    6. Certificate System インスタンスを起動します。
      systemctl start pki-tomcatd@instance_name.service
  2. 2 つの追加の変数を設定する必要があります。要求の処理に使用される CA プロファイルを識別する変数、およびプロファイルフォームの情報を提供するための post ステートメントの送信に使用される変数。
    export post="cert_request_type=pkcs10&xmlOutput=true&profileId=caAgentServerCert&cert_request="
    export url="/ca/ee/ca/profileSubmitSSLClient"
    注記
    この例では、証明書要求を caAgentServerCert プロファイルに送信します (ただし、post ステートメントの profileId 要素で識別されます)。カスタムプロファイルを含む任意の証明書プロファイルを使用できます。
  3. 変数設定をテストします。
    echo ${d} ${p} ${f} ${nick} ${cahost} ${caport} ${post} ${url}
  4. (この例では) PKCS10Client を使用して証明書要求を生成します。
    time for i in {1..10}; do /usr/bin/PKCS10Client -d ${d} -p ${p} -o ${f}.${i} -s "cn=testms${i}.example.com"; cat ${f}.${i} >> ${f}; done
    
    perl -pi -e 's/\r\n//;s/\+/%2B/g;s/\//%2F/g' ${f}
    
    wc -l ${f}
  5. CA のステータスとトランザクションログを確認します。
    /etc/init.d/pki-ca status
    
    tail -f /var/log/pki-ca/transactions&
  6. 手順 4 で作成した一括証明書要求ファイルを、sslget を使用する CA プロファイルインターフェイスに送信します。以下に例を示します。
    cat ${f} | while read thisreq; do /usr/bin/sslget -n "${nick}" -p ${p} -d ${d} -e ${post}${thisreq} -v -r ${url} ${cahost}:${caport}; done