5.2. 証明書署名要求の作成


従来は、証明書要求 (CSR) の生成には以下の方法が使用されます。

  • コマンドラインユーティリティーを使用した CSR の生成
  • 補助ブラウザー内での CSR の生成
  • サーバーのインストーラーなど、アプリケーション内での CSR の生成

これらの方法の一部は CSR の直接送信をサポートしますが、含まれない場合があります。

Red Hat Certificate System 9.7 以降、サーバー側のキー生成がサポートされ、Firefox v69 以降や Chrome などの新しいバージョンのブラウザー内でのキー生成サポートの削除によってもたらされる不便を克服します。このため、このセクションでは、キー生成のブラウザーサポートを説明しません。

通常、アプリケーションから生成された CSR は PKCS#10 の形式を取ります。それらが正しく生成されると、RHCS によりサポートされるはずです。

次のサブセクションでは、Red Hat Certificate System でサポートされている次の方法を説明します。

  • コマンドラインユーティリティー
  • サーバー側の鍵生成

5.2.1. コマンドラインユーティリティーを使用した CSR の生成

Red Hat Certificate System は、以下のユーティリティーを使用した CSR の作成をサポートします。

  • certutil: PKCS #10 要求の作成をサポートします。
  • PKCS10Client: PKCS #10 要求の作成をサポートします。
  • CRMFPopClient: CRMF 要求の作成をサポートします。
  • pki client-cert-request: PKCS#10 および CRMF リクエストの両方をサポートします。

次のセクションでは、これらのユーティリティーを機能豊富な登録プロファイルフレームワークで使用する方法の例をいくつか示します。

5.2.1.1. certutil で CSR を作成する

このセクションでは、certutil ユーティリティーを使用して CSR を作成する方法を説明します。

certutil の使用の詳細は、以下を参照してください。

  • certutil(1) の man ページ
  • certutil --help コマンドの出力
5.2.1.1.1. certutil で EC キーを使用する CSR を作成する

以下の手順は、certutil ユーティリティーを使用して Elliptic Curve(EC) キーペアと CSR を作成する方法を示しています。

  1. 証明書が要求されるユーザーまたはエンティティーの証明書データベースディレクトリーに移動します。以下に例を示します。

    Copy to Clipboard Toggle word wrap
    $ cd /user_or_entity_database_directory/
  2. バイナリー CSR を作成し、これを /user_or_entity_database_directory/request.csr ファイルに保存します。

    Copy to Clipboard Toggle word wrap
    $ certutil -d . -R -k ec -q nistp256 -s "CN=subject_name" -o /user_or_entity_database_directory/request-bin.csr

    プロンプトが表示されたら、必要な NSS データベースのパスワードを入力します。

    パラメーターの詳細は、certutil(1) の man ページを参照してください。

  3. 作成したバイナリー形式の CSR を PEM 形式に変換します。

    Copy to Clipboard Toggle word wrap
    $ BtoA /user_or_entity_database_directory/request-bin.csr /user_or_entity_database_directory/request.csr
  4. 必要に応じて、CSR ファイルが正しいことを確認します。

    Copy to Clipboard Toggle word wrap
    $ cat /user_or_entity_database_directory/request.csr
    
    		MIICbTCCAVUCAQAwKDEQMA4GA1UEChMHRXhhbXBsZTEUMBIGA1UEAxMLZXhhbXBs
    		...

    これは、PKCS#10 PEM 証明書要求です。

  5. 次の手順については、「CMC 登録プロセス」 を参照してください。ただし、証明書要求の作成に関する手順はスキップしてください。
5.2.1.1.2. certutil でユーザー定義拡張を使用する CSR を作成する

以下の手順は、certutil ユーティリティーを使用してユーザー定義の拡張で CSR を作成する方法を示しています。

