5.2. 証明書署名リクエスト (CSR) の作成
計画、インストール、デプロイメントのガイド (Common Criteria Edition) の 2.4.1.1.2.2 CMC による登録 セクションで説明されているように、CMCRequest
ユーティリティーは、PKCS #10 および CRMF 形式の証明書署名要求 (CSR) を受け入れます。
Red Hat Certificate System は、以下のユーティリティーを使用した CSR の作成をサポートします。
-
certutil
: PKCS #10 要求の作成をサポートします。 -
PKCS10Client
: PKCS #10 要求の作成をサポートします。 -
CRMFPopClient
: CRMF 要求の作成をサポートします。
次のセクションでは、これらのユーティリティーを機能豊富な登録プロファイルフレームワークで使用する方法の例をいくつか示します。
サーバー側のキー生成はブラウザーの EE ポータルで提供されているように見えますが、この機能は最新ブラウザーにおけるキー生成サポートの削除がもたらす不便さを CS サーバー上でキー生成 (キーは安全にクライアントに転送されます) を可能にすることで克服するための機能であるため、これは Common Criteria リリースでは評価されません。
5.2.1. certutil
で CSR を作成する
このセクションでは、certutil
ユーティリティーを使用して CSR を作成する方法を説明します。
certutil
の使用の詳細は、以下を参照してください。
-
certutil(1)
の man ページ -
certutil --help
コマンドの出力
5.2.1.1. certutil
で EC キーを使用する CSR を作成する
以下の手順は、certutil
ユーティリティーを使用して Elliptic Curve(EC) キーペアと CSR を作成する方法を示しています。
証明書が要求されるユーザーまたはエンティティーの証明書データベースディレクトリーに移動します。以下に例を示します。
$ cd /user_or_entity_database_directory/
バイナリー CSR を作成し、
request.csr
ファイルに保存します。$ certutil -d . -R -k ec -q nistp256 -s "CN=subject_name" -o request-bin.csr
プロンプトが表示されたら、必要な NSS データベースのパスワードを入力します。
パラメーターの詳細は、
certutil(1)
の man ページを参照してください。作成したバイナリー形式の CSR を PEM 形式に変換します。
$ BtoA request-bin.csr request.csr
必要に応じて、CSR ファイルが正しいことを確認します。
$ cat request.csr MIICbTCCAVUCAQAwKDEQMA4GA1UEChMHRXhhbXBsZTEUMBIGA1UEAxMLZXhhbXBs ...
これは、PKCS#10 PEM 証明書要求です。
- 次の手順については、「CMC 登録プロセス」 を参照してください。ただし、証明書要求の作成に関する手順はスキップしてください。
5.2.1.2. certutil でユーザー定義拡張を使用する CSR を作成する
以下の手順は、certutil
ユーティリティーを使用してユーザー定義の拡張で CSR を作成する方法を示しています。
登録要求は、CA で定義された登録プロファイルにより制限されることに注意してください。例B.3「CSR 内の複数の User Supplied 拡張」 を参照してください。
証明書が要求されるユーザーまたはエンティティーの証明書データベースディレクトリーに移動します。以下に例を示します。
$ cd /user_or_entity_database_directory/
ユーザー定義の Extended Key Usage 拡張とユーザー定義の Key Usage 拡張で CSR を作成し、これを
request.csr
ファイルに保存します。$ certutil -d . -R -k rsa -g 1024 -s "CN=subject_name" --keyUsage keyEncipherment,dataEncipherment,critical --extKeyUsage timeStamp,msTrustListSign,critical -a -o request.csr
プロンプトが表示されたら、必要な NSS データベースのパスワードを入力します。
パラメーターの詳細は、
certutil(1)
の man ページを参照してください。必要に応じて、CSR ファイルが正しいことを確認します。
$ cat 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 証明書要求です。
注記上記の certutil コマンドにはテキスト形式の CSR の
-a
オプションが含まれているため、続行する前にヘッダー情報を必ず削除してください。-a
を省略した場合は、上記の 「certutil
で EC キーを使用する CSR を作成する」 セクションで示すとおり、必ずBtoA
ツールを使用してバイナリー形式からテキスト形式に変換してください。上記の certutil コマンドにはテキスト形式の CSR の -a オプションが含まれているため、続行する前にヘッダー情報を必ず削除してください。-a を省略した場合は、必ず BtoA を使用してバイナリー形式からテキスト形式に変換してください。これについては、上記の「5.2.1.1 certutil で EC キーを使用する CSR を作成する」を参照してください。
次の手順については、「CMC 登録プロセス」 を参照してください。ただし、証明書要求の作成に関する手順はスキップしてください。
5.2.2. PKCS10Client を使用して CSR を作成する
このセクションでは、PKCS10Client
ユーティリティーを使用して CSR を作成する方法の例を示します。
PKCS10Client
の使用に関する詳細は、以下を参照してください。
-
PKCS10Client(1)
の man ページ -
PKCS10Client --help
コマンドの出力
5.2.2.1. PKCS10Client を使用して CSR を作成する
以下の手順では、PKCS10Client
ユーティリティーを使用して Elliptic Curve (EC) キーペアと CSR を作成する方法を説明します。
証明書が要求されるユーザーまたはエンティティーの証明書データベースディレクトリーに移動します。以下に例を示します。
$ cd /user_or_entity_database_directory/
CSR を作成し、
example.csr
ファイルに保存します。$ PKCS10Client -d . -p NSS_password -a ec -c nistp256 -o example.csr -n "CN=subject_name"
パラメーターの詳細は、
PKCS10Client(1)
の man ページを参照してください。必要に応じて、CSR ファイルが正しいことを確認します。
$ cat example.csr -----BEGIN CERTIFICATE REQUEST----- MIICzzCCAbcCAQAwgYkx ... -----END CERTIFICATE REQUEST-----
次の手順については、「CMC 登録プロセス」 を参照してください。
5.2.2.2. PKCS10Client を使用して SharedSecret ベースの CMC の CSR を作成する
以下の手順では、PKCS10Client
ユーティリティーを使用して、SharedSecret ベースの CMC 用の RSA キーペアと CSR を作成する方法を説明します。これは、デフォルトでは caFullCMCSharedTokenCert
プロファイルと caECFullCMCSharedTokenCert
プロファイルで処理される CMC 共有シークレット認証方法にのみ使用します。
証明書が要求されるユーザーまたはエンティティーの証明書データベースディレクトリーに移動します。以下に例を示します。
$ cd /user_or_entity_database_directory/
CSR を作成し、
example.csr
ファイルに保存します。$ PKCS10Client -d . -p NSS_password -o example.csr -y true -n "CN=subject_name"
出力で生成されたキーペアの秘密鍵 ID は、
<CSR output file name>.keyId
の名前形式を持つファイルに保存されます。この ID は、後で共有シークレットまたは復号された POP CMC の登録手順を実行する際に使用されます。パラメーターの詳細は、
PKCS10Client(1)
の man ページを参照してください。必要に応じて、CSR ファイルが正しいことを確認します。
$ cat example.csr -----BEGIN CERTIFICATE REQUEST----- MIICzzCCAbcCAQAwgYkx ... -----END CERTIFICATE REQUEST-----
次の手順については、「共有シークレットを使用して証明書登録を認証する」 を参照してください。
5.2.3. CRMFPopClient を使用して CSR を作成する
Certificate Request Message Format (CRMF) は、CMC で受け入れられている CSR 形式であり、主要なアーカイブ情報を要求に安全に埋め込むことができます。
このセクションでは、CRMFPopClient
ユーティリティーを使用して CSR を作成する方法の例を示します。
CRMFPopClient
の使用に関する詳細を確認する場合は、CRMFPopClient -help
コマンドを実行してください。
5.2.3.1. CRMFPopClient でキーアーカイブを使用する CSR を作成する
以下の手順では、CRMFPopClient
ユーティリティーを使用して RSA キーペアと、キーアーカイブオプションを使用する CSR を作成する方法を説明します。
証明書が要求されるユーザーまたはエンティティーの証明書データベースディレクトリーに移動します。以下に例を示します。
$ cd /user_or_entity_database_directory/
CA から KRA トランスポート証明書を取得します。
$ pki -p 8443 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 Algorithm: 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
KRA トランスポート証明書をエクスポートします。
$ pki -p 8443 ca-cert-show 0x7 --output kra.transport
CSR を作成し、
example.csr
ファイルに保存します。$ CRMFPopClient -d . -p password -n "cn=subject_name" -q POP_SUCCESS -b kra.transport -w "AES KeyWrap/Wrapped" -v -o example.csr -oaep Initializing security database: . archival option enabled Loading transport certificate Parsing subject DN RDN: CN=subject_name Generating key pair: temporary: false CryptoUtil: generateRSAKeyPair: calling kg.setKeyPairUsages Keypair private key id: 27a7e30b48f268ddcc8681633d4014579416d6ca Using key wrap algorithm: AES KeyWrap/Wrapped Creating certificate request CRMFPopClient: use_shared_secret true. Generating SubjectKeyIdentifier extension. Creating signer Creating POP Creating CRMF request Storing CRMF request into example.csr Storing CRMF request key id into example.csr.keyId
注記Elliptic Curve (EC) キーペアと CSR を作成するには、-a ec -t false オプションをコマンドに渡します。パラメーターの詳細は、
CRMFPopClient -help
コマンドを実行してください。必要に応じて、CSR ファイルが正しいことを確認します。
$ cat example.csr -----BEGIN CERTIFICATE REQUEST----- MIICzzCCAbcCAQAwgYkx ... -----END CERTIFICATE REQUEST-----
次の手順については、「CMC 登録プロセス」 を参照してください。
5.2.3.2. CRMFPopClient で SharedSecret ベースの CMC の CSR を作成する
以下の手順では、CRMFPopClient
ユーティリティーを使用して、SharedSecret ベースの CMC 用の RSA キーペアと CSR を作成する方法を説明します。これは、デフォルトでは caFullCMCSharedTokenCert
プロファイルと caECFullCMCSharedTokenCert
プロファイルで処理される CMC 共有シークレット認証方法にのみ使用します。
証明書が要求されるユーザーまたはエンティティーの証明書データベースディレクトリーに移動します。以下に例を示します。
$ cd /user_or_entity_database_directory/
KRA トランスポート証明書を取得します。
$ pki -p 8443 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 Algorithm: 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
KRA トランスポート証明書をエクスポートします。
$ pki -p 8443 ca-cert-export 0xc --output-file kra.transport
CSR を作成し、
example.csr
ファイルに保存します。$ CRMFPopClient -d . -p password -n "cn=subject_name" -q POP_SUCCESS -b kra.transport -w "AES KeyWrap/Wrapped" -y -v -o example.csr -oaep Initializing security database: . archival option enabled Loading transport certificate Parsing subject DN RDN: CN=subject_name Generating key pair: temporary: false CryptoUtil: generateRSAKeyPair: calling kg.setKeyPairUsages Keypair private key id: 6e786393637781a4ae281f5304290fcabda5a6b4 Using key wrap algorithm: AES KeyWrap/Wrapped Creating certificate request CRMFPopClient: use_shared_secret true. Generating SubjectKeyIdentifier extension. Creating signer Creating POP Creating CRMF request Storing CRMF request into example.csr Storing CRMF request key id into example.csr.keyId
注記EC キーペアと CSR を作成するには、コマンドに -a ec -t false オプションを渡します。パラメーターの詳細は、
CRMFPopClient --help
コマンドの出力を参照してください。出力で生成されたキーペアの秘密鍵 ID は、
<CSR output file name>.keyId
の名前形式を持つファイルに保存されます。この ID は、後で共有シークレットまたは DecryptedPOP CMC の登録手順を実行する際に使用されます。必要に応じて、CSR ファイルが正しいことを確認します。
$ cat example.csr -----BEGIN CERTIFICATE REQUEST----- MIICzzCCAbcCAQAwgYkx ... -----END CERTIFICATE REQUEST-----
次の手順については、「共有シークレットを使用して証明書登録を認証する」 を参照してください。