登録要求は、CA で定義された登録プロファイルにより制限されることに注意してください。例B.3「CSR 内の複数の User Supplied 拡張」 を参照してください。

  1. 証明書が要求されるユーザーまたはエンティティーの証明書データベースディレクトリーに移動します。以下に例を示します。

    Copy to Clipboard Toggle word wrap
    $ cd /user_or_entity_database_directory/
  2. ユーザー定義の Extended Key Usage 拡張とユーザー定義の Key Usage 拡張で CSR を作成し、これを /user_or_entity_database_directory/request.csr ファイルに保存します。

    Copy to Clipboard Toggle word wrap
    $ certutil -d . -R -k rsa -g 1024 -s "CN=subject_name" --keyUsage keyEncipherment,dataEncipherment,critical --extKeyUsage timeStamp,msTrustListSign,critical -a -o /user_or_entity_database_directory/request.csr

    プロンプトが表示されたら、必要な NSS データベースのパスワードを入力します。

    パラメーターの詳細は、certutil(1) の man ページを参照してください。

  3. 必要に応じて、CSR ファイルが正しいことを確認します。

    Copy to Clipboard Toggle word wrap
    $ cat /user_or_entity_database_directory/request.csr
    		Certificate request generated by Netscape certutil
    		Phone: (not specified)
    
    		Common Name: user 4-2-1-2
    		Email: (not specified)
    		Organization: (not specified)
    		State: (not specified)
    		Country: (not specified)

    これは、PKCS#10 PEM 証明書要求です。

次の手順については、「CMC 登録プロセス」 を参照してください。ただし、証明書要求の作成に関する手順はスキップしてください。

注記

CSR からヘッダー情報を削除します。

5.2.1.2. PKCS10Client を使用して CSR を作成する

このセクションでは、PKCS10Client ユーティリティーを使用して CSR を作成する方法を説明します。

PKCS10Client の使用に関する詳細は、以下を参照してください。

  • PKCS10Client(1) の man ページ
  • PKCS10Client --help コマンドの出力
5.2.1.2.1. PKCS10Client を使用して CSR を作成する

以下の手順では、PKCS10Client ユーティリティーを使用して Elliptic Curve (EC) キーペアと CSR を作成する方法を説明します。

  1. 証明書が要求されるユーザーまたはエンティティーの証明書データベースディレクトリーに移動します。以下に例を示します。

    Copy to Clipboard Toggle word wrap
    $ cd /user_or_entity_database_directory/
  2. CSR を作成し、これを /user_or_entity_database_directory/example.csr ファイルに保存します。

    Copy to Clipboard Toggle word wrap
    $ PKCS10Client -d . -p NSS_password -a ec -c nistp256 -o /user_or_entity_database_directory/example.csr -n "CN=subject_name"

    パラメーターの詳細は、PKCS10Client(1) の man ページを参照してください。

  3. 必要に応じて、CSR ファイルが正しいことを確認します。

    Copy to Clipboard Toggle word wrap
    $ cat /user_or_entity_database_directory/example.csr
    		-----BEGIN CERTIFICATE REQUEST-----
    		MIICzzCCAbcCAQAwgYkx
    		...
    		-----END CERTIFICATE REQUEST-----
5.2.1.2.2. PKCS10Client を使用して SharedSecret ベースの CMC の CSR を作成する

以下の手順では、PKCS10Client ユーティリティーを使用して、SharedSecret ベースの CMC 用の RSA キーペアと CSR を作成する方法を説明します。これは、デフォルトでは caFullCMCSharedTokenCert プロファイルと caECFullCMCSharedTokenCert プロファイルで処理される CMC 共有シークレット認証方法にのみ使用します。

  1. 証明書が要求されるユーザーまたはエンティティーの証明書データベースディレクトリーに移動します。以下に例を示します。

    Copy to Clipboard Toggle word wrap
    $ cd /user_or_entity_database_directory/
  2. CSR を作成し、これを /user_or_entity_database_directory/example.csr ファイルに保存します。

    Copy to Clipboard Toggle word wrap
    $ PKCS10Client -d . -p NSS_password -o /user_or_entity_database_directory/example.csr -y true -n "CN=subject_name"

    パラメーターの詳細は、PKCS10Client(1) の man ページを参照してください。

  3. 必要に応じて、CSR ファイルが正しいことを確認します。

    Copy to Clipboard Toggle word wrap
    $ cat /user_or_entity_database_directory/example.csr
    		-----BEGIN CERTIFICATE REQUEST-----
    		MIICzzCCAbcCAQAwgYkx
    		...
    		-----END CERTIFICATE REQUEST-----

5.2.1.3. CRMFPopClient を使用して CSR を作成する

Certificate Request Message Format (CRMF) は、CMC で受け入れられている CSR 形式であり、主要なアーカイブ情報を要求に安全に埋め込むことができます。

このセクションでは、CRMFPopClient ユーティリティーを使用して CSR を作成する方法を説明します。

CRMFPopClient の使用に関する詳細は、CRMFPopClient(1) man ページを参照してください。

5.2.1.3.1. CRMFPopClient でキーアーカイブを使用して CSR を作成する

以下の手順では、CRMFPopClient ユーティリティーを使用して RSA キーペアと、キーアーカイブオプションを使用する CSR を作成する方法を説明します。

  1. 証明書が要求されるユーザーまたはエンティティーの証明書データベースディレクトリーに移動します。以下に例を示します。

    Copy to Clipboard Toggle word wrap
    $ cd /user_or_entity_database_directory/
  2. KRA トランスポート証明書を取得します。

    Copy to Clipboard Toggle word wrap
    $ pki ca-cert-find --name "DRM Transport Certificate"
    		---------------
    		1 entries found
    		---------------
    			Serial Number: 0x7
    			Subject DN: CN=DRM Transport Certificate,O=EXAMPLE
    			Status: VALID
    			Type: X.509 version 3
    			Key A    lgorithm: PKCS #1 RSA with 2048-bit key
    			Not Valid Before: Thu Oct 22 18:26:11 CEST 2015
    			Not Valid After: Wed Oct 11 18:26:11 CEST 2017
    			Issued On: Thu Oct 22 18:26:11 CEST 2015
    			Issued By: caadmin
    		----------------------------
    		Number of entries returned 1
  3. KRA トランスポート証明書をエクスポートします。

    Copy to Clipboard Toggle word wrap
    $ pki ca-cert-show 0x7 --output kra.transport
  4. CSR を作成し、これを /user_or_entity_database_directory/example.csr ファイルに保存します。

    Copy to Clipboard Toggle word wrap
    $ CRMFPopClient -d /home/example-user/certs_db -p password -n "CN=user_name" -q POP_SUCCESS -b kra.transport -w "AES KeyWrap/Wrapped" -v -o ~/user_name.req -oaep

    Elliptic Curve (EC) キーペアと CSR を作成するには、-a ec -t false オプションをコマンドに渡します。

    パラメーターの詳細は、CRMFPopClient(1) man ページを参照してください。

    注記

    サーバーが設定されている場合は -oaep を使用します。最新の HSM が AES/CBC/PKCS5Padding よりも AES KeyWrap/WrapWrapped を優先する場合は、AES KeyWrap/WrapWrapped を使用します。

  5. 必要に応じて、CSR ファイルが正しいことを確認します。

    Copy to Clipboard Toggle word wrap
    $ cat /user_or_entity_database_directory/example.csr
    		-----BEGIN CERTIFICATE REQUEST-----
    		MIICzzCCAbcCAQAwgYkx
    		...
    		-----END CERTIFICATE REQUEST-----
5.2.1.3.2. CRMFPopClient で SharedSecret ベースの CMC の CSR を作成する

以下の手順では、CRMFPopClient ユーティリティーを使用して、SharedSecret ベースの CMC 用の RSA キーペアと CSR を作成する方法を説明します。これは、デフォルトでは caFullCMCSharedTokenCert プロファイルと caECFullCMCSharedTokenCert プロファイルで処理される CMC 共有シークレット認証方法にのみ使用します。

  1. 証明書が要求されるユーザーまたはエンティティーの証明書データベースディレクトリーに移動します。以下に例を示します。

    Copy to Clipboard Toggle word wrap
    $ cd /user_or_entity_database_directory/
  2. KRA トランスポート証明書を取得します。

    Copy to Clipboard Toggle word wrap
    $ pki ca-cert-find --name "DRM Transport Certificate"
    		---------------
    		1 entries found
    		---------------
    			Serial Number: 0x7
    			Subject DN: CN=DRM Transport Certificate,O=EXAMPLE
    			Status: VALID
    			Type: X.509 version 3
    			Key A    lgorithm: PKCS #1 RSA with 2048-bit key
    			Not Valid Before: Thu Oct 22 18:26:11 CEST 2015
    			Not Valid After: Wed Oct 11 18:26:11 CEST 2017
    			Issued On: Thu Oct 22 18:26:11 CEST 2015
    			Issued By: caadmin
    		----------------------------
    		Number of entries returned 1
  3. KRA トランスポート証明書をエクスポートします。

    Copy to Clipboard Toggle word wrap
    $ pki ca-cert-show 0x7 --output kra.transport
  4. CSR を作成し、これを /user_or_entity_database_directory/example.csr ファイルに保存します。

    Copy to Clipboard Toggle word wrap
    $ CRMFPopClient -d . -p password -n "cn=subject_name" -q POP_SUCCESS -b kra.transport -w "AES/CBC/PKCS5Padding" -y -v -o /user_or_entity_database_directory/example.csr

    EC キーペアと CSR を作成するには、コマンドに -a ec -t false オプションを渡します。

    パラメーターの詳細は、CRMFPopClient --help コマンドの出力を参照してください。

  5. 必要に応じて、CSR ファイルが正しいことを確認します。

    Copy to Clipboard Toggle word wrap
    $ cat /user_or_entity_database_directory/example.csr
    		-----BEGIN CERTIFICATE REQUEST-----
    		MIICzzCCAbcCAQAwgYkx
    		...
    		-----END CERTIFICATE REQUEST-----

5.2.1.4. PKI CLI での client-cert-request を使用した CSR の作成

pki コマンドラインツールは、client-cert-request コマンドで使用して CSR を生成することもできます。ただし、前述のツールとは異なり、pki で生成された CSR は CA に直接送信されます。PKCS#10 または CRMF 要求の両方を生成できます。

  • PKCS#10 要求の生成例:
Copy to Clipboard Toggle word wrap
pki -d user token db directory -P https -p 8443 -h host.test.com -c user token db passwd client-cert-request "uid=test2" --length 4096 --type pkcs10
  • CRMF リクエストの生成例:
Copy to Clipboard Toggle word wrap
pki -d user token db directory -P https -p 8443 -h host.test.com -c user token db passwd client-cert-request "uid=test2" --length 4096 --type crmf

成功するとリクエスト ID が返されます。

要求が送信されると、エージェントは pki ca-cert-request-approve コマンドを使用して承認できます。

以下に例を示します。

Copy to Clipboard Toggle word wrap
pki -d agent token db directory -P https -p 8443 -h host.test.com -c agent token db passwd -n <CA agent cert nickname> ca-cert-request-approve request id

詳細は、pki client-cert-request --help コマンドを実行して man ページを参照してください。

5.2.2. サーバー側のキー生成を使用した CSR の生成

Firefox v69 以降や Chrome など、多くの新しいバージョンのブラウザーでは、PKI キーを生成する機能と、キーアーカイブ用の CRMF のサポートが削除されています。RHEL では、CRMFPopClient (CR MFPopClient--help を参照) または pki (pki client-cert-request --help を参照) などの CLI を回避策として使用することができます。

サーバー側の Keygen の登録は、トークンキー管理システム (TMS) の導入以来、長い間行われてきました。このシステムでは、キーをスマートカードでローカルに生成するのではなく、KRA で生成できます。Red Hat Certificate System では、ブラウザーのキー生成の問題を解決するための同様のメカニズムが導入されました。鍵はサーバーで生成され (特に KRA で)、PKCS#12 のクライアントに安全に転送されます。

注記

暗号化証明書にのみサーバー側 Keygen メカニズムを使用することが強く推奨されます。

5.2.2.1. 主な機能

  • 証明書要求キーは KRA で生成されます (注: CA と連携するには、KRA をインストールする必要があります)。
  • プロファイルのデフォルトプラグイン serverKeygenUserKeyDefaultImpl は、キーアーカイブ (つまり enableArchival パラメーター) を有効または無効にするための選択を提供します。
  • RSA 鍵と EC 鍵の両方のサポート
  • 手動 (エージェント) 承認と自動承認 (ディレクトリーパスワードベースなど) の両方のサポート

5.2.2.2. Server-Side Keygen を使用した証明書の登録

デフォルトの Server-Side Keygen 登録プロファイルは、EE ページの List Certificate Profiles タブにあります。

サーバー側の鍵の生成を使用した手動ユーザーのデュアル使用証明書登録

図5.1 エージェントの手動による承認を必要とするサーバー側のキータイプの登録

サーバー側キー生成登録マニュアル
サーバー側のキー生成を使用したディレクトリー認証ユーザーのデュアル使用証明書の登録

図5.2 LDAP の uid/pwd 認証が正常に実行されると自動的に承認されるサーバー側のキータイプの登録

サーバー側キー生成 LDAP 認証

リクエストの承認方法に関係なく、Server-Side Keygen Enrollment メカニズムでは、エンドエンティティーユーザーが PKCS#12 パッケージのパスワードを入力する必要があります。このパスワードには、発行された証明書と、発行後にサーバーによって生成された暗号化された秘密鍵が含まれます。

重要

パスワードは共有しないでください。CA や KRA のエージェントでさえありません。

登録要求が承認されると、PKCS#12 パッケージが生成され、以下が行われます。

  • 手動承認の場合、PKCS#12 ファイルは要求を承認する CA エージェントに返されます。その後、エージェントは PKCS#12 ファイルをユーザーに転送することが期待されます。
  • 自動承認の場合、PKCS#12 ファイルはリクエストを送信したユーザーに返されます。

図5.3 エージェントによる手動による登録

サーバー側キー生成登録承認

PKCS#12 ファイルを受信すると、ユーザーは pkcs12util などの CLI を使用して、このファイルを各アプリケーションのユーザー内部の証明書/キーデータベースにインポートできます。たとえば、ユーザーの Firefox nss データベースです。

5.2.2.3. キーの復元

証明書登録プロファイルで enableArchival パラメーターが true に設定されている場合、Server-Side Keygen 登録時に秘密鍵がアーカイブされます。その後、アーカイブされた秘密鍵は、認定 KRA エージェントにより復元できます。

5.2.2.4. 関連情報

5.2.2.4.1. KRA 要求レコード
注記

このメカニズムの性質上、プロファイルで enableArchival パラメーターが true に設定されている場合、Server-Side keygen 要求ごとに 2 つの KRA 要求レコードがあります。

  • 要求タイプ asymkeyGenRequest の 1 つ

    この要求タイプは、KRA エージェントページの List Requests を使用してフィルタリングすることはできません。Show All Requests を選択して、リストを表示できます。

  • 要求タイプの リカバリー の場合
5.2.2.4.2. 監査レコード

有効にした場合には、以下の監査レコードを確認することができます。

CA
  • SERVER_SIDE_KEYGEN_ENROLL_KEYGEN_REQUEST
  • SERVER_SIDE_KEYGEN_ENROLL_KEY_RETRIEVAL_REQUEST
KRA
  • SERVER_SIDE_KEYGEN_ENROLL_KEYGEN_REQUEST_PROCESSED
  • SERVER_SIDE_KEYGEN_ENROLL_KEY_RETRIEVAL_REQUEST_PROCESSED (まだ実装されていません)
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.