計画、インストール、およびデプロイメントのガイド


Red Hat Certificate System 10

Certificate System サブシステムの計画とインストール

Red Hat Customer Content Services

概要

本ガイドでは、PKI インフラストラクチャーの計画に関する主要な PKI (Public Key Infrastructure) の概念と決定を説明します。

パート I. Red Hat Certificate System のデプロイ方法の計画

ここでは、一般的な PKI の原則や Certificate System およびそのサブシステムの特定機能など、Certificate System の概要を説明します。デプロイメントのプランニングは、組織のニーズを満たす PKI インフラストラクチャーの設計に不可欠です。

第1章 公開鍵の暗号化の概要

公開鍵の暗号化と関連する標準規格は、署名および暗号化された電子メール、シングルサインオン、Transport Layer Security/Secure Sockets Layer (SSL/TLS) 通信などの、多くの製品のセキュリティー機能を利用します。この章では、公開鍵暗号の基本概念を説明します。

中間コンピューターを介して情報を渡すインターネットトラフィックは、サードパーティーによる傍受が可能になります。

傍受
情報はそのまま維持されますが、プライバシーが危険にさらされます。たとえば、あるユーザーがクレジットカード番号を収集したり、機密の会話を記録したり、分類された情報をインターセプトしたりできます。
改ざん
転送中の情報は変更または置き換えられ、受信者に送信されます。たとえば、誰かが商品の注文を変更したり、人の履歴書を変更したりする可能性があります。
権限借用

情報は、意図された受信者を装った人に渡されます。偽装には、以下の 2 種類があります。

  • スプーフィング。他人のふりをすることができます。たとえば、ユーザーが jdoe@example.net というメールアドレスを持っているふりをしたり、コンピューターが www.example.net というサイトであると偽ったりする可能性があります。
  • 詐称。個人または組織は、自分自身を偽って伝えることができます。たとえば、www.example.net というサイトはオンラインの家具店になりすまし、実際にクレジットカードの支払いを受け取りながら、商品を配送することはありません。公開鍵暗号 は、以下を使用してインターネットベースの攻撃に対する保護を提供します。
暗号化と復号
暗号化および復号化により、2 つの通信者が互いに送信される情報を不明確化させることができます。送信側は送信前に情報を暗号化またはスクリブルします。受信者は、情報を受信した後、情報を復号化またはスクランブル解除します。移動時には暗号化された情報は侵入できません。
改ざんの検出
改ざん検出により、情報の受信者は、情報が転送中に変更されていないことを確認できます。データの修正または置き換えの試行は検出されます。
認証
認証により、情報の受信者は、送信者の ID を確認することにより、その発信元を判別できます。
否認防止
否認防止は、情報の送信者が後日、情報が送信されなかったと主張することを防ぎます。

1.1. 暗号化と復号

暗号化 とは、情報を変換するプロセスであり、意図された受信者意外には誰も理解できません。復号 化は、暗号化された情報をデコードするプロセスです。暗号 とも呼ばれる暗号化アルゴリズムは、暗号化または複号に使用される関数です。通常は、2 つの関連する機能が使用されます。1 つは暗号化用で、もう 1 つは復号化用です。

最新の暗号化では、暗号化された情報を秘密に保つ機能は、広く知られている暗号化アルゴリズムではなく、暗号化された結果を生成したり、以前に暗号化された情報を復号化するためにアルゴリズムで使用する必要がある キー と呼ばれる番号に基づいています。正しいキーを使用した復号はシンプルです。正しいキーがない状態での復号化は、不可能ではないにしても、非常に困難です。

1.1.1. 対称キーの暗号化

対称キーの暗号化では、暗号化キーを複号鍵から計算することもできます。ほとんどの対称アルゴリズムでは、図1.1「対称鍵の暗号化」 に示されるように、同じ鍵が暗号化と復号の両方に使用されます。

図1.1 対称鍵の暗号化

05scrypt2

対称鍵暗号化の実装は非常に効率的であるため、暗号化と復号化の結果としてユーザーに大きな時間遅延が発生することはありません。

対称鍵暗号化は、関係する 2 つの当事者によって対称鍵が秘密にされている場合にのみ有効です。他のユーザーが鍵を検出した場合は、機密性と認証の両方に影響します。承認されていない対称キーを持つユーザーは、その鍵で送信されたメッセージのみに復号できますが、新しいメッセージを暗号化して、鍵を使用して信頼できる送信者の 1 つから送信されたかのように送信することができます。

対称キーの暗号化は、SSL/TLS 通信で重要なロールを果たします。これは、TCP/IP ネットワーク上で認証、改ざん検出、および暗号化に幅広く使用されます。SSL/TLS は公開鍵の暗号化技術も使用します。これは、次のセクションで説明します。

1.1.2. 公開鍵の暗号化

公開鍵の暗号化 (非対称暗号化とも呼ばれます) には、エンティティーに関連付けられた鍵、公開鍵、および秘密鍵のペアが必要です。各公開鍵が公開され、対応する秘密鍵はシークレットが保持されます。(公開鍵の公開方法に関する詳細は、「証明書と認証」 を参照してください。)公開鍵で暗号化したデータは、対応する秘密鍵でのみ復号できます。図1.2「公開鍵の暗号化」 は、公開鍵の暗号化が機能する方法の簡単なビューを示しています。

図1.2 公開鍵の暗号化

06pcrypt

図1.2「公開鍵の暗号化」 に表示されるスキームでは、公開鍵を自由に配布できますが、承認されたユーザーだけがこの鍵を使用して暗号化されたデータを読み取ることができます。一般的に、暗号化されたデータを送信するには、そのユーザーの公開鍵でデータは暗号化され、暗号化されたデータを対応する秘密鍵で復号します。

対称鍵暗号化と比較して、公開鍵暗号化はより多くの処理を必要とし、大量のデータの暗号化と復号には適さない場合があります。ただし、公開鍵の暗号化を使用して対称キーを送信できます。これにより、追加データの暗号化に使用できます。これは、SSL/TLS プロトコルによって使用される方法です。

図1.2「公開鍵の暗号化」 にあるスキームの逆もまた機能します。秘密鍵で暗号化されたデータは、対応する公開鍵でのみ復号できます。ただし、機密データを暗号化することは推奨される方法ではありません。これは、定義によって公開されている公開鍵を持つすべてのユーザーがデータを復号する可能性があるためです。それでも、秘密鍵暗号化は、電子商取引やその他の暗号化の商用アプリケーションにとって重要な要件であるデジタル署名を使用してデータに署名するために秘密鍵を使用できることを意味するため、便利です。その後、Mozilla Firefox などのクライアントソフトウェアは公開鍵を使用して、メッセージが適切な秘密鍵で署名され、署名されてから改ざんされていないことを確認できます。「デジタル署名」 は、この確認プロセスがどのように機能するかを説明しています。

1.1.3. 鍵の長さと暗号化の強化

暗号化アルゴリズムを 壊す と、暗号化されたデータにアクセスするための鍵をプレーンテキストで検索できます。対称アルゴリズムでは、アルゴリズムがテキストの暗号化に使用する鍵を判断しようとします。公開鍵アルゴリズムの場合、アルゴリズムを破ることは通常、2 人の受信者間で共有秘密情報を取得することを意味します。

対称アルゴリズムを壊す方法の 1 つは、適切なキーを見つけるまで、完全なアルゴリズム内のすべての鍵を単純に試すことです。公開鍵アルゴリズムの場合、鍵ペアの半分は公開されているため、残りの半分 (秘密鍵) は、複雑ではありますが、公開された数学的計算を使用して導出できます。アルゴリズムを壊す鍵を手動で検索することはブルートフォース攻撃と呼ばれます。

アルゴリズムを破ると、個人情報を傍受したり、なりすまして不正に検証したりするリスクが生じます。

アルゴリズムの キー強度 は、アルゴリズムを壊し、ブルートフォース攻撃と比較する最速な方法を見つけることで決定します。

対称キーでは、暗号化の実行に使用する鍵のサイズや 長さ において、暗号化強度が説明されています。通常は、より強力な暗号化が提供されます。キーの長さはビット単位で測定されます。

キーを破壊する最もよく知られている攻撃が、すべてのキーの可能性をテストするブルートフォース攻撃よりも速くない場合、暗号化キーは完全な強度であると見なされます。

異なるタイプのアルゴリズム (特に公開鍵アルゴリズム) では、対称鍵暗号と同じレベルの暗号化強度を実現するために、異なる鍵の長さが必要になる場合があります。RSA 暗号は、それが基づいている数学的問題の性質により、特定の長さのキーに対して可能なすべての値のサブセットのみを使用できます。対称キーの暗号化に使用されるその他の暗号は、特定の長さのキーに可能なすべての値を使用できます。より一致するオプションがあると、セキュリティーが強化されます。

RSA 鍵を解読することは比較的簡単であるため、RSA 公開鍵暗号化暗号は、暗号的に強力であると見なされるために、非常に長い鍵 (少なくとも 2048 ビット) を持っている必要があります。一方、対称鍵暗号は、ほとんどのアルゴリズムで 80 ビットという非常に短いキー長を使用すると、同等に強力であると見なされます。同様に、Elliptic Curve Digital Signature Algorithm (ECDSA) 暗号などの楕円曲線暗号 (ECC) に基づく公開鍵暗号では、RSA 暗号化よりもビットも少なくなる必要があります。

1.2. デジタル署名

改ざん検出は、一方向ハッシュ (メッセージダイジェスト とも呼ばれる) と呼ばれる数学関数に依存します。一方向ハッシュは、以下の特性を持つ多数の固定長です。

  • ハッシュの値はハッシュデータに対して一意です。1 文字を削除または変更しても、データの変更は異なります。
  • ハッシュされたデータの内容をハッシュから推測することはできません。

「公開鍵の暗号化」 で説明されているように、秘密鍵を暗号化に使用して、対応する公開鍵を復号に使用できます。機密情報を暗号化する場合は推奨されませんが、データをデジタル署名する上では重要となります。署名ソフトウェアは、データ自体を暗号化する代わりに、データの一方向ハッシュを作成し、秘密鍵を使用してハッシュを暗号化します。暗号化したハッシュと、ハッシュアルゴリズムなどの他の情報はデジタル署名と呼ばれます。

図1.3「デジタル署名を使用したデータの整合性の検証」 は、デジタル署名を使用して署名されたデータの整合性を検証する方法を説明します。

図1.3 デジタル署名を使用したデータの整合性の検証

04digsgn

図1.3「デジタル署名を使用したデータの整合性の検証」 は、一部の署名済みデータの受信者に転送される 2 つの項目を示しています。元のデータとデジタル署名は、署名側の秘密鍵で暗号化した元のデータの一方向ハッシュです。データの整合性を検証するために、受信側のソフトウェアは最初に公開鍵を使用してハッシュを復号化します。その後、元のハッシュを生成したものと同じハッシュを使用して、同じデータの新しい一方向ハッシュを生成します。(使用されるハッシュアルゴリズムに関する情報がデジタル署名で送信されます。)最後に、受信ソフトウェアは、新しいハッシュを元のハッシュと比較します。2 つのハッシュが一致する場合、データは署名されてから変更されていません。一致しない場合は、署名後にデータが改ざんされているか、署名者が提示した公開鍵に対応しない秘密鍵を使用して署名が作成されている可能性があります。

2 つのハッシュが一致する場合は、デジタル署名の復号に使用する公開鍵が、デジタル署名の作成に使用される秘密鍵に対応していることを確認することができます。署名側のアイデンティティーを検証するには、公開鍵が特定のエンティティーに属することを確認する方法も必要になります。認証の詳細は、「証明書と認証」 を参照してください。

デジタル署名は手書きの署名に似ています。データが署名されたら、秘密鍵が侵害されていないと、後で実行を拒否するのが困難になります。この品質のデジタル署名は、高度な否認防止を提供します。デジタル署名は、署名者がデータに署名したことを否定することを困難にします。場合によって、デジタル署名は、手動で記述された署名として合理的にバインドされます。

1.3. 証明書と認証

1.3.1. 証明書は誰または何を識別

証明書とは、個人、サーバー、会社、または他のエンティティーを特定し、そのアイデンティティーを公開鍵に関連付けるために使用される電子ドキュメントです。運転免許または乗車のように、証明書は、一般的にユーザーのアイデンティティーを証明する証明を提供します。公開鍵暗号では、証明書を使用してなりすましの問題に対処します。

運転免許申請などの個人 ID を取得するには、そのユーザーが本人であることを検証する、他の形式の識別が必要です。証明書はほぼ同じように機能します。認証局 (CA) は ID を検証し、証明書を発行します。CA は、独立したサードパーティー、Certificate System などの独自の証明書発行サーバーソフトウェアを実行している組織のいずれかです。アイデンティティーの検証に使用される方法は、要求する証明書のタイプの特定の CA のポリシーによって異なります。証明書を実行する前に、CA は標準検証手順を使用してユーザーの ID を確認する必要があります。

CA によって発行された証明書は、特定の公開鍵を、従業員やサーバーの名前など、証明書が識別するエンティティーの名前にバインドします。証明書は、なりすましのための偽の公開鍵の使用を防ぐのに役立ちます。証明書で認定された公開鍵のみが、証明書で識別されたエンティティーが所有する対応する秘密鍵で機能します。

公開鍵の他に、証明書には常に識別するエンティティーの名前、有効期限、証明書を発行した CA 名、シリアル番号が含まれます。証明書には、発行する CA のデジタル署名が常に含まれます。CA のデジタル署名により、証明書は CA を把握して信頼しているが、証明書で識別したエンティティーを認識しないユーザーの有効な認証情報として機能できます。

CA のロールの詳細は、「CA 証明書による信頼の仕組み」 を参照してください。

1.3.2. 認証によるアイデンティティーの確認

認証 とは、アイデンティティーの確認を行うプロセスです。ネットワークの対話では、認証に、別の当事者による識別が必要です。ネットワーク上で認証を使用する方法は複数あります。証明書はその方法の 1 つになります。

通常、ネットワークの対話は、Web ブラウザーやサーバーなどのクライアント間で行われます。クライアント認証 とは、サーバーによりクライアント (ソフトウェアの使用を前提としたユーザー) を特定することを指します。サーバーの認証 とは、クライアントによりサーバー (ネットワークアドレスでサーバーの実行を想定している組織) を特定することを指します。

クライアントおよびサーバーの認証は、証明書がサポートする認証形式ではありません。たとえば、送信者を特定する証明書とともに、電子メールメッセージ上のデジタル署名は、メッセージの送信者を認証できます。同様に、HTML フォームのデジタル署名は、署名者を識別する証明書と組み合わせて、その証明書によって識別された人がフォームの内容に同意したという証拠を提供できます。認証に加えて、どちらの場合もデジタル署名はある程度の否認防止を保証します。デジタル署名は、署名者が後で電子メールまたはフォームを送信していないと主張することを困難にします。

クライアント認証は、ほとんどのイントラネットまたはエクストラネット内のネットワークセキュリティーの重要な要素です。クライアント認証には、主に 2 つの形式があります。

パスワードベースの認証
ほぼすべてのサーバーソフトウェアは、サーバーへのアクセスを付与する前に認識された名前およびパスワードを要求することで、クライアント認証を許可します。
証明書ベースの認証

証明書に基づくクライアント認証は、SSL/TLS プロトコルの一部です。クライアントは無作為に生成されたデータの一部に署名し、ネットワーク全体で証明書および署名されたデータの両方を送信します。サーバーは署名を検証し、証明書の有効性を確認します。

=== パスワードベースの認証

図1.4「パスワードを使用したクライアントのサーバーへの認証」 は、ユーザー名とパスワードを使用してユーザーを認証するプロセスを示しています。この例では、以下を前提としています。

  • ユーザーは、認証なしで、または SSL/TLS によるサーバー認証のベースとして、すでにサーバーを信頼しています。
  • ユーザーがサーバーが制御するリソースを要求しました。
  • 要求されたリソースへのアクセスを許可する前に、サーバーの認証が必要です。

図1.4 パスワードを使用したクライアントのサーバーへの認証

01pswd

この認証プロセスの手順は次のとおりです。

  1. サーバーがクライアントから認証を要求すると、クライアントはそのサーバーのユーザー名およびパスワードを要求するダイアログボックスが表示されます。
  2. クライアントは、プレーンテキストまたは暗号化された SSL/TLS 接続を使用して、ネットワーク全体で名前とパスワードを送信します。
  3. サーバーは、ローカルパスワードデータベースで名前とパスワードを検索し、一致する場合は、ユーザーの ID を認証するエビデンスとして受け入れます。
  4. サーバーは、識別されたユーザーが要求されたリソースへのアクセスを許可されているかどうかを判断し、許可されている場合は、クライアントがそのリソースにアクセスできるようにします。

この方法では、ユーザーがアクセスする各サーバーに新しいパスワードを提供する必要があり、管理者は各ユーザーの名前とパスワードを追跡する必要があります。

1.3.2.1. 証明書ベースの認証

証明書ベースの認証の利点の 1 つは、認証の最初の 3 ステップを、ネットワークを越えて送信されない 1 つのパスワードを供給する仕組みに置き換えることができ、管理者がユーザーの認証を一元的に制御できることです。これは シングルサインオン と呼ばれます。

図1.5「証明書を使用してクライアントをサーバーに対して認証する」 は、証明書と SSL/TLS を使用してクライアント認証がどのように機能するかを示しています。ユーザーをサーバーに認証するには、クライアントが無作為に生成されたデータの一部に署名し、ネットワーク全体で証明書と署名済みデータの両方を送信します。サーバーは、証明書および署名されたデータのデータに基づいてユーザーのアイデンティティーを認証します。

図1.4「パスワードを使用したクライアントのサーバーへの認証」 と同様に、図1.5「証明書を使用してクライアントをサーバーに対して認証する」 ではユーザーがすでにサーバーを信頼し、リソースを要求したこと、および要求されたリソースへのアクセスを付与する前にクライアント認証が要求されていることを前提としています。

図1.5 証明書を使用してクライアントをサーバーに対して認証する

02cert

図1.4「パスワードを使用したクライアントのサーバーへの認証」 の認証プロセスとは異なり、図1.5「証明書を使用してクライアントをサーバーに対して認証する」 の認証プロセスには SSL/TLS が必要です。図1.5「証明書を使用してクライアントをサーバーに対して認証する」 も、クライアントがサーバーに対してクライアントを識別するために使用できる有効な証明書を持っていることを前提としています。証明書ベースの認証は、秘密鍵を所有し、パスワードを知っているユーザーの両方に基づいているため、パスワードベースの認証よりも優先されます。ただし、これら 2 つの仮定は、権限のない担当者がユーザーのマシンまたはパスワードにアクセスできず、クライアントソフトウェアの秘密鍵データベースのパスワードが設定されており、ソフトウェアが適度な頻度でパスワードを要求するように設定されている場合にのみ当てはまります。

注記

パスワードベースの認証または証明書ベースの認証は、個々のマシンまたはパスワードへの物理的なアクセスに関連するセキュリティーの問題に対応します。公開鍵暗号は、一部のデータの署名に使用される秘密鍵が証明書の公開鍵に対応していることを確認することしかできません。マシンの物理的なセキュリティーを保護し、秘密鍵のパスワードを秘密にしておくことは、ユーザーの責任です。

図1.5「証明書を使用してクライアントをサーバーに対して認証する」 に記載されている認証手順は以下のとおりです。

  1. クライアントソフトウェアは、そのクライアントに対して発行された証明書に発行される公開鍵に対応する秘密鍵のデータベースを維持します。クライアントは、証明書ベースのクライアント認証を必要とする SSL/TLS 対応サーバーに初めてアクセスしようとしたときなど、特定のセッション中にクライアントが初めてデータベースにアクセスする必要があるときに、このデータベースのパスワードを要求します。

    このパスワードを一度入力すると、他の SSL/TLS 対応サーバーにアクセスする場合でも、残りのセッションに対して再度入力する必要はありません。

  2. クライアントは秘密鍵データベースのロックを解除し、ユーザーの証明書の秘密鍵を取得し、その秘密鍵を使用してクライアントとサーバーの両方からランダムなデータに署名します。このデータとデジタル署名は、秘密鍵の有効性の証拠となります。デジタル署名はその秘密鍵でのみ作成でき、SSL/TLS セッションに固有の署名済みデータに対して、対応する公開鍵で検証できます。
  3. クライアントは、ユーザーの証明書とランダムに生成されたデータの両方をネットワーク経由で送信します。
  4. サーバーは、証明書と署名済みデータを使用してユーザーのアイデンティティーを認証します。
  5. サーバーは、クライアントが提示する証明書が LDAP ディレクトリー内のユーザーのエントリーに保存されていることを確認するなど、他の認証タスクを実行できます。その後、サーバーは、指定のユーザーが要求されたリソースにアクセスできるかどうかを確認します。この評価プロセスでは、LDAP ディレクトリーまたは企業のデータベースで追加情報を使用すると、さまざまな標準的な承認メカニズムを使用できます。評価の結果が正である場合、サーバーは、要求されたリソースにクライアントがアクセスすることを許可します。

証明書は、クライアントとサーバーと間の相互作用の認証部分を置き換えます。ユーザーがネットワーク全体でパスワードを送信しなければならない代わりに、シングルサインオンでは、ネットワーク経由で送信せずに、ユーザーが秘密鍵のデータベースパスワードを一度入力する必要があります。セッションの残りの部分では、クライアントはユーザーの証明書を提示して、遭遇したそれぞれの新しいサーバーでユーザーを認証します。認証されたユーザー ID に基づく既存の承認メカニズムには影響はありません。

1.3.3. 証明書の用途

証明書の目的は、信頼を確立することです。その使用法は、それが保証するために使用される信頼の種類によって異なります。提示した者の ID を確認するために、いくつかの種類の証明書が使用されたり、オブジェクトまたはアイテムが改ざんされていないことを確認したりするために使用されます。

1.3.3.1. SSL/TLS

SSL/TLS (Transport Layer Security/Secure Sockets Layer) プロトコルは、サーバーの認証、クライアント認証、サーバーとクライアント間の暗号化された通信を管理します。SSL/TLS はインターネット上で広く使用され、特にクレジットカード番号などの機密情報に関連する対話に使用されます。

SSL/TLS には、SSL/TLS サーバー証明書が必要です。最初の SSL/TLS ハンドシェイクの一環として、サーバーは証明書をクライアントに提示してサーバーのアイデンティティーを認証します。認証は公開鍵の暗号化とデジタル署名を使用して、サーバーが、そのサーバーであると主張するサーバーであることを確認します。サーバーが認証されると、クライアントとサーバーは、対称鍵の暗号化を使用して、残りのセッションに対して交換されたすべての情報を暗号化し、改ざんを検出します。

サーバーは、クライアント認証とサーバーの認証を必要とするように設定できます。この場合、サーバーの認証が正常に完了した後に、クライアントの証明書をサーバーに提示して、暗号化された SSL/TLS セッションが確立される前にクライアントのアイデンティティーを認証する必要があります。

SSL/TLS によるクライアント認証の概要と、パスワードベースの認証との相違点は、「認証によるアイデンティティーの確認」 を参照してください。

1.3.3.2. 署名および暗号化された電子メール

メールプログラムは、S/MIME (Secure Multipurpose Internet Mail Extension) と呼ばれる広く使用されているプロトコルを使用して、署名済みおよび暗号化された電子メールをサポートします。S/MIME を使用して電子メールメッセージに署名または暗号化するには、メッセージの送信者に S/MIME 証明書が必要です。

デジタル署名が含まれる電子メールメッセージは、メッセージヘッダーに名前が表示されるユーザーによって送信されたロールを果たすようにするため、送信者を認証します。電子メールソフトウェアがデジタル署名を検証できない場合には、ユーザーが警告されます。

デジタル署名は、それに付随するメッセージに固有のものです。受信したメッセージが送信したメッセージと何らかの形で異なる場合は、1 文字を追加または削除しても、デジタル署名を検証できません。そのため、署名された電子メールは、電子メールが改ざんされていないという保証も提供します。この種の保証は否認防止と呼ばれ、送信者がメッセージの送信を拒否することを困難にします。これはビジネス通信で重要になります。デジタル署名の仕組みについては、「デジタル署名」 を参照してください。

S/MIME を使用すると、一部のビジネスユーザーが重要な電子メールメッセージを暗号化することもできます。ただし、電子メールの暗号化を使用する場合は、注意して計画する必要があります。暗号化された電子メールメッセージの受信側が秘密鍵を失い、キーのバックアップコピーにアクセスできない場合は、暗号化されたメッセージが復号できなくなります。

1.3.3.3. シングルサインオン

ネットワークユーザーは、使用するサービスに複数のパスワードを覚えておく必要が頻繁にあります。たとえば、ユーザーがネットワークにログインするのに別のパスワードを入力してログインし、電子メールを収集して、ディレクトリーサービスを使用し、企業カレンダープログラムを使用して、さまざまなサーバーにアクセスしなければならない場合があります。複数のパスワードは、ユーザーおよびシステム管理者向けに継続されます。ユーザーはさまざまなパスワードを追跡するのが難しく、貧弱なパスワードを選択する傾向があり、わかりやすい場所にそれらを書き留める傾向があります。管理者は、各サーバー上の個別のパスワードデータベースを追跡し、パスワードがネットワークを介して定期的かつ頻繁に送信されるという事実に関連する潜在的なセキュリティー問題に対処する必要があります。

この問題の解決には、ユーザーが一度ログインして単一のパスワードを使用し、ユーザーがネットワーク経由でパスワードを送信できなくなるすべてのネットワークリソースへの認証アクセスが必要になります。この機能はシングルサインオンと呼ばれます。

クライアント SSL/TLS 証明書と S/MIME 証明書の両方が、包括的なシングルサインオンソリューションで大きなロールを果たすことができます。たとえば、Red Hat 製品がサポートするシングルサインオンの 1 つに、SSL/TLS クライアント認証を使用します。ユーザーは、ローカルクライアントの秘密鍵データベースに単一のパスワードを使用して一度ログインでき、ユーザーがネットワーク経由でパスワードを送信できなくなるすべての SSL/TLS 対応サーバーに認証されます。このアプローチでは、各新規サーバーにパスワードを入力する必要がないため、ユーザーのアクセスが簡素化されます。また、管理者はユーザーとパスワードのリストよりもはるかに長いリストではなく、認証局 (CA) のリストを制御することで、ネットワークの管理を簡素化できます。

証明書の使用に加え、ソリューションの完全なシングルサインオンは、パスワードやその他の認証形式に依存する基礎となるオペレーティングシステムなどのエンタープライズシステムとの対話を必要とする必要があります。

1.3.3.4. オブジェクトの署名

多くのソフトウェア技術は、オブジェクト署名 と呼ばれるツールセットをサポートします。オブジェクト署名は、公開鍵暗号化の標準的な手法を使用して、ユーザーがダウンロードしたコードに関する信頼できる情報を、パッケージソフトウェアに関する信頼できる情報を取得するのとほぼ同じ方法で取得できるようにします。

最も重要な点として、オブジェクト署名は、ユーザーとネットワーク管理者がイントラネットまたはインターネットを介して配布されるソフトウェアに関する決定を実装するのに役立ちます。たとえば、特定のエンティティーによって署名された Java アプレットが特定のユーザーのマシンで特定のコンピューター機能を使用できるようにするかどうかなどです。

オブジェクト署名テクノロジーで署名されたオブジェクトは、アプレットや他の Java コード、JavaScript スクリプト、プラグイン、または何らかのファイルです。署名はデジタル署名です。署名オブジェクトとその署名は、通常 JAR ファイルと呼ばれる特別なファイルに格納されます。

オブジェクト署名テクノロジーを使用してファイルに署名するソフトウェア開発者やその他の人は、最初にオブジェクト署名証明書を取得する必要があります。

1.3.4. 証明書の種類

Certificate System は、さまざまな用途、およびさまざまな形式で、さまざまな種類の証明書を生成できます。PKI インスタンスと Certificate System インスタンスの両方を管理するには、必要な証明書を計画し、必要な形式の決定や更新の計画方法など、証明書の管理方法を計画することが重要です。

LDAP ディレクトリー、ファイル署名証明書、およびその他のサブシステム証明書のデュアル用途証明書用の証明書登録フォームがあります。これらのフォームは、Certificate Manager のエンドエンティティーページで ui`8443/ca/ee/ca` から入手できます。

さまざまな Certificate System サブシステムがインストールされると、必要となる基本的な証明書とキーが生成されます。たとえば、Certificate Manager を設定すると、自己署名ルート CA の CA 署名証明書と、内部 OCSP 署名、監査署名、SSL/TLS サーバー、およびエージェントユーザー証明書が生成されます。KRA 設定時に、Certificate Manager はストレージ、トランスポート、監査署名、およびエージェント証明書を生成します。追加の証明書を個別に作成してインストールできます。

表1.1 共通証明書
証明書の種類使用

クライアント SSL/TLS 証明書

SSL/TLS 経由でサーバーへのクライアント認証に使用されます。通常、クライアントの ID は、従業員などの個人の ID と同じであると見なされます。SSL/TLS クライアント証明書がクライアント認証に使用される方法の説明は、「証明書ベースの認証」 を参照してください。クライアント SSL/TLS 証明書は、シングルサインオンの一部として使用することもできます。

銀行は顧客に SSL/TLS クライアント証明書を提供します。これにより、銀行のサーバーはその顧客を識別し、顧客のアカウントへのアクセスを承認できます。

会社は、会社のサーバーがその従業員を識別してその会社のサーバーへのアクセスを承認できるようにする SSL/TLS クライアント証明書を新たに付与します。

サーバー SSL/TLS 証明書

SSL/TLS でクライアントへのサーバーの認証に使用されます。サーバーの認証はクライアント認証なしで使用できます。暗号化された SSL/TLS セッションには、サーバーの認証が必要です。詳細は、「SSL/TLS」 を参照してください。

電子商取引を行うインターネットサイトは通常、証明書ベースのサーバー認証をサポートして、暗号化された SSL/TLS セッションを確立し、会社で識別される Web サイトを扱っていることを顧客に保証します。暗号化された SSL/TLS セッションは、クレジットカード番号などのネットワーク上で送信する個人情報を簡単に傍受できないようにします。

S/MIME 証明書

署名および暗号化された電子メールに使用されます。SSL/TLS クライアント証明書と同様に、クライアントのアイデンティティーは従業員などのユーザーのアイデンティティーと同じであると仮定されます。1 つの証明書は S/MIME 証明書および SSL/TLS 証明書の両方として使用できます。「署名および暗号化された電子メール」 を参照してください。S/MIME 証明書はシングルサインオンの一部としても使用できます。

S/MIME 証明書と SSL/TLS 証明書を組み合わせることで、従業員の ID 認証のみを許可するため、署名済み電子メールと SSL/TLS クライアント認証は許可されますが、電子メールは暗号化されません。別の企業が S/MIME 証明書を署名して暗号化し、機密や法規制を扱う電子メールに署名して暗号化します。

CA 証明書

CA を識別するために使用されます。クライアントおよびサーバーソフトウェアは CA 証明書を使用して、その他の証明書を信頼できるものを決定します。詳細は、「CA 証明書による信頼の仕組み」 を参照してください。

Mozilla Firefox に保存されている CA 証明書は、他の証明書を認証できるものを決定します。管理者は、各ユーザーの Firefox のコピーに保存されている CA 証明書を制御することで、企業のセキュリティーポリシーを実装できます。

オブジェクト署名証明書

Java コード、JavaScript スクリプト、またはその他の署名付きファイルの署名者を識別するのに使用されます。

ソフトウェア会社は、インターネット上で配布されるソフトウェアに頻繁に署名して、そのソフトウェアがその会社の合法的な製品であることをユーザーに保証します。証明書とデジタル署名を使用することで、ユーザーはダウンロードしたソフトウェアが自分のコンピューターにアクセスできる種類を識別して制御することもできます。

1.3.4.1. CA 署名証明書

すべての Certificate Manager には、発行する証明書および証明書失効リスト (CRL) の署名に使用する公開鍵と秘密鍵のペアを持つ CA 署名証明書があります。この証明書は、Certificate Manager のインストール時に作成され、インストールされます。

注記

CRL の詳細は、「証明書の取り消しとステータスの確認」 を参照してください。

Certificate Manager のステータスがルートまたは下位 CA として評価されるかどうかは、その CA 署名証明書が自己署名の証明書であるか、または別の CA により署名されているかにより決まります。自己署名ルート CA は、発行先名、発行可能な証明書のタイプ、証明書の発行先など、証明書を発行するのに使用するポリシーを設定します。下位 CA には、別の CA (通常は CA 階層の上位レベル (ルート CA である場合とそうでない場合があります)) によって署名された CA 署名証明書があります。Certificate Manager が CA 階層にある下位 CA の場合は、Certificate Manager を使用して証明書を発行する前に、ルート CA の署名証明書を個別のクライアントおよびサーバーにインポートする必要があります。

CA が発行するサーバーまたはユーザー証明書がそのクライアントにインストールされている場合は、その CA 証明書をクライアントにインストールする必要があります。CA 証明書は、サーバー証明書を信頼することを確認します。理想的には、証明書チェーンがインストールされています。

1.3.4.2. その他の署名証明書

OCSP (Online Certificate Status Protocol) レスポンダーサービスや CRL 公開などの他のサービスは、CA 証明書以外の署名証明書を使用できます。たとえば、別の CRL 署名証明書を使用して、CA 署名証明書を使用する代わりに CA によって公開される失効リストに署名できます。

注記

OCSP の詳細は、「証明書の取り消しとステータスの確認」 を参照してください。

1.3.4.3. SSL/TLS サーバーおよびクライアント証明書

サーバー証明書は、SSL/TLS などの安全な通信やその他の安全な機能に使用されます。サーバー証明書は、操作中に自身を認証し、データを暗号化するために使用されます。クライアント証明書は、サーバーに対してクライアントを認証します。

注記

サードパーティーが署名証明書を発行した CA はサーバー証明書を発行できない可能性があります。サードパーティーの CA には、部下がサーバー証明書を発行することを禁止するルールが設定されている場合があります。

1.3.4.4. ユーザー証明書

エンドユーザー証明書は、サーバーまたはシステムにユーザーを識別するために使用されるクライアント証明書のサブセットです。ユーザーは、SSL/TLS などのセキュアな通信に使用する証明書や、電子メールの暗号化やシングルサインオンに使用するその他の機能に割り当てることができます。Certificate System エージェントなどの特別なユーザーには、特別なサービスにアクセスするためのクライアント証明書を指定できます。

1.3.4.5. デュアルキーペア

デュアルキーペアは、2 組の秘密鍵と公開鍵で、もう 1 つは署名用のセットで、もう 1 つは暗号化に使用されます。これらのデュアルキーは、デュアル証明書の作成に使用されます。デュアル証明書の登録フォームは、Certificate Manager のエンドエンティティーページにリストされている標準形式です。

デュアルキーペアを生成する場合には、署名と暗号化用に別の証明書を生成する際に、証明書プロファイルが正しく機能するように設定します。

1.3.4.6. クロスペア証明書

Certificate System は、クロスペアの CA 証明書を発行、インポート、および公開できます。クロスペアの証明書では、1 つの CA が署名し、2 番目の CA に対してクロスペアの証明書を発行します。2 番目の CA は署名し、最初の CA にペアの証明書を発行します。その後、どちらの CA も crossCertificatePair エントリーとして両方の証明書を保存または公開します。

ブリッジ証明書は、ルート CA にチェーンされない CA が発行する証明書を許可するために実行できます。クロスペアの CA 証明書で、Certificate System CA と他の CA との間で信頼を確立することで、クロスペアの証明書をダウンロードして、他の CA が発行する証明書を信頼するために使用できます。

1.3.5. 証明書の内容

証明書の内容は、国際標準化団体である国際電気通信連合 (ITU) によって推奨されている X.509v3 証明書仕様に従って編成されています。

通常は、証明書の正確な内容について懸念する必要はありません。ただし、証明書を操作するシステム管理者は、証明書に含まれる情報にある程度精通している必要がある場合があります。

1.3.5.1. 証明書データの形式

証明書要求と証明書を作成し、保存して、いくつかの形式でインストールできます。これらの形式はすべて X.509 標準に準拠します。

1.3.5.1.1. バイナリー

以下のバイナリーフォーマットが認識されます。

  • DER でエンコードされた証明書。これは、単一のバイナリーの DER でエンコードされた証明書です。
  • PKCS#7 証明書チェーンオブジェクト。これは、PKCS #7 SignedData オブジェクトです。SignedData オブジェクトの唯一の重要なフィールドは証明書で、署名およびコンテンツなどは無視されます。PKCS #7 形式を使用すると、複数の証明書を一度にダウンロードできます。
  • Netscape 証明書シーケンス。これは、PKCS #7 ContentInfo 構造で証明書チェーンをダウンロードする簡単な形式で、証明書のシーケンスをラップします。contentType フィールドの値は netscape-cert-sequence である必要がありますが、content フィールドの構造は次のとおりです。

    	CertificateSequence ::= SEQUENCE OF Certificate

    この形式により、複数の証明書を同時にダウンロードできます。

1.3.5.1.2. テキスト

バイナリー形式はどれでもテキスト形式でインポートできます。テキストフォームは、次の行で始まります。

-----BEGIN CERTIFICATE-----

この行に従う証明書データで、上記のバイナリー形式のいずれかになります。このデータは、RFC 1113 で説明されているように base-64 でエンコードされる必要があります。証明書情報の後に以下の行を指定します。

-----END CERTIFICATE-----
1.3.5.2. 識別名

X.509 v3 証明書は、識別名 (DN) を公開鍵にバインドします。DN は、エンティティーを一意に識別する uid=doe などの一連の名前と値のペアです。これは、証明書の サブジェクト名 とも呼ばれます。

以下は、Example Corp の従業員の DN の例です。

uid=doe, cn=John Doe,o=Example Corp.,c=US

この DN では、uid はユーザー名、cn はユーザーの共通名、o は組織または会社名で、c は国です。

DNS には、さまざまな名前と値のペアを含めることができます。LDAP (Lightweight Directory Access Protocol) をサポートするディレクトリーの証明書サブジェクトとエントリーの両方を識別するために使用されます。

DN を構築するルールは複雑です。DN に関する包括的な情報は、http://www.ietf.org/rfc/rfc4514.txtA String Representation of Distinguished Names を参照してください。

1.3.5.3. 典型的な証明書

すべての X.509 証明書は、以下の 2 つのセクションで構成されます。

データセクション

このセクションでは、以下を説明します。

  • 証明書でサポートされる X.509 標準のバージョン番号。
  • 証明書のシリアル番号CA が発行するすべての証明書には、その CA が発行した証明書間で一意のシリアル番号があります。
  • 使用されるアルゴリズムや鍵自体の表現など、ユーザーの公開鍵に関する情報。
  • 証明書を発行した CA の DN。
  • 証明書が有効である期間。たとえば、2004 年 11 月 15 日の午後 1 時から、2022 年 11 月 15 日の午後 1 時までの間。
  • 証明書サブジェクトの DN。サブジェクト名とも呼ばれます。たとえば、SSL/TLS クライアント証明書では、これはユーザーの DN です。
  • 任意の 証明書エクステンション。クライアントまたはサーバーによって使用される追加データを提供できます。以下に例を示します。

    • Netscape Certificate Type 拡張は、SSL/TLS クライアント証明書、SSL/TLS サーバー証明書、メール署名用の証明書などの証明書のタイプを示します。
    • SAN (Subject Alternative Name) 拡張が、証明書を 1 つ以上のホスト名にリンクします。

証明書拡張機能は、別の目的でも使用できます。

署名セクション

このセクションでは、以下を説明します。

  • 独自のデジタル署名を作成するために CA の発行に使用される暗号化アルゴリズムまたは暗号。
  • 証明書内のすべてのデータを一緒にハッシュし、CA の秘密鍵で暗号化することによって取得された CA のデジタル署名。読み取り可能な pretty-print (整形表示) 形式で表示される証明書のデータセクションと署名セクションは次のとおりです。
Certificate:
Data:
   Version: v3 (0x2)
   Serial Number: 3 (0x3)
   Signature Algorithm: PKCS #1 MD5 With RSA Encryption
   Issuer: OU=Example Certificate Authority, O=Example Corp, C=US
   Validity:
    Not Before: Fri Oct 17 18:36:25 1997
    Not  After: Sun Oct 17 18:36:25 1999
   Subject: CN=Jane Doe, OU=Finance, O=Example Corp, C=US
   Subject Public Key Info:
    Algorithm: PKCS #1 RSA Encryption
    Public Key:
       Modulus:
          00:ca:fa:79:98:8f:19:f8:d7:de:e4:49:80:48:e6:2a:2a:86:
          ed:27:40:4d:86:b3:05:c0:01:bb:50:15:c9:de:dc:85:19:22:
          43:7d:45:6d:71:4e:17:3d:f0:36:4b:5b:7f:a8:51:a3:a1:00:
          98:ce:7f:47:50:2c:93:36:7c:01:6e:cb:89:06:41:72:b5:e9:
          73:49:38:76:ef:b6:8f:ac:49:bb:63:0f:9b:ff:16:2a:e3:0e:
          9d:3b:af:ce:9a:3e:48:65:de:96:61:d5:0a:11:2a:a2:80:b0:
          7d:d8:99:cb:0c:99:34:c9:ab:25:06:a8:31:ad:8c:4b:aa:54:
          91:f4:15
       Public Exponent: 65537 (0x10001)
   Extensions:
    Identifier: Certificate Type
      Critical: no
      Certified Usage:
      TLS Client
    Identifier: Authority Key Identifier
      Critical: no
      Key Identifier:
        f2:f2:06:59:90:18:47:51:f5:89:33:5a:31:7a:e6:5c:fb:36:
        26:c9
   Signature:
    Algorithm: PKCS #1 MD5 With RSA Encryption
   Signature:
 6d:23:af:f3:d3:b6:7a:df:90:df:cd:7e:18:6c:01:69:8e:54:65:fc:06:
 30:43:34:d1:63:1f:06:7d:c3:40:a8:2a:82:c1:a4:83:2a:fb:2e:8f:fb:
 f0:6d:ff:75:a3:78:f7:52:47:46:62:97:1d:d9:c6:11:0a:02:a2:e0:cc:
 2a:75:6c:8b:b6:9b:87:00:7d:7c:84:76:79:ba:f8:b4:d2:62:58:c3:c5:
 b6:c1:43:ac:63:44:42:fd:af:c8:0f:2f:38:85:6d:d6:59:e8:41:42:a5:
 4a:e5:26:38:ff:32:78:a1:38:f1:ed:dc:0d:31:d1:b0:6d:67:e9:46:a8:
 d:c4

以下は、base-64 でエンコードされた形式と同じ証明書です。

-----BEGIN CERTIFICATE-----
MIICKzCCAZSgAwIBAgIBAzANBgkqhkiG9w0BAQQFADA3MQswCQYDVQQGEwJVUzER
MA8GA1UEChMITmV0c2NhcGUxFTATBgNVBAsTDFN1cHJpeWEncyBDQTAeFw05NzEw
MTgwMTM2MjVaFw05OTEwMTgwMTM2MjVaMEgxCzAJBgNVBAYTAlVTMREwDwYDVQQK
EwhOZXRzY2FwZTENMAsGA1UECxMEUHViczEXMBUGA1UEAxMOU3Vwcml5YSBTaGV0
dHkwgZ8wDQYJKoZIhvcNAQEFBQADgY0AMIGJAoGBAMr6eZiPGfjX3uRJgEjmKiqG
7SdATYazBcABu1AVyd7chRkiQ31FbXFOGD3wNktbf6hRo6EAmM5/R1AskzZ8AW7L
iQZBcrXpc0k4du+2Q6xJu2MPm/8WKuMOnTuvzpo+SGXelmHVChEqooCwfdiZywyZ
NMmrJgaoMa2MS6pUkfQVAgMBAAGjNjA0MBEGCWCGSAGG+EIBAQQEAwIAgDAfBgNV
HSMEGDAWgBTy8gZZkBhHUfWJM1oxeuZc+zYmyTANBgkqhkiG9w0BAQQFAAOBgQBt
I6/z07Z635DfzX4XbAFpjlRl/AYwQzTSYx8GfcNAqCqCwaSDKvsuj/vwbf91o3j3
UkdGYpcd2cYRCgKi4MwqdWyLtpuHAH18hHZ5uvi00mJYw8W2wUOsY0RC/a/IDy84
hW3WWehBUqVK5SY4/zJ4oTjx7dwNMdGwbWfpRqjd1A==
-----END CERTIFICATE-----

1.3.6. CA 証明書による信頼の仕組み

CA は ID を検証し、証明書を発行します。CA は、独立したサードパーティー、Certificate System などの独自の証明書発行サーバーソフトウェアを実行している組織のいずれかです。

証明書をサポートするクライアントまたはサーバーソフトウェアは、信頼できる CA 証明書のコレクションを維持します。これらの CA 証明書は、ソフトウェアが信頼または検証できる証明書の発行者を決定します。最も単純なケースでは、ソフトウェアは、証明書を持っている CA の 1 つによって発行された証明書のみを検証できます。信頼できる CA 証明書を CA 証明書のチェーンの一部にすることもできます。各証明書は、証明書階層の上位にある CA によって発行されます。

以下のセクションでは、証明書階層と証明書チェーンを使用して、信頼できる証明書ソフトウェアを決定する方法を説明します。

1.3.6.1. CA 階層

大規模な組織では、証明書を発行する責任を複数の CA に委任できます。たとえば、必要な証明書の数が多すぎて、単一の CA が維持できない場合があります。組織単位が異なれば、ポリシー要件も異なる場合があります。または、CA は、証明書を発行している人と同じ地理的領域に物理的に配置する必要がある場合があります。

これらの証明書発行の責任は、下位の CA 間で分割できます。X.509 標準には、CA の階層を設定するモデルが含まれています (例: 図1.6「認証局の階層の例」)。

図1.6 認証局の階層の例

14HIER

ルート CA は階層の上部にあります。ルート CA の証明書は 自己署名証明書 です。つまり、証明書は、証明書を識別する同じエンティティーによってデジタル署名されます。ルート CA に直接従属する CA には、ルート CA によって署名された CA 証明書があります。階層内の下位 CA の下にある CA には、上位レベルの下位 CA によって署名された CA 証明書があります。

組織は、CA 階層の設定方法に多くの柔軟性を備えています。図1.6「認証局の階層の例」 では、例を 1 つだけ示します。

1.3.6.2. 証明書チェーン

CA 階層は証明書チェーンに反映されます。証明書チェーン は、連続する CA により発行された一連の証明書です。図1.7「証明書チェーンの例」 は、図1.6「認証局の階層の例」 に示される CA 階層に基づいて、2 つの下位 CA 証明書を介してルート CA の CA 証明書へのエンティティーを識別する証明書からそれに続く証明書チェーンを示しています。

図1.7 証明書チェーンの例

15chn

証明書チェーンは、階層のブランチから階層のルートへの証明書のパスを追跡します。証明書チェーンでは、以下が発生します。

  • 各証明書の後に、その発行者の証明書が追加されます。
  • 各証明書には、その証明書の発行者の名前 (DN) が含まれており、チェーン内の次の証明書のサブジェクト名と同じです。

    図1.7「証明書チェーンの例」 では、エンジニアリング CA 証明書には、その証明書を発行した CA (USA CA) の DN が含まれます。USA CA の DN はチェーン内の次の証明書のサブジェクト名でもあります。

  • 各証明書は、発行者の秘密鍵で署名されます。この署名は、発行者の証明書内の公開鍵 (チェーン内の次の証明書) で検証できます。

    図1.7「証明書チェーンの例」 では、USA CA の証明書内の公開鍵を使用して、エンジニアリング CA に対して、USA CA の証明書のデジタル署名を検証できます。

1.3.6.3. 証明書チェーンの確認

証明書チェーンの検証では、特定の証明書チェーンが適切な形式で、有効で、適切に署名され、信頼できるものであることを確認します。以下のプロセスの説明は、認証用に提示される証明書から、証明書チェーンを形成および検証する最も重要な手順を示しています。

  1. 証明書の有効期間は、検証者のシステムクロックによって提供される現在時刻に対してチェックされます。
  2. 発行者の証明書が位置しています。ソースは、クライアントまたはサーバーのローカル証明書データベース、または SSL/TLS 接続と同様に、サブジェクトが提供した証明書チェーンのいずれかになります。
  3. 証明書の署名は、発行者の証明書の公開鍵を使用して検証されます。
  4. サービスのホスト名は、SAN (Subject Alternative Name) 拡張と照合されます。証明書にそのような拡張がない場合、ホスト名はサブジェクトの CN に対して比較されます。
  5. システムは、証明書の基本制約要件、つまり、証明書が CA であるかどうか、および署名が許可されている子会社の数を確認します。
  6. 発行者の証明書が検証者の証明書データベース内の検証者によって信頼されている場合、検証はここで正常に停止します。それ以外の場合は、発行者の証明書をチェックして、証明書タイプ拡張に適切な下位 CA 表示が含まれていることを確認し、チェーン検証をこの新しい証明書からやり直します。図1.8「ルート CA への証明書チェーンの確認」 は、このプロセスの例を示しています。

図1.8 ルート CA への証明書チェーンの確認

16chver

図1.8「ルート CA への証明書チェーンの確認」 は、ルート CA のみが検証機能のローカルデータベースに含まれる場合に何が発生するかを示しています。Engineering CA など、中間 CA のいずれかの証明書が検証者のローカルデータベースにある場合は、図1.9「中間認証局までの証明書チェーンの検証」 に示されているように、検証はその証明書で停止します。

図1.9 中間認証局までの証明書チェーンの検証

19chver

有効期限が切れている、署名が無効である、または証明書チェーンのいずれかの時点で発行元 CA の証明書がない場合は、認証が失敗します。図1.10「検証できない証明書チェーン」 は、root CA 証明書も中間 CA 証明書も検証者のローカルデータベースに含まれていない場合に、検証がどのように失敗するかを示しています。

図1.10 検証できない証明書チェーン

20chver

1.3.7. 証明書のステータス

証明書失効リスト (CRL) の詳細は、「CRL」 を参照してください。

オンライン証明書ステータスプロトコル (OCSP) の詳細は、「OCSP サービス」 を参照してください。

1.4. 証明書のライフサイクル

証明書は、Web サイトへのアクセスに電子メールを暗号化することによって、多くのアプリケーションで使用されます。証明書のライフサイクルには、2 つの主要ステージがあります。発行時 (発行と登録) と、証明書が有効になっていない (更新または失効) 期間です。また、サイクル時に証明書を管理する方法もあります。他のアプリケーションで利用できる証明書に関する情報を 公開 し、キーペアのバックアップを作成して、証明書が失われた場合に証明書を復旧できるようにします。

1.4.1. 証明書の発行

証明書を発行するプロセスは、証明書を発行する CA と、それが使用する目的によって異なります。非デジタル形式の ID の発行も、同様の方法で異なります。ライブラリーカードを取得する要件は、ドライバーのライセンスを取得する方法とは異なります。同様に、異なる CA には、さまざまな種類の証明書を発行するためのさまざまな手順があります。証明書を受け取るための要件は、認証された文書の電子メールアドレスまたはユーザー名とパスワード、身元調査、および個人面接のように単純な場合があります。

組織のポリシーに応じて、証明書を発行するプロセスは、ユーザーに対して完全に透過的であるものから、ユーザーの多大な参加と複雑な手順を要求するものまでさまざまです。一般に、証明書を発行するプロセスは柔軟である必要があります。これにより、組織は変化するニーズに合わせて証明書を調整できます。

1.4.2. 証明書の有効期限および更新

証明書のライセンスと同様、証明書は、有効である期間を指定します。有効期間の前後に認証に証明書を使用しようとすると失敗します。証明書の有効期限および更新の管理は、証明書管理ストラテジーの重要な部分です。たとえば、管理者は、証明書の有効期限が近づいたときに自動的に通知を受け取り、システムの動作を中断することなく適切な更新プロセスを完了できるようにすることができます。更新プロセスでは、同じ公開鍵のペアを再使用するか、新しい鍵を発行できます。

さらに、従業員が会社を辞めたり、会社内の別の部署で新しい仕事に異動したりした場合など、証明書の有効期限が切れる前に証明書を取り消す必要がある場合があります。

証明書失効は複数の方法で処理できます。

証明書がディレクトリーに存在しているかどうかの確認
サーバーは、認証プロセスが提示されている証明書の存在についてディレクトリーをチェックするように設定できます。管理者が証明書を取り消すと、証明書はディレクトリーから自動的に削除され、証明書が他のすべての点で有効なままであっても、その証明書を使用した後続の認証試行は失敗します。
証明書失効リスト (CRL)
失効した証明書 (CRL) は、一定間隔でディレクトリーに公開できます。CRL は認証プロセスの一部として確認できます。
リアルタイムのステータスチェック
認証用に証明書が提示されるたびに、発行 CA を直接確認することもできます。この手順は、リアルタイムステータスチェックと呼ばれることもあります。
オンライン証明書ステータスプロトコル
OCSP (Online Certificate Status Protocol) サービスを設定して、証明書のステータスを確認できます。

証明書の更新に関する詳細は、「証明書の更新」 を参照してください。CRL や OCSP を含む証明書の取り消しの詳細は、「証明書の取り消しとステータスの確認」 を参照してください

1.5. キー管理

証明書を発行する前に、その証明書に含まれる公開鍵と、対応する秘密鍵を生成する必要があります。1 人の人間に、署名操作用の証明書と鍵のペアを発行し、暗号化操作用に別の証明書と鍵のペアを発行するのが便利な場合もあります。個別の署名証明書と暗号化証明書は、秘密署名キーをローカルマシン上にのみ保持し、否認防止を最大限に提供します。これは、ユーザーが元のキーを紛失したり会社を辞めたりした場合に、秘密暗号化キーを取得できる中央の場所にバックアップするのにも役立ちます。

鍵はクライアントソフトウェアにより生成したり、CA が集中して生成されたり、LDAP ディレクトリーを介してユーザーに配布したりできます。どちらの方法にも関わるコストが発生します。ローカルキーの生成により、否認防止が最大になりますが、発行プロセスへのユーザーの参加が増える可能性があります。柔軟なキー管理機能は、ほとんどの組織にとって不可欠です。

鍵リカバリー、または、定義した条件下で暗号鍵のバックアップを取得する機能は、組織が証明書を使用する方法に応じて、証明書管理に不可欠であることがあります。一部の PKI 設定では、暗号化キーを回復する前に、許可された状況で正当な所有者にのみキーが回復されるように、複数の許可された担当者が同意する必要があります。情報を暗号化するときに鍵を復元する必要がある場合があります。また、失われたキーのみが復号化できます。

第2章 Red Hat Certificate System の概要

証明書の発行、更新、取り消しなど、すべての一般的な PKI 操作。キーのアーカイブと回復。CRL の公開と証明書ステータスの検証は、Red Hat Certificate System 内の相互運用サブシステムによって実行されます。この章では、個々のサブシステムの機能と、それらが連携して堅牢でローカルな PKI を確立する方法を説明します。

2.1. Certificate System サブシステムのレビュー

Red Hat Certificate System は 5 つの異なるサブシステムを提供します。それぞれは、PKI デプロイメントのさまざまな側面に重点を置いています。

  • Certificate Manager と呼ばれる 認証局。CA は PKI の中核で、すべての証明書を発行して取り消します。Certificate Manager は、Certificate System の中核でもあります。信頼できるサブシステムの セキュリティードメイン を確立することで、別のサブシステム間の関係を確立し、管理します。
  • キーリカバリー認証局 (KRA)。証明書は、特定のキーペアと一意の鍵のペアに基づいて作成されます。秘密鍵が失われると、その鍵がアクセスに使用されたデータ (暗号化された電子メールなど) にもアクセスできないため、失われます。KRA は鍵のペアを格納するため、復元された鍵に基づいて新しい同一証明書を生成でき、秘密鍵が損失または破損してもすべての暗号化されたデータにアクセスできます。

    注記

    以前のバージョンの Certificate System では、KRA はデータリカバリーマネージャー (DRM) とも呼ばれます。コード、設定ファイルエントリー、Web パネルなどの一部のリソースは、KRA ではなく DRM という用語を使用する場合があります。

  • オンライン証明書ステータスプロトコル (OCSP) レスポンダーOCSP は、証明書が有効かどうかを検証し、有効期限が切れていないかどうかを確認します。この機能は、内部 OCSP サービスがある CA からも実行できますが、外部の OCSP レスポンダーを使用すると、発行 CA の負荷が低くなります。
  • トークンキーサービス (TKS)。TKS は、トークン CCID、プライベート情報、および定義済みのアルゴリズムに基づいて鍵を取得します。これらの派生キーは、TPS によりトークンのフォーマットに使用され、トークンに証明書を登録します。
  • トークン処理システム (TPS)。TPS は、スマートカードなどの外部トークンと直接対話し、ローカルクライアント (Enterprise Security Client (ESC)) を使用してこれらのトークンの鍵と証明書を管理します。トークン操作がある場合には TPS に問い合わせ、TPS は必要に応じて CA、KRA、または TKS と対話し、Enterprise Security Client の方法で情報をトークンに送信します。

すべてのサブシステムがインストールされている場合でも、Certificate System のコアは最終的に証明書関連のすべての要求を処理するため、CA になります。その他のサブシステムは、wheel のスポークのように CA に接続します。これらのサブシステムは連携して、公開鍵インフラストラクチャー (PKI) を作成します。インストールされているサブシステムに応じて、PKI は 2 つの方法の 1 つ (または両方) で機能できます。

  • スマートカードを管理する トークン管理システム または TMS 環境。これには CA、TKS、および TPS が必要です。サーバー側の鍵生成には任意の KRA が必要です。
  • 通常、ソフトウェアデータベースでスマートカード以外の環境で使用される証明書を管理する従来の 非トークン管理システム または 非 TMS 環境です。少なくとも、TMS 以外の環境では CA のみが必要ですが、TMS 以外の環境では OCSP レスポンダーと KRA インスタンスも使用できます。

2.2. Certificate System サブシステムの概要

2.2.1. 個別インスタンスと共有インスタンス

Red Hat Certificate System は、すべてのサブシステムに個別の PKI インスタンスのデプロイメントをサポートします。

  • 個別の PKI インスタンスは、単一の Java ベースの Apache Tomcat インスタンスとして実行されます。
  • 個別の PKI インスタンスには、単一の PKI サブシステム (CA、KRA、OCSP、TKS、または TPS) が含まれます。
  • 同じ物理マシンまたは仮想マシン (VM) 上に共存する場合、別の PKI インスタンスは一意のポートを使用する必要があります。

または、Certificate System は、共有 PKI インスタンスのデプロイメントをサポートします。

  • 共有 PKI インスタンスは、単一の Java ベースの Apache Tomcat インスタンスとしても実行されます。
  • 単一の PKI サブシステムを含む共有 PKI インスタンスは、別の PKI インスタンスと同じです。
  • 共有 PKI インスタンスには、各タイプの PKI サブシステムへの任意の組み合わせが含まれる可能性があります。

    • CA のみ
    • TKS のみ
    • CA および KRA
    • CA および OCSP
    • TKS および TPS
    • CA、KRA、TKS、および TPS
    • CA、KRA、OCSP、TKS、および TPS
    • その他
  • 共有 PKI インスタンスを使用すると、そのインスタンスに含まれるサブシステムがすべて同じポートを共有できます。
  • 共有 PKI インスタンスは、複数の同一物理マシンまたは仮想マシンに共存する場合、一意のポートを使用する必要があります。

2.2.2. インスタンスインストールの要件

2.2.2.1. Directory Server インスタンスの可用性

Certificate System インスタンスをインストールする前に、ローカルまたはリモートの Red Hat Directory Server LDAP インスタンスが利用できる必要があります。Red Hat Directory Server のインストール方法は、Red Hat Directory Server インストールガイド を参照してください。

2.2.2.2. PKI パッケージ

Red Hat Certificate System は、以下のパッケージで構成されています。

  • 以下のベースパッケージは Certificate System のコアを形成し、ベースの Red Hat Enterprise Linux リポジトリーで利用できます。

    • pki-core

      • pki-base
      • pki-base-java
      • pki-ca
      • pki-javadoc
      • pki-kra
      • pki-server
      • pki-symkey
      • pki-tools
  • 以下に記載するパッケージは、ベースの Red Hat Enterprise Linux サブスクリプションチャネルでは 利用できません。これらのパッケージをインストールするには、Red Hat Certificate System サブスクリプションプールを割り当て、RHCS リポジトリーを有効にする必要があります。詳細は、「Red Hat サブスクリプションの添付および Certificate System パッケージリポジトリーの有効化」 を参照してください。

    • pki-core

      • pki-console
      • pki-ocsp
      • pki-tks
      • pki-tps
    • redhat-pki

      • redhat-pki: pki-core モジュールのすべてのパッケージが含まれます。redhat-pki パッケージを個別に選択する場合は、pki-core モジュールを無効にすることが推奨されます。
      • redhat-pki-console-theme
      • redhat-pki-server-theme

Red Hat Enterprise Linux 8 システム (必要に応じて 4章サポート対象のプラットフォーム に記載されているサポート対象のハードウェアセキュリティーモジュールで設定されているもの) を使用します。Red Hat Certificate System をインストールする前に、すべてのパッケージが最新の状態であることを確認してください。

すべての Certificate System パッケージ (pki-javadoc を除く) をインストールするには、dnf を使用して redhat-pki メタパッケージをインストールします。

# dnf install redhat-pki

必要に応じて 1 つ以上の最上位の PKI サブシステムパッケージをインストールしてください。実際のパッケージ名は、上記のリストを参照してください。この方法を使用する場合は、必ず redhat-pki-server-theme パッケージもインストールし、PKI コンソールを使用する場合のオプションとして redhat-pki-console-themepki-console をインストールします。

開発者と管理者は、JSS および PKI javadoc (jss-javadoc および pki-javadoc) もインストールする必要があります。

注記

jss-javadoc パッケージを使用する場合は、Subscription Manager で Server-Optional リポジトリーを有効にする必要があります。

2.2.2.3. インスタンスのインストールと設定

pkispawn コマンドラインツールを使用して、新しい PKI インスタンスをインストールおよび設定します。個別インストールと設定手順がなく、バッチプロセスとして、または両方の組み合わせ (パスワードを要求するバッチプロセス) のいずれかを対話的に実行することができます。このユーティリティーは、ブラウザーベースのグラフィカルインターフェイスをインストールまたは設定する方法を提供していません。

使用方法の情報が必要な場合は、pkispawn --help コマンドを実行してください。

pkispawn コマンドを実行すると、以下が行われます。

  1. プレーンテキストの設定ファイル (/usr/share/pki/server/etc/default.cfg) からデフォルトの name=value ペアを読み取ります。
  2. 指定されたペアを対話的にまたは自動的に上書きし、最終結果を Python ディクショナリーとして保存します。
  3. 順序付けされた スクリプトレット を実行し、サブシステムおよびインスタンスインストールを実行します。
  4. 設定スクリプトレットは、Python ディクショナリーを JavaScript Object Notation (JSON) データオブジェクトとしてパッケージ化し、Java ベースの設定サーブレットに渡されます。
  5. 設定サーブレットはこのデータを使用して新しい PKI サブシステムを設定し、制御を pkispawn 実行可能ファイルに渡して、PKI 設定の最終処理を行います。

最終的なデプロイメントファイルのコピーは /var/lib/pki/instance_name/<subsystem>/registry/<subsystem>/deployment.cfg に保存されます。

詳細は、pkispawn の man ページを参照してください。

デフォルトの設定ファイル /usr/share/pki/server/etc/default.cfg は、上記のプロセスの開始時に読み込まれるデフォルトのインストールと設定値を含むプレーンテキストのファイルです。これは、[DEFAULT][Tomcat][CA][KRA][OCSP][TKS]、および [TPS] セクションに分割された name=value のペアで構成されます。

pkispawn-s オプションを使用してサブシステム名を指定すると、そのサブシステムのセクションのみが読み取られます。

セクションには階層があります。サブシステムセクションで指定した name=value のペアは、[Tomcat] セクションのペアを上書きし、[DEFAULT] セクションのペアを上書きします。デフォルトのペアは、インタラクティブ入力か、指定された PKI インスタンス設定ファイル内のペアによってさらに上書きできます。

注記

非対話形式ファイルを使用してデフォルトの name=value ペアを上書きする場合は常に、任意の場所に保存され、いつでも指定できます。これらのファイルは、pkispawn の man ページにある myconfig.txt と呼ばれていますが、.ini ファイルと呼ばれることも、より一般的には PKI インスタンス設定オーバーライドファイルと呼ばれることもあります。

詳細は、pki_default.cfg の man ページを参照してください。

設定サーブレット は、/usr/share/java/pki/pki-certsrv.jarcom/netscape/certsrv/system/ConfigurationRequest.class として保存されている Java バイトコードで構成されます。サーブレットは、pkispawn を使用して設定スクリプトレットから JSON オブジェクトとして渡されたデータを処理し、com/netscape/certsrv/system/ConfigurationResponse.class と同じファイルで提供される Java バイトコードを使用して pkispawn に返します。

インタラクティブインストールの例では、root 権限を使用してコマンドラインで pkispawn コマンドの実行のみ行っています。

# pkispawn
重要

現在、インタラクティブなインストールは、非常に基本的なデプロイメントでのみ存在します。たとえば、クローン作成、Elliptic Curve Cryptography (ECC)、外部 CA、Hardware Security Module (HSM)、下位 CA などの高度な機能を使用する場合、デプロイメントは個別の設定ファイルで必要なオーバーライドパラメーターを提供する必要があります。

非対話的なインストールでは、PKI インスタンス設定の上書きファイルが必要ですが、プロセスは以下の例のようになります。

  1. pki ディレクトリーを作成します。

    # mkdir -p /root/pki
  2. vim などのテキストエディターを使用して、以下の内容を含む /root/pki/ca.cfg という名前の設定ファイルを作成します。

    [DEFAULT]
    pki_admin_password=<password>
    pki_client_pkcs12_password=<password>
    pki_ds_password=<password>
  3. # pkispawn -s CA -f /root/pki/ca.cfg

さまざまな設定例は、pkispawn の man ページを参照してください。

2.2.2.4. インスタンスの削除

既存の PKI インスタンスを削除するには、pkidestroy コマンドを使用します。対話的に実行することも、バッチプロセスとして実行することもできます。pkidestroy -h を使用して、コマンドラインで詳細な使用方法を表示します。

pkidestroy コマンドは、サブシステムの作成時に保存された PKI サブシステムデプロイメント設定ファイル (/var/lib/pki/instance_name/<subsystem>/registry/<subsystem>/deployment.cfg) を読み取り、読み込んだファイルを使用して PKI サブシステムを削除し、追加のサブシステムがない場合は PKI インスタンスを削除します。詳細は、pkidestroy の man ページを参照してください。

pkidestroy を使用したインタラクティブな削除手順は、以下のようになります。

# pkidestroy
Subsystem (CA/KRA/OCSP/TKS/TPS) [CA]:
Instance [pki-tomcat]:

Begin uninstallation (Yes/No/Quit)? Yes

Log file: /var/log/pki/pki-ca-destroy.20150928183547.log
Loading deployment configuration from /var/lib/pki/pki-tomcat/ca/registry/ca/deployment.cfg.
Uninstalling CA from /var/lib/pki/pki-tomcat.
rm '/etc/systemd/system/multi-user.target.wants/pki-tomcatd.target'

Uninstallation complete.

非インタラクティブな削除手順は、以下の例のようになります。

# pkidestroy -s CA -i pki-tomcat
Log file: /var/log/pki/pki-ca-destroy.20150928183159.log
Loading deployment configuration from /var/lib/pki/pki-tomcat/ca/registry/ca/deployment.cfg.
Uninstalling CA from /var/lib/pki/pki-tomcat.
rm '/etc/systemd/system/multi-user.target.wants/pki-tomcatd.target'

Uninstallation complete.

ハードウェアトークンまたはハードウェアセキュリティーモジュール (HSM) が使用されている場合、クローンインスタンスを作成できるため、キーペアは削除されません。キーペアは、ソフトトークンが使用される場合にのみ削除されます。

インスタンスは容易に作成できるため、HSM にトークンが残っていることに気付かずに作成して HSM メモリーを使い切ってしまうことも考えられるため、これは重要です。

この場合、certutil コマンドの出力は次の例のようになります。環境変数 $nssdb を使用して、HSM に到達するためにすでに初期化されており、PKI の NSS DB とは異なるローカル NSS DB を指しています。

# certutil -L -d /etc/pki/2023-10-03-0139-10.4-rootca1/alias/ -h   thalesLunaDEV -f ${nssdb}/hsm.password.txt
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
thalesLunaDEV:Server-Cert cert-2023-10-03-0139-10.4-rootca1 CA u,u,u
thalesLunaDEV:caSigningCert cert-2023-10-03-0139-10.4-rootca1 CA CTu,Cu,Cu
thalesLunaDEV:ocspSigningCert cert-2023-10-03-0139-10.4-rootca1 CA u,u,u
thalesLunaDEV:subsystemCert cert-2023-10-03-0139-10.4-rootca1 u,u,u
thalesLunaDEV:auditSigningCert cert-2023-10-03-0139-10.4-rootca1 CA u,u,Pu

インスタンスを破棄します。以下はその例です。

# pkidestroy -v -i 2023-10-03-0139-10.4-rootca1 -s CA 2>&1 | tee ~/pkidestroy.2023-10-03-0139-10.4-rootca1.out.1.txt

インスタンスが削除されたことを確認します。以下はその例です。

pki-server instance-find

削除された PKI インスタンスの秘密鍵がハードウェアトークンに存在することを確認します。

# certutil -K -d ${nssdb} -h thalesLunaDEV -f ${nssdb}/hsm.password.txt
certutil: Checking token "thalesLunaDEV" in slot "LunaNet Slot"
< 0> rsa 6ba7e14b85cf5bf0433658bbdd207298bc7083b1 auditSigningCert cert-2023-10-03-0139-10.4-rootca1 CA
< 1> rsa e23a6a9f4d545617240a551703eeec4c9da74dd2 ocspSigningCert cert-2023-10-03-0139-10.4-rootca1 CA
< 2> rsa c47758d7246a9d89705e149a79d69cc70e78b12f caSigningCert cert-2023-10-03-0139-10.4-rootca1 CA
< 3> rsa b570420fc93a4a108109c5eed4ddefa1c7548495 Server-Cert cert-2023-10-03-0139-10.4-rootca1 CA
< 4> rsa 3ea53e3e227a0b0a070479b741221c474467ca35 subsystemCert cert-2023-10-03-0139-10.4-rootca1

これらの秘密鍵を本当に削除する必要がある場合は、certutil -F コマンド、またはメーカーのツール (Luna Client cmu listcmu delete などをいくつかのオプションを併せて使用) を使用します。

以下は、NSS db ディレクトリーがすでに初期化されている certutil の例です。

certutil -F -d ${nssdb} -f ${nssdb}/hsm.password.txt -h thalesLunaDEV -n "thalesLunaDEV:auditSigningCert cert-2023-10-03-0139-10.4-rootca1 CA"
certutil -F -d ${nssdb} -f ${nssdb}/hsm.password.txt -h thalesLunaDEV -n "thalesLunaDEV:Server-Cert cert-2023-10-03-0139-10.4-rootca1 CA"
certutil -F -d ${nssdb} -f ${nssdb}/hsm.password.txt -h thalesLunaDEV -n "thalesLunaDEV:subsystemCert cert-2023-10-03-0139-10.4-rootca1 CA"
certutil -F -d ${nssdb} -f ${nssdb}/hsm.password.txt -h thalesLunaDEV -n "thalesLunaDEV:ocspSigningCert cert-2023-10-03-0139-10.4-rootca1 CA"
certutil -F -d ${nssdb} -f ${nssdb}/hsm.password.txt -h thalesLunaDEV -n "thalesLunaDEV:caSigningCert cert-2023-10-03-0139-10.4-rootca1 CA"

オプション: 削除された CA 署名証明書に関連付けられているシステム信頼証明書、発行者、または信頼チェーンがある場合はそれを削除します。以下はその例です。

trust list | grep -B 3 -A 3 "CA Signing Certificate"
 pkcs11:id=%1D%D6%80%D7%C9%29%56%85%73%63%F4%A1%DE%EF%19%3A%E4%5B%BB%97;type=cert
 type: certificate
 label: CA Signing Certificate
 trust: anchor
 category: authority
trust anchor --remove "pkcs11:id=%1D%D6%80%D7%C9%29%56%85%73%63%F4%A1%DE%EF%19%3A%E4%5B%BB%97;type=cert"
trust list | grep -c "CA Signing Certificate"
 0

2.2.3. 実行管理 (systemctl)

2.2.3.1. 起動、停止、再起動、ステータス取得

Red Hat Certificate System サブシステムインスタンスは、Red Hat Enterprise Linux 8 で systemctl 実行管理システムツールを使用して停止および起動できます。

# systemctl start <unit-file>@instance_name.service
# systemctl status <unit-file>@instance_name.service
# systemctl stop <unit-file>@instance_name.service
# systemctl restart <unit-file>@instance_name.service

<unit-file> には、以下のいずれかの値を使用できます。

pki-tomcatd 			With watchdog disabled
pki-tomcatd-nuxwdog 		With watchdog enabled

watchdog サービスの詳細は、「パスワードとウォッチドッグ (nuxwdog)」 および Red Hat Certificate System 管理ガイドCertificate System Watchdog Service の使用 セクションを参照してください。

注記

RHCS 10 では、これらの systemctl アクションは pki-server エイリアスをサポートします。pki-server <command> subsystem_instance_namesystemctl <command> pki-tomcatd@<instance>.service のエイリアスです。

2.2.3.2. インスタンスの自動起動

Red Hat Enterprise Linux の systemctl ユーティリティーは、サーバー上の各プロセスの自動起動およびシャットダウン設定を管理します。これは、システムが再起動すると、一部のサービスを自動的に再起動できることを意味します。システムユニットファイルは、サービスの起動を制御し、サービスが正しい順序で起動されるようにします。systemd サービスと systemctl ユーティリティーは、Red Hat Enterprise Linux 8 の基本的なシステム設定 ガイドで説明されています。

Certificate System インスタンスは systemctl で管理できます。したがって、このユーティリティーは、インスタンスを自動的に再起動するかどうかを設定できます。Certificate System インスタンスが作成されると、システムの起動時に有効になります。これは systemctl を使用することで変更できます。

# systemctl disable pki-tomcatd@instance_name.service

インスタンスを再度有効にするには、以下を実行します。

# systemctl enable pki-tomcatd@instance_name.service
注記

systemctl enable コマンドおよび systemctl disable コマンドは、Certificate System をすぐに起動したり、停止したりしません。

2.2.4. プロセス管理 (pki-server および pkidaemon)

2.2.4.1. pki-server コマンドラインツール

Red Hat Certificate System の主なプロセス管理ツールは、pki-server です。使用方法は、pki-server --help コマンドを使用して、pki-server の man ページを参照してください。

pki-server コマンドラインインターフェイス (CLI) は、ローカルサーバーインスタンス (サーバー設定やシステム証明書など) を管理します。以下のように CLI を起動します。

$ pki-server [CLI options] <command> [command parameters]

CLI はサーバーインスタンスの設定ファイルおよび NSS データベースを使用するため、CLI では事前に初期化は必要ありません。CLI はファイルに直接アクセスできるため、これは root ユーザーがのみ実行でき、クライアント証明書は必要ありません。また、CLI はサーバーのステータスに関係なく実行できます。実行中のサーバーは必要ありません。

CLI は、階層構造で多数のコマンドをサポートしています。トップレベルのコマンドをリスト表示するには、追加のコマンドまたはパラメーターを指定せずに CLI を実行します。

$ pki-server

コマンドにはサブコマンドがあります。それらをリスト表示するには、コマンド名を実行します。追加のオプションは指定しません。以下に例を示します。

$ pki-server ca
$ pki-server ca-audit

コマンドの使用情報を表示するには --help オプションを使用します。

$ pki-server --help
$ pki-server ca-audit-event-find --help
2.2.4.2. pki-server を使用したインストール済みサブシステムの有効化および無効化

インストール済みのサブシステムを有効または無効にするには、pki-server ユーティリティーを使用します。

# pki-server subsystem-disable -i instance_id subsystem_id
# pki-server subsystem-enable -i instance_id subsystem_id

subsystem_id を、有効なサブシステム識別子 (cakratksocsp、または tps) に置き換えます。

注記

1 つのインスタンスにはサブシステムのタイプのみを設定できます。

たとえば、pki-tomcat という名前のインスタンスで OCSP サブシステムを無効にするには、次のコマンドを実行します。

# pki-server subsystem-disable -i pki-tomcat ocsp

インスタンスのインストールされたサブシステムをリスト表示するには、以下を実行します。

# pki-server subsystem-find -i instance_id

特定のサブシステムの状態を表示するには、次のコマンドを実行します。

# pki-server subsystem-find -i instance_id subsystem_id
2.2.4.3. pkidaemon コマンドラインツール

Red Hat Certificate System 用の別のプロセス管理ツールとして、pkidaemon ツールがあります。

pkidaemon {start|status} instance-type [instance_name]
  • pkidaemon status tomcat - システム上のすべての PKI インスタンスの PKI サブシステムのオン/オフ、ポート、URL などのステータス情報を提供します。
  • pkidaemon status tomcat instance_name - 特定のインスタンスの各 PKI サブシステムのオン/オフ、ポート、URL などのステータス情報を提供します。
  • pkidaemon start tomcat instance_name.service - systemctl を内部で使用します。

詳細は、pkidaemon の man ページを参照してください。

2.2.4.4. サブシステムの Web サービス URL の検索

CA、KRA、OCSP、TKS、および TPS サブシステムには、エージェント用の Web サービスページと、通常のユーザーおよび管理者が含まれます。これらの Web サービスには、サブシステムのセキュアなエンドユーザーのポートを介してサブシステムホストへの URL を開くことでアクセスできます。CA の場合の例を以下に示します。

https://server.example.com:8443/ca/services
注記

インスタンスのインターフェイス、URL、およびポートの全リストを取得するには、サービスのステータスを確認します。以下に例を示します。

pkidaemon status instance_name

各サブシステムの主な Web サービスページには、利用可能なサービスページの一覧があります。これらは以下の表に要約されています。特定のサービスにアクセスするには、適切なポートにアクセスし、適切なディレクトリーを URL に追加します。たとえば、CA のエンドエンティティー (通常のユーザー) の Web サービスにアクセスするには、以下を実行します。

https://server.example.com:8443/ca/ee/ca

DNS が設定されていない場合は、IPv4 アドレスまたは IPv6 アドレスを使用して、サービスページに接続できます。以下に例を示します。

https://192.0.2.1:8443/ca/services
https://[2001:DB8::1111]:8443/ca/services
注記

すべてのユーザーがサブシステムのエンドユーザーページにアクセスできます。ただし、エージェントまたは管理 Web サービスページにアクセスするには、エージェントまたは管理者の証明書を Web ブラウザーにインストールする必要があります。それ以外の場合は、Web サービスへの認証に失敗します。

表2.1 デフォルトの Web サービスページ
ポートSSL/TLS に使用クライアント認証に使用されます。クライアント認証の値が No のサービスは、クライアント認証を要求するように再設定できます。Yes または No のいずれかの値を持たないサービスは、クライアント認証を使用するように設定することはできません。Web ServicesWeb サービスの場所

Certificate Manager

8080

いいえ

 

エンドエンティティー

ca/ee/ca

8443

はい

いいえ

エンドエンティティー

ca/ee/ca

8443

はい

はい

エージェント

ca/agent/ca

8443

はい

いいえ

サービス

ca/services

8443

はい

いいえ

コンソール

pkiconsole https://host:port/ca

キーリカバリー認証局

8080

いいえ

 

エンドエンティティー

kra/ee/kra

8443

はい

いいえ

エンドエンティティー

kra/ee/kra

8443

はい

はい

エージェント

kra/agent/kra

8443

はい

いいえ

サービス

kra/services

8443

はい

いいえ

コンソール

pkiconsole https://host:port/kra

オンライン証明書ステータスマネージャー

8080

いいえ

 

エンドエンティティー

ocsp/ee/ocsp

8443

はい

いいえ

エンドエンティティー

ocsp/ee/ocsp

8443

はい

はい

エージェント

ocsp/agent/ocsp

8443

はい

いいえ

サービス

ocsp/services

8443

はい

いいえ

コンソール

pkiconsole https://host:port/ocsp

トークンキーサービス

8080

いいえ

 

エンドエンティティー

tks/ee/tks

8443

はい

いいえ

エンドエンティティー

tks/ee/tks

8443

はい

はい

エージェント

tks/agent/tks

8443

はい

いいえ

サービス

tks/services

8443

はい

いいえ

コンソール

pkiconsole https://host:port/tks

トークン処理システム

8080

いいえ

 

安全でないサービス

tps/tps

8443

はい

 

安全なサービス

tps/tps

8080

いいえ

 

Enterprise Security Client Phone Home

tps/phoneHome

8443

はい

 

Enterprise Security Client Phone Home

tps/phoneHome

8443

はい

はい

管理、エージェント、および Operator サービス

tps/ui

2.2.4.5. Certificate System コンソールの起動
重要

このコンソールは非推奨になりました。

CA、KRA、OCSP、および TKS サブシステムには、管理機能を実行するための Java インターフェイスがあります。KRA、OCSP、および TKS では、ユーザーおよびグループのログ設定や管理など、非常に基本的なタスクが含まれます。CA の場合は、証明書プロファイルの作成や公開の設定など、その他の設定が含まれます。

pkiconsole ユーティリティーを使用して SSL/TLS ポート経由でサブシステムインスタンスに接続すると、コンソールが開きます。このユーティリティーは、以下の形式を使用します。

pkiconsole https://server.example.com:admin_port/subsystem_type

subsystem_typecakraocsp、または tks に設定できます。たとえば、これにより KRA コンソールが開きます。

pkiconsole https://server.example.com:8443/kra

DNS が設定されていない場合は、IPv4 アドレスまたは IPv6 アドレスを使用してコンソールに接続できます。以下に例を示します。

https://192.0.2.1:8443/ca
https://[2001:DB8::1111]:8443/ca

2.3. Certificate System のアーキテクチャーの概要

べての Red Hat Certificate System サブシステム (CA、KRA、OCSP、TKS、TPS) は、異なるサービスを提供しますが共通のアーキテクチャーを共有しています。以下のアーキテクチャー図は、これらのすべてのサブシステムによって共有される共通のアーキテクチャーを示しています。

2.3.1. Java アプリケーションサーバー

Java アプリケーションサーバーは、サーバーアプリケーションを実行する Java フレームワークです。Certificate System は、Java アプリケーションサーバー内で実行されるように作られています。現在、サポートされている唯一の Java アプリケーションサーバーは Tomcat 8 です。他のアプリケーションサーバーのサポートは今後追加される可能性があります。詳細は、http://tomcat.apache.org/ を参照してください。

Certificate System の各インスタンスは Tomcat サーバーインスタンスです。Tomcat 設定は server.xml に保存されます。Tomcat 設定の詳細は、https://tomcat.apache.org/tomcat-8.0-doc/config/ を参照してください。

各 Certificate System サブシステム (CA や KRA など) は、Tomcat に Web アプリケーションとしてデプロイされます。Web アプリケーション設定は web.xml ファイルに保存され、Java Servlet 3.1 仕様で定義されます。詳細は、https://www.jcp.org/en/jsr/detail?id=340 を参照してください。

Certificate System の設定自体は CS.cfg に保存されます。

これらのファイルの場所は、「インスタンスのレイアウト」 を参照してください。

2.3.2. Java Security Manager

recommended box java security manager

Java サービスには、アプリケーションを実行するための安全でない操作と安全な操作を定義する Security Manager オプションがあります。サブシステムがインストールされると、Security Manager が自動的に有効になります。つまり、各 Tomcat インスタンスは Security Manager が実行されている状態で起動します。

pkispawn を実行し、独自の Tomcat セクションで pki_security_manager=false オプションを指定するオーバーライド設定ファイルを使用すると、Security Manager が無効になります。

以下の手順に従って、インストールされたインスタンスから Security Manager を無効にすることができます。

  1. まずインスタンスを停止します。

    # pki-server stop instance_name

    nuxwdog ウォッチドッグを使用している場合は以下のようになります。

    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
  2. /etc/sysconfig/instance_name ファイルを開き、SECURITY_MANAGER="false" を設定します。
  3. 保存したら、インスタンスを再起動します。

    # pki-server start instance_name

    nuxwdog ウォッチドッグを使用している場合は以下のようになります。

    # systemctl start pki-tomcatd-nuxwdog@instance_name.service

インスタンスを起動または再起動すると、pkidaemon によって次のファイルから Java セキュリティーポリシーが構築または再構築されます。

/usr/share/pki/server/conf/catalina.policy
/usr/share/tomcat/conf/catalina.policy
/var/lib/pki/$PKI_INSTANCE_NAME/conf/pki.policy
/var/lib/pki/$PKI_INSTANCE_NAME/conf/custom.policy

その後、/var/lib/pki/instance_name/conf/catalina.policy に保存されます。

2.3.3. インターフェイス

2.3.3.1. サーブレットインターフェイス

各サブシステムには、サブシステムのさまざまな部分との対話を可能にするインターフェイスが含まれています。すべてのサブシステムが共通の管理インターフェイスを共有し、エージェントに割り当てられたタスクを実行するエージェントインターフェイスがあります。CA サブシステムには、エンドエンティティーを PKI に登録することができるエンドエンティティーのインターフェイスがあります。OCSP Responder サブシステムには、エンドエンティティーとアプリケーションが現在の証明書失効ステータスをチェックできるエンドエンティティーのインターフェイスがあります。最後に、TPS には Operator インターフェイスがあります。

アプリケーションサーバーは接続エントリーポイントを提供しますが、Certificate System は各インターフェイスに固有のサーブレットを提供してインターフェイスを完了します。

各サブシステムのサーブレットは、対応する web.xml ファイルで定義されます。同じファイルは各サーブレットの URL と、サーブレットにアクセスするセキュリティー要件も定義します。詳細は、「Java アプリケーションサーバー」 を参照してください。

2.3.3.2. 管理インターフェイス
recommended box administrative interface

エージェントインターフェイスは、エージェントのエントリーポイントからの HTML フォームの送信を処理する Java サーブレットを提供します。エージェントサーブレットは、各フォーム送信で提供された情報に基づいて、証明書の承認、証明書の更新、証明書の失効の要求の編集と承認、証明書プロファイルの承認などのエージェントタスクを実行できるようにします。KRA サブシステムまたは TKS サブシステムのエージェントインターフェイス、または OCSP Responder はサブシステムに固有のものです。

非 TMS セットアップでは、エージェントインターフェイスは、CA から KRA への信頼できる接続の CIMC 間境界通信にも使用されます。この接続は SSL クライアント認証によって保護され、Trusted Managers と呼ばれる信頼済みの個別ロールによって区別されます。エージェントロールと同様、Trusted Manager (CIMC 間境界接続専用に作成された疑似ユーザー) は、SSL クライアント認証を受ける必要があります。ただし、エージェントのロールとは異なり、エージェント機能は提供されません。

TMS 設定では、CIMC 間境界通信は、TPS から CA、TPS から KRA、および TPS から TKS に送信されます。

2.3.3.3. エンドエンティティーインターフェイス
recommended box end entity interface

CA サブシステムでは、エンドエンティティーのインターフェイスは、エンドエンティティーエントリーポイントからの HTML フォームの送信を処理する Java サーブレットを提供します。フォーム送信から受け取った情報に基づいて、エンドエンティティーサーブレットにより、エンドエンティティーが証明書を登録、更新、独自の証明書を取り消します。OCSP Responder サブシステムの End-Entity インターフェイスは、OCSP 要求を許可および処理するための Java サーブレットを提供します。KRA、TKS、および TPS サブシステムは、End-Entity サービスを提供しません。

2.3.3.4. Operator インターフェイス
recommended box operator interface

オペレーターインターフェイスは、TPS サブシステムにのみあります。

2.3.4. REST インターフェイス

Representational state transfer (REST) は、HTTP を使用して Web サービスを定義し、整理する手段で、他のアプリケーションとの相互運用性を単純化します。Red Hat Certificate System は、サーバーのさまざまなサービスにアクセスするための REST インターフェイスを提供します。

Red Hat Certificate System の REST サービスは、RESTEasy フレームワークを使用して実装されます。RESTEasy は実際には Web アプリケーションのサーブレットとして実行されるため、RESTEasy の設定は、対応するサブシステムの web.xml にあります。RESTEasy の詳細は、http://resteasy.jboss.org/ を参照してください。

各 REST サービスは、個別の URL として定義されます。以下に例を示します。

  • CA 証明書サービス: http://<host_name>:[rep]<port>/ca/rest/certs/
  • KRA キーサービス: http://<host_name>:[rep]<port>/kra/rest/agent/keys/
  • TKS ユーザーサービス: http://<host_name>:[rep]<port>/tks/rest/admin/users/
  • TPS グループサービス: http://<host_name>:[rep]<port>/tps/rest/admin/groups/

一部のサービスは、プレーンの HTTP 接続を使用してアクセスできますが、セキュリティーに HTTPS 接続が必要になる場合があります。

REST 操作は HTTP メソッドとして指定されます (たとえば、GET、PUT、POST、DELETE)。たとえば、クライアントが GET /ca/rest/users リクエストを送信する CA ユーザーを取得する場合は、次のコマンドを実行します。

REST リクエストおよび応答メッセージは、XML または JSON 形式で送信できます。以下に例を示します。

{
	"id":"admin",
	"UserID":"admin",
	"FullName":"Administrator",
	"Email":"admin@example.com",
	...
}

CLI、Web UI、または汎用 REST クライアントなどのツールを使用して、REST インターフェイスにアクセスできます。Certificate System は、プログラムでサービスにアクセスするための Java、Python、および JavaScript ライブラリーも提供します。

REST インターフェイスは、2 種類の認証方法をサポートします。

  • ユーザー名およびパスワード
  • クライアント証明書

各サービスに必要な認証方法は、/usr/share/pki/ca/conf/auth-method.properties で定義されます。

REST インターフェイスでは、サービスへのアクセスに特定のパーミッションが必要になる場合があります。パーミッションは LDAP の ACL リソースで定義されます。REST インターフェイスは、/usr/share/pki/<subsystem>/conf/acl.properties の ACL リソースにマッピングされます。

REST インターフェイスの詳細は、http://www.dogtagpki.org/wiki/REST を参照してください。

2.3.5. JSS

Java Security Services (JSS) は、NSS が実行する暗号化操作の Java インターフェイスを提供します。Certificate System アーキテクチャーの JSS 以降は、Java Virtual Machine (JVM) 内からネイティブシステムライブラリーへのアクセスを提供する Java Native Interface (JNI) で構築されます。この設計により、システムの一部として配布される NSS などの FIPS で承認された暗号化プロバイダーを使用できます。JSS は、NSS でサポートされるセキュリティー標準および暗号化技術の多くに対応しています。JSS は、ASN.1 タイプと BER-DER エンコードの純粋な Java インターフェイスも提供します。

2.3.6. Tomcatjss

Red Hat Certificate System の Java ベースのサブシステムは、Tomcat Server HTTP エンジンと JSS 間のブリッジとして tomcatjss と呼ばれる単一の JAR ファイルを使用します。これは、NSS が実行するセキュリティー操作の Java インターフェイスです。Tomcatjss は、Tomcat の Java Security Services (JSS) を使用した Java Secure Socket Extension (JSSE) 実装です。

Tomcatjss は、TLS を使用して TLS ソケットを作成するために必要なインターフェイスを実装します。tomcatjss が実装するソケットファクトリーは、以下に挙げるさまざまなプロパティーを使用して、ソケットをリッスンして tomcat に戻ります。tomcatjss 自体は、Java JSS システムを利用して、最終的にマシン上のネイティブ NSS 暗号化サービスと通信します。

Tomcat サーバーおよび Certificate System クラスが読み込まれると、tomcatjss が読み込まれます。ロードプロセスの説明を以下に示します。

  1. サーバーが起動している。
  2. Tomcat は、Certificate System インストールにリスニングソケットを作成する必要がある場所に移動します。
  3. server.xml ファイルが処理されます。このファイルの設定は、Tomcatjs が実装するソケットファクトリーを使用するようシステムに指示します。
  4. Tomcajss は要求される各ソケットについて、ソケットの作成時に含まれる属性を読み取り、処理します。結果として生成されるソケットは、それらのパラメーターによって要求されているために動作します。
  5. サーバーが稼働したら、Tomcat ベースの Certificate System への着信接続を待機する必要なリッスンソケットのセットがあります。

ソケットが起動時に作成されると、Tomcat は、基礎となる JSS セキュリティーサービスと実際に処理される Certificate System の 最初 のエンティティーになります。最初のリスニングソケットが処理されると、後で使用できるように JSS のインスタンスが作成されます。

server.xml ファイルの詳細は、「Tomcat Engine および Web サービスの設定ファイル」 を参照してください。

2.3.7. PKCS #11

Public-Key Cryptography Standard (PKCS) #11 は、暗号化情報を保持するデバイスと通信し、暗号化操作を実行するのに使用する API を指定します。Certificate System は、PKCS #11 に対応しているため、Certificate System は、さまざまなハードウェアおよびソフトウェアデバイスと互換性があります。

Certificate System サブシステムインスタンスで、少なくとも 1 つの PKCS #11 モジュールが利用可能である必要があります。PKCS #11 モジュール (暗号化モジュールまたは暗号化サービスプロバイダーとも呼ばれる) は、暗号化や復号などの暗号化サービスを管理します。PKCS #11 モジュールは、ハードウェアまたはソフトウェアのいずれかで実装できる暗号化デバイスのドライバーに類似しています。Certificate System には、ビルトイン PKCS #11 モジュールが含まれており、サードパーティーモジュールに対応します。

PKCS #11 モジュールには、常に 1 つ以上のスロットがあり、スマートカードなどの物理リーダーの物理ハードウェアスロットとして、またはソフトウェアの概念スロットとして実装できます。PKCS #11 モジュールの各スロットには、トークンを追加できます。このトークンは、暗号化サービスを実際に提供し、必要に応じて証明書と鍵を保存するハードウェアまたはソフトウェアのデバイスです。

pkcs11

Certificate System は、内部外部 の 2 種類のトークンを定義します。内部トークンは、証明書トラストアンカーを保存するために使用されます。外部トークンは、Certificate System サブシステムに属するキーペアと証明書を保存するために使用されます。

2.3.7.1. NSS ソフトトークン (内部トークン)
注記

Certificate System は、証明書のトラストアンカーを保存するために NSS ソフトトークンを使用します。

NSS Soft トークンは、内部トークンまたはソフトウェアトークンとも呼ばれます。ソフトウェアトークンは 2 つのファイルで設定されており、通常は証明書データベース (cert9.db) とキーデータベース (key4.db) と呼ばれる 2 つのファイルで構成されます。このファイルは、Certificate System サブシステムの設定時に作成されます。これらのセキュリティーデータベースは、/var/lib/pki/ instance_name/alias ディレクトリーにあります。

NSS ソフトトークンが提供する暗号化モジュールは、Certificate System に含まれます。

  • デフォルトの内部 PKCS #11 モジュールには、2 つのトークンが含まれています。

    • 暗号化、復号化、ハッシュなどのすべての暗号化操作を実行する内部暗号化サービストークン。
    • 内部キーストレージトークン ("証明書 DB トークン")。このトークンは、証明書および鍵を保存する証明書および鍵データベースファイルをすべて処理します。
  • FIPS 140 モジュールこのモジュールは、暗号化モジュール実装用の FIPS 140 政府標準に準拠します。FIPS 140 モジュールには、暗号化操作と証明書およびキーデータベースファイルとの通信の両方を処理する単一の組み込み FIPS 140 証明書データベーストークンが含まれています。

NSS ソフトトークンに証明書をインポートする方法の具体的な手順は、14章証明書/キー暗号トークンの管理 を参照してください。

Network Security Services (NSS) の詳細は、同じ名前の Mozilla Developer の Web ページを参照してください。

2.3.7.2. ハードウェアセキュリティーモジュール (HSM、外部トークン)
注記

Certificate System は、HSM を使用して、Certificate System サブシステムに属する鍵のペアと証明書を格納します。

PKCS #11 モジュールは、Certificate System で使用できます。サブシステムで外部ハードウェアトークンを使用するには、サブシステムの設定前に PKCS #11 モジュールを読み込み、新しいトークンをサブシステムで利用できるようになります。

利用可能な PKCS #11 モジュールは、サブシステムの pkcs11.txt データベースで追跡されています。modutil ユーティリティーは、署名操作に使用するハードウェアアクセラレーターのインストールなど、システムへの変更時にこのファイルを修正するために使用されます。modutil の詳細は、Mozilla Developer の Web ページで Network Security Services (NSS) を参照してください。

PKCS #11 ハードウェアデバイスは、ハードウェアトークンに保存されている情報に、主要なバックアップと復旧機能を提供します。トークンから鍵を取得する方法は、PKCS #11 ベンダーのドキュメントを参照してください。

証明書のインポートおよび HSM の管理方法の方法は、14章証明書/キー暗号トークンの管理 を参照してください。

サポート対象のハードウェアセキュリティーモジュールは、「サポート対象のハードウェアセキュリティーモジュール」 に記載されています。

2.3.8. セキュリティードメイン

セキュリティードメイン は PKI サービスのレジストリーです。CA などのサービスは、これらのドメインに独自の情報を登録するため、PKI サービスのユーザーはレジストリーを確認して他のサービスを検索できます。RHCS のセキュリティードメインサービスは、Certificate System サブシステムの PKI サービスの登録と、共有信頼ポリシーのセットの両方を管理します。

詳細は、「セキュリティードメインの計画」 を参照してください。

2.3.9. パスワードとウォッチドッグ (nuxwdog)

デフォルトの設定では、RHCS サブシステムインスタンスはクライアントとして機能し、LDAP 内部データベース (TLS クライアント認証が設定されていない限り、代わりに証明書が認証に使用されます、NSS トークンデータベース、またはパスワードを持つ HSM などの他のサービスに認証する必要があります。管理者は、インストール設定時にこのパスワードを設定するように求められます。このパスワードは、<instance_dir>/conf/password.conf ファイルに書き込まれます。同時に、識別文字列は、パラメーター cms.passwordlist の一部としてメインの設定ファイル CS.cfg に保存されます。

設定ファイル CS.cfg は Red Hat Enterprise Linux により保護され、PKI 管理者のみがアクセスできます。パスワードは CS.cfg に保存されません。

インストール時に、インストーラーは内部ソフトウェアトークンまたはハードウェア暗号化トークンのいずれかを選択してログインします。これらのトークンへのログインパスフレーズは、password.conf にも記述されます。

設定では、後でパスワードを password.conf に配置することもできます。LDAP 公開は、公開ディレクトリーに対して新たに設定された Directory Manager パスワードが password.conf に送信される一例です。

Nuxwdog (watchdog) は、サーバープログラムを起動、停止、監視、および再設定するために使用される軽量な補助デーモンプロセスです。サーバーを起動するためにユーザーにパスワードの入力を求める必要がある場合に最も役立ちます。これは、これらのパスワードをカーネルキーリングに安全にキャッシュし、サーバーがクラッシュした場合に自動的に再起動できるようにするためです。

注記

Nuxwdog は、唯一許可されるウォッチドッグサービスです。

インストールが完了したら、password.conf ファイルを完全に削除できます。再起動すると、nuxwdog ウォッチドッグプログラムは、cms.passwordlist パラメーター (HSM が使用されている場合は cms.tokenList) を要求対象のパスワードのリストとして使用し、管理者に必要なパスワードの入力を要求します。その後、パスワードは nuxwdog によってカーネルキーリングにキャッシュされ、サーバークラッシュからの自動リカバリーが可能になります。制御されていないシャットダウン (クラッシュ) が原因で、この自動リカバリー (自動サブシステム再起動) が発生します。管理者が制御したシャットダウンの場合は、管理者がパスワードを再度要求します。

ウォッチドッグサービスを使用する場合は、RHCS インスタンスの起動と停止が異なります。詳細は、「Certificate System の Watchdog サービスの使用」 を参照してください。

詳細は、「システムパスワードの管理」 を参照してください。

2.3.10. 内部 LDAP データベース

Red Hat Certificate System は、証明書、要求、ユーザー、ロール、ACL、およびその他のさまざまな内部情報などの情報を格納するための内部データベースとして Red Hat Directory Server (RHDS) を採用しています。Certificate System は、パスワードを使用して内部 LDAP データベースと通信するか、SSL 認証により安全な方法で通信します。

Certificate System インスタンスと Directory Server 間で証明書ベースの認証が必要な場合は、これら 2 つのエンティティー間で信頼を設定する手順を実行することが重要です。このような Certificate System インスタンスをインストールするには、適切な pkispawn オプションも必要です。

詳細は、「Red Hat Directory Server のインストール」 を参照してください。

2.3.11. Security-enhanced Linux (SELinux)

SELinux は、承認されていないアクセスと改ざんを制限するためにシステム全体で実施される、必須のアクセス制御ルールのコレクションです。SELinux の詳細は、Red Hat Enterprise Linux 8 の SELinux 使用ガイド を参照してください。

基本的に、SELinux はシステム上の オブジェクト を識別します。これは、ファイル、ディレクトリー、ユーザー、プロセス、ソケット、または Linux ホスト上その他のリソースになります。これらのオブジェクトは Linux API オブジェクトに対応します。各オブジェクトは セキュリティーコンテキスト にマッピングされ、オブジェクトのタイプと、Linux サーバーでの機能が可能になります。

オブジェクトはドメインにグループ化でき、各ドメインには適切なルールが割り当てられます。各セキュリティーコンテキストには、実行できる操作、アクセスできるリソース、および所有するアクセス許可に制限を設定するルールがあります。

Certificate System の SELinux ポリシーは、標準のシステムの SELinux ポリシーに組み込まれています。これらの SELinux ポリシーは、Certificate System が使用するすべてのサブシステムとサービスに適用されます。SELinux で Certificate System を実行すると、Certificate System で作成および維持される情報のセキュリティーが強化されます。

図2.1 CA SELinux ポートポリシー

selinux port

Certificate System SELinux ポリシーは、すべてのサブシステムインスタンスの SELinux 設定を定義します。

  • 各サブシステムインスタンスのファイルおよびディレクトリーには、特定の SELinux コンテキストのラベルが付けられます。
  • 各サブシステムインスタンスのポートは、特定の SELinux コンテキストでラベル付けされます。
  • すべての Certificate System プロセスは、サブシステム固有のドメイン内で制限されます。
  • 各ドメインには、ドメインに承認されたアクションを定義する特定のルールがあります。
  • SELinux ポリシーに指定されていないアクセスは、Certificate System インスタンスに対して拒否されます。

Certificate System の場合、各サブシステムは SELinux オブジェクトとして扱われ、各サブシステムには一意のルールが割り当てられます。定義済みの SELinux ポリシーを使用すると、Certificate System オブジェクトが Enforcing モードで SELinux を設定して実行できます。

pkispawn が実行されるたびに、Certificate System サブシステム、そのサブシステムに関連付けられたファイル、およびポートには、必要な SELinux コンテキストのラベルが付けられます。特定のサブシステムが pkidestroy を使用して削除されると、このコンテキストは削除されます。

SELinux ポリシーの中央定義は pki_tomcat_t ドメインです。Certificate System インスタンスは Tomcat サーバーであり、pki_tomcat_t ドメインは標準の tomcat_t Tomcat ドメインのポリシーを拡張します。サーバー上のすべての Certificate System インスタンスが同じドメインを共有します。

各 Certificate System プロセスが開始すると、最初に制限のないドメイン (unconfined_t) で実行され、次に pki_tomcat_t ドメインに移行します。その後、このプロセスには、pki_tomcat_log_t というラベルが付けられたログファイルへの書き込みアクセス、pki_tomcat_etc_rw_t というラベルが付いた設定ファイルへの読み書きアクセス、http_port_t ポートのオープンおよび書き込み機能など、特定のアクセスパーミッションが設定されます。

SELinux モードは、Enforcing から Permissive に変更できますが、これは推奨されません。

2.3.12. セルフテスト

Red Hat Certificate System は、起動時またはオンデマンド、あるいはその両方で PKI システムの整合性をチェックできるセルフテストフレームワークを提供します。クリティカルでない自己テストに失敗すると、メッセージはログファイルに保存されますが、重大なセルフテストに失敗すると、メッセージはログファイルに保存されますが、Certificate System サブシステムは適切にシャットダウンします。管理者は、起動時にセルフテストレポートを確認する場合、サブシステムの起動時にセルフテストログを監視する必要があります。起動後にログを表示することもできます。

セルフテストの失敗によりサブシステムがシャットダウンすると、自動的に無効になります。これは、サブシステムが部分的に実行されなくなり、誤解を招く応答を生成するために行われます。問題が解決されると、サーバーで以下のコマンドを実行してサブシステムを再度有効にできます。

# pki-server subsystem-enable <subsystem>

セルフテストの設定方法の詳細は、「セルフテストの設定」 を参照してください。

2.3.13. Logs

Certificate System サブシステムは、管理、サーバーがサポートするプロトコルを使用した通信、およびサブシステムで使用されるその他のさまざまなプロセスなどのアクティビティーに関連するイベントを記録するログファイルを作成します。サブシステムインスタンスが実行中に、それが管理するすべてのコンポーネントの情報およびエラーメッセージのログを保持します。また、Apache および Tomcat の Web サーバーはエラーを生成し、ログにアクセスします。

各サブシステムインスタンスは、インストール、監査、およびその他のログに記録された機能に対する独自のログファイルを維持します。

ログプラグインモジュールは、Java™ クラスとして実装され、設定フレームワークに登録されるリスナーです。

監査ログを除くすべてのログファイルとローテーションされたログファイルは、pkispawn によるインスタンスの作成時に、pki_subsystem_log_path に指定されているすべてのディレクトリーに配置されます。

通常の監査ログは他のログタイプとともにログディレクトリーに置かれ、署名された監査ログは /var/log/pki/ instance_name/subsystem_name/signedAudit に書き込まれます。ログのデフォルトの場所を変更するには、設定を変更してください。

インストール中のログ設定の詳細および追加情報は、17章ログの設定 を参照してください。

インストール後のログ管理の詳細は、Red Hat Certificate System 管理ガイドサブシステムログの設定 セクションを参照してください。

2.3.13.1. 監査ログ

監査ログには、記録可能なイベントとして設定された選択可能なイベントのレコードが含まれます。監査ログを整合性チェック目的で署名するように設定することもできます。

注記

監査レコードは、「監査の保持」 に指定された監査保持ルールに従って維持する必要があります。

2.3.13.2. システムログ

このログは system です。サーバーへの要求に関する情報 (HTTP および HTTPS のすべてのリクエスト) とサーバーからの応答を記録します。このログに記録される情報には、サーバーにアクセスしたクライアントマシンの IP アドレス (IPv4 と IPv6 の両方)、検索、追加、編集などの実行される操作、返されたエントリーの数などのアクセスの結果が含まれます。

id_number processor - [date:time] [number_of_operations] [result] servlet: message

例2.1 TKS システムログ

10439.http-13443-Processor25 - [19/May/{YEAR}:14:16:51 CDT] [11] [3] UGSubsystem: Get User Error User not found

このログはデフォルトで有効になっています。

2.3.13.3. トランザクションログ

このログは transactions で、サブシステムに実行された操作または送信された操作をすべて記録します。

id_number.processor - [date:time] [number_of_operations] [result] servlet: message

これらのメッセージは、証明書要求を受信する CA、キーをアーカイブまたは取得する KRA、新しい TPS を登録する TKS など、証明書サービスに固有のものです。このログを使用して、承認されていないアクセスやアクティビティーを検出することもできます。

例2.2 トランザクションログ

11438.http-8443-Processor25 - [27/May/{YEAR}:07:56:18 CDT] [1] [1] archival reqID 4 fromAgent agentID: CA-server.example.com-8443 authenticated by noAuthManager is completed DN requested: UID=recoverykey,E=recoverykey@email.com,CN=recover key serial number: 0x3

このログはデフォルトで有効になっています。

2.3.13.4. デバッグログ

デフォルトで有効になっているデバッグログは、さまざまな程度と種類の情報とともに、すべてのサブシステムに対して維持されます。

デバッグログには、実行されるプラグインとサーブレット、接続情報、サーバーの要求と応答のメッセージなど、サブシステムによって実行されるすべての操作に関する非常に具体的な情報が含まれています。

デバッグログに記録されるサービスの一般的なタイプについては、ログに記録されるサービス で簡単に説明しています。これらのサービスには、認可要求、証明書要求の処理、証明書ステータスの確認、鍵のアーカイブおよび復元、Web サービスへのアクセスが含まれます。

サブシステムのプロセスに関する詳細情報の CA、OCSP、KRA、および TKS のデバッグログ。各ログエントリーの形式は以下のとおりです。

[date:time] [processor]: servlet: message

メッセージ はサブシステムから返されたメッセージになるか、サブシステムに送信された値を含めることができます。

たとえば、TKS は、LDAP サーバーに接続するためにこのメッセージを記録します。

[10/Jun/{YEAR}:05:14:51][main]: Established LDAP connection using basic authentication to host localhost port 389 as cn=Directory Manager

processormain で、message は LDAP 接続に関するサーバーからメッセージであり、サーブレットはありません。

一方、CA は、証明書操作およびサブシステム接続に関する情報を記録します。

[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.requestowner$ value=KRA-server.example.com-8443

この場合、プロセッサー は CA のエージェントポート上の HTTP プロトコルですが、プロファイルを処理するサーブレットを指定し、profile パラメーター (リクエストのサブシステム所有者) とその値 (KRA が要求を開始した) を示す メッセージ が含まれます。

例2.3 CA 証明書要求ログメッセージ

[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.profileapprovedby$ value=admin
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.cert_request$ value=MIIBozCCAZ8wggEFAgQqTfoHMIHHgAECpQ4wDDEKMAgGA1UEAxMBeKaBnzANBgkqhkiG9w0BAQEFAAOB...
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.profile$ value=true
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.cert_request_type$ value=crmf
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.requestversion$ value=1.0.0
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.req_locale$ value=en
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.requestowner$ value=KRA-server.example.com-8443
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.dbstatus$ value=NOT_UPDATED
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.subject$ value=uid=jsmith, e=jsmith@example.com
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.requeststatus$ value=begin
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.auth_token.user$ value=uid=KRA-server.example.com-8443,ou=People,dc=example,dc=com
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.req_key$ value=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDreuEsBWq9WuZ2MaBwtNYxvkLP^M
				HcN0cusY7gxLzB+XwQ/VsWEoObGldg6WwJPOcBdvLiKKfC605wFdynbEgKs0fChV^M
				k9HYDhmJ8hX6+PaquiHJSVNhsv5tOshZkCfMBbyxwrKd8yZ5G5I+2gE9PUznxJaM^M
				HTmlOqm4HwFxzy0RRQIDAQAB
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.auth_token.authmgrinstname$ value=raCertAuth
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.auth_token.uid$ value=KRA-server.example.com-8443
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.auth_token.userid$ value=KRA-server.example.com-8443
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.requestor_name$ value=
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.profileid$ value=caUserCert
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.auth_token.userdn$ value=uid=KRA-server.example.com-4747,ou=People,dc=example,dc=com
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.requestid$ value=20
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.auth_token.authtime$ value=1212782378071
				[06/Jun/{YEAR}:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.req_x509info$ value=MIICIKADAgECAgEAMA0GCSqGSIb3DQEBBQUAMEAxHjAcBgNVBAoTFVJlZGJ1ZGNv^M
				bXB1dGVyIERvbWFpbjEeMBwGA1UEAxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4X^M
				DTA4MDYwNjE5NTkzOFoXDTA4MTIwMzE5NTkzOFowOzEhMB8GCSqGSIb3DQEJARYS^M
				anNtaXRoQGV4YW1wbGUuY29tMRYwFAYKCZImiZPyLGQBARMGanNtaXRoMIGfMA0G^M
				CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDreuEsBWq9WuZ2MaBwtNYxvkLPHcN0cusY^M
				7gxLzB+XwQ/VsWEoObGldg6WwJPOcBdvLiKKfC605wFdynbEgKs0fChVk9HYDhmJ^M
				8hX6+PaquiHJSVNhsv5tOshZkCfMBbyxwrKd8yZ5G5I+2gE9PUznxJaMHTmlOqm4^M
				HwFxzy0RRQIDAQABo4HFMIHCMB8GA1UdIwQYMBaAFG8gWeOJIMt+aO8VuQTMzPBU^M
				78k8MEoGCCsGAQUFBwEBBD4wPDA6BggrBgEFBQcwAYYuaHR0cDovL3Rlc3Q0LnJl^M
				ZGJ1ZGNvbXB1dGVyLmxvY2FsOjkwODAvY2Evb2NzcDAOBgNVHQ8BAf8EBAMCBeAw^M
				HQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMCQGA1UdEQQdMBuBGSRyZXF1^M
				ZXN0LnJlcXVlc3Rvcl9lbWFpbCQ=

同様に、OCSP には OCSP 要求情報が表示されます。

[07/Jul/{YEAR}:06:25:40][http-11180-Processor25]: OCSPServlet: OCSP Request:
				[07/Jul/{YEAR}:06:25:40][http-11180-Processor25]: OCSPServlet:
				MEUwQwIBADA+MDwwOjAJBgUrDgMCGgUABBSEWjCarLE6/BiSiENSsV9kHjqB3QQU
2.3.13.5. インストールログ

すべてのサブシステムはインストールログを保持します。

初期インストールまたは pkispawn を使用した追加インスタンスの作成によってサブシステムが作成されるたびに、インストールからの完全なデバッグ出力 (エラーを含む) を含むインストールファイルが作成され、インストールが成功した場合はインスタンスの設定インターフェイスへの URL と PIN も作成されます。ファイルは、インスタンスの /var/log/pki/ ディレクトリーに pki-subsystem_name-spawn.timestamp.log 形式の名前で作成されます。

インストールログの各行は、インストールプロセスのステップに従います。

例2.4 CA インストールログ

    ==========================================================================
                                INSTALLATION SUMMARY
    ==========================================================================

      Administrator's username:             caadmin
      Administrator's PKCS #12 file:
            /root/.dogtag/pki-tomcat/ca_admin_cert.p12

      Administrator's certificate nickname:
            caadmin
      Administrator's certificate database:
            /root/.dogtag/pki-tomcat/ca/alias

      To check the status of the subsystem:
            systemctl status pki-tomcatd@pki-tomcat.service

      To restart the subsystem:
            systemctl restart pki-tomcatd@pki-tomcat.service

      The URL for the subsystem is:
            https://localhost.localdomain:8443/ca

      PKI instances will be enabled upon system boot

    ==========================================================================
2.3.13.6. Tomcat のエラーとアクセスログ

CA、KRA、OCSP、TKS、および TPS サブシステムは、それらのエージェントおよびエンドエンティティーのインターフェイスに Tomcat Web サーバーインスタンスを使用します。

エラーログとアクセスログは、Certificate System とともにインストールされ、HTTP サービスを提供する Tomcat Web サーバーによって作成されます。エラーログには、サーバーが検出した HTTP エラーメッセージが含まれます。アクセスログは、HTTP インターフェイスを介したアクセスアクティビティーをリスト表示します。

Tomcat によって作成されたログ:

  • admin.timestamp
  • catalina.timestamp
  • catalina.out
  • host-manager.timestamp
  • localhost.timestamp
  • localhost_access_log.timestamp
  • manager.timestamp

これらのログは、Certificate System 内では利用できません。それらは Apache または Tomcat 内でのみ設定可能です。これらのログの設定に関する詳細は、Apache ドキュメントを参照してください。

2.3.13.7. セルフテストログ

セルフテストのログは、サーバーの起動時またはセルフテストを手動で実行するときに取得した情報を記録します。このログを開くとテストを表示できます。このログはコンソールを介して設定できません。このログは、CS.cfg ファイルの設定を変更してのみ設定できます。このセクションのログに関する情報は、このログには関係しません。セルフテストの詳細は、「セルフテスト」 を参照してください。

2.3.13.8. journalctl ログ

Certificate System インスタンスを起動すると、ログサブシステムがセットアップされて有効になるまでに少し時間がかかります。この間に、ログの内容は標準出力に書き込まれます。これは systemd でキャプチャーされ、journalctl ユーティリティーを介して公開されます。

これらのログを表示するには、以下のコマンドを実行します。

# journalctl -u pki-tomcatd@instance_name.service

nuxwdog サービスを使用している場合は、以下を実行します。

# journalctl -u pki-tomcatd-nuxwdog@instance_name.service

多くの場合、インスタンスの起動時にこれらのログを監視すると便利です (たとえば、起動時にセルフテストが失敗した場合)。そのためには、インスタンスを起動する前に、別のコンソールでこれらのコマンドを実行します。

# journalctl -f -u pki-tomcatd@instance_name.service

nuxwdog サービスを使用している場合は、以下を実行します。

# journalctl -f -u pki-tomcatd-nuxwdog@instance_name.service

2.3.14. インスタンスのレイアウト

各 Certificate System インスタンスは、多数のファイルによって異なります。その一部はインスタンス固有のフォルダーにありますが、他のサーバーインスタンスと共有される共通フォルダーに置かれています。

たとえば、サーバー設定ファイルはインスタンス固有の /etc/pki/ instance_name/server.xml に保存されますが、CA サーブレットは /usr/share/pki/ca/webapps/ca/WEB-INF/web.xml で定義されています。これはシステム上のすべてのサーバーインスタンスで共有されます。

2.3.14.1. Certificate System のファイルおよびディレクトリーの場所

Certificate System サーバーは、1 つ以上の Certificate System サブシステムで構成される Tomcat インスタンスです。Certificate System サブシステムは、特定の PKI 機能を提供する Web アプリケーションです。一般的な共有サブシステム情報は、再配置不可能な RPM 定義の共有ライブラリー、Java アーカイブファイル、バイナリー、およびテンプレートに含まれています。これらは固定された場所に保存されます。

ディレクトリーはインスタンスに固有のものでり、インスタンス名に関連付けられています。これらの例では、インスタンス名は pki-tomcat です。実際の値は、pkispawn を使用してサブシステムが作成されるときに指定された値になります。

ディレクトリーには、カスタマイズされた設定ファイルとテンプレート、プロファイル、証明書データベース、およびサブシステムの他のファイルが含まれます。

表2.2 Tomcat インスタンス情報
設定

メインディレクトリー

/var/lib/pki/pki-tomcat

設定ディレクトリー

/etc/pki/pki-tomcat

設定ファイル

/etc/pki/pki-tomcat/server.xml

/etc/pki/pki-tomcat/password.conf

セキュリティーデータベース

/var/lib/pki/pki-tomcat/alias

サブシステム証明書

SSL サーバー証明書

サブシステム証明書

ログファイル

/var/log/pki/pki-tomcat

Web サービスファイル

/usr/share/pki/server/webapps/ROOT - メインページ

/usr/share/pki/server/webapps/pki/admin - 管理テンプレート

/usr/share/pki/server/webapps/pki/js - JavaScript ライブラリー

注記

/var/lib/pki/ instance_name/conf/ ディレクトリーは、/etc/pki/ instance_name/ ディレクトリーへのシンボリックリンクです。

2.3.14.2. CA サブシステム情報

ディレクトリーはインスタンスに固有のものでり、インスタンス名に関連付けられています。これらの例では、インスタンス名は pki-tomcat です。実際の値は、pkispawn を使用してサブシステムが作成されるときに指定された値になります。

表2.3 CA サブシステム情報
設定

メインディレクトリー

/var/lib/pki/pki-tomcat/ca

設定ディレクトリー

/etc/pki/pki-tomcat/ca

設定ファイル

/etc/pki/pki-tomcat/ca/CS.cfg

サブシステム証明書

CA 署名証明書

OCSP 署名証明書 (CA の内部 OCSP サービス用)

監査ログ署名証明書

ログファイル

/var/log/pki/pki-tomcat/ca

ログのインストール

/var/log/pki/pki-ca-spawn.YYYYMMDDhhmmss.log

プロファイルファイル

/var/lib/pki/pki-tomcat/ca/profiles/ca

メール通知テンプレート

/var/lib/pki/pki-tomcat/ca/emails

Web サービスファイル

/usr/share/pki/ca/webapps/ca/agent: エージェントサービス

/usr/share/pki/ca/webapps/ca/admin: 管理サービス

/usr/share/pki/ca/webapps/ca/ee: エンドユーザーサービス

2.3.14.3. KRA サブシステム情報

ディレクトリーはインスタンスに固有のものでり、インスタンス名に関連付けられています。これらの例では、インスタンス名は pki-tomcat です。実際の値は、pkispawn を使用してサブシステムが作成されるときに指定された値になります。

表2.4 KRA サブシステム情報
設定

メインディレクトリー

/var/lib/pki/pki-tomcat/kra

設定ディレクトリー

/etc/pki/pki-tomcat/kra

設定ファイル

/etc/pki/pki-tomcat/kra/CS.cfg

サブシステム証明書

トランスポート証明書

ストレージ証明書

監査ログ署名証明書

ログファイル

/var/log/pki/pki-tomcat/kra

ログのインストール

/var/log/pki/pki-kra-spawn.YYYYMMDDhhmmss.log

Web サービスファイル

/usr/share/pki/kra/webapps/kra/agent: エージェントサービス

/usr/share/pki/kra/webapps/kra/admin: 管理サービス

2.3.14.4. OCSP サブシステム情報

ディレクトリーはインスタンスに固有のものでり、インスタンス名に関連付けられています。これらの例では、インスタンス名は pki-tomcat です。実際の値は、pkispawn を使用してサブシステムが作成されるときに指定された値になります。

表2.5 OCSP サブシステム情報
設定

メインディレクトリー

/var/lib/pki/pki-tomcat/ocsp

設定ディレクトリー

/etc/pki/pki-tomcat/ocsp

設定ファイル

/etc/pki/pki-tomcat/ocsp/CS.cfg

サブシステム証明書

OCSP 署名証明書

監査ログ署名証明書

ログファイル

/var/log/pki/pki-tomcat/ocsp

ログのインストール

/var/log/pki/pki-ocsp-spawn.YYYYMMDDhhmmss.log

Web サービスファイル

/usr/share/pki/ocsp/webapps/ocsp/agent: エージェントサービス

/usr/share/pki/ocsp/webapps/ocsp/admin: 管理サービス

2.3.14.5. TKS サブシステム情報

ディレクトリーはインスタンスに固有のものでり、インスタンス名に関連付けられています。これらの例では、インスタンス名は pki-tomcat です。実際の値は、pkispawn を使用してサブシステムが作成されるときに指定された値になります。

表2.6 TKS サブシステム情報
設定

メインディレクトリー

/var/lib/pki/pki-tomcat/tks

設定ディレクトリー

/etc/pki/pki-tomcat/tks

設定ファイル

/etc/pki/pki-tomcat/tks/CS.cfg

サブシステム証明書

監査ログ署名証明書

ログファイル

/var/log/pki/pki-tomcat/tks

ログのインストール

/var/log/pki/pki-tomcat/pki-tks-spawn.YYYYMMDDhhmmss.log

2.3.14.6. TPS サブシステム情報

ディレクトリーはインスタンスに固有のものでり、インスタンス名に関連付けられています。これらの例では、インスタンス名は pki-tomcat です。実際の値は、pkispawn を使用してサブシステムが作成されるときに指定された値になります。

表2.7 TPS サブシステム情報
設定

メインディレクトリー

/var/lib/pki/pki-tomcat/tps

設定ディレクトリー

/etc/pki/pki-tomcat/tps

設定ファイル

/etc/pki/pki-tomcat/tps/CS.cfg

サブシステム証明書

監査ログ署名証明書

ログファイル

/var/log/pki/pki-tomcat/tps

ログのインストール

/var/log/pki/pki-tps-spawn.YYYYMMDDhhhmmss.log

Web サービスファイル

/usr/share/pki/tps/webapps/tps - TPS サービス

2.3.14.7. 共有 Certificate System サブシステムファイルの場所

サーバー全般操作のために、すべての Certificate System サブシステムインスタンスで使用されるディレクトリーがあります (表2.8「サブシステムファイルの場所」 に記載されています)。

表2.8 サブシステムファイルの場所
ディレクトリーの場所内容

/usr/share/pki

Certificate System インスタンスの作成に使用する一般的なファイルとテンプレートが含まれます。すべてのサブシステムの共有ファイルとともに、サブディレクトリーにサブシステム固有のファイルがあります。

  • pki/ca (CA)
  • pki/kra (KRA)
  • pki/ocsp (OCSP)
  • pki/tks (TKS)
  • pki/tps (TPS)

/usr/bin

Certificate System サブシステムが共有する pkispawn および pkidestroy インスタンス設定スクリプトおよびツール (Java、ネイティブ、およびセキュリティー) が含まれます。

/usr/share/java/pki

ローカルの Tomcat Web アプリケーションが共有し、Certificate System サブシステムで共有される Java アーカイブファイルが含まれます。

2.4. PKI (Certificate System あり)

Certificate System はサブシステムで構成されており、各サブシステムが公開鍵インフラストラクチャーのさまざまな機能を提供します。PKI 環境は、サブシステムにさまざまな機能を実装することで、個々のニーズに合わせてカスタマイズできます。

注記

従来の PKI 環境は、ソフトウェアデータベースに保存されている証明書を管理する基本的なフレームワークを提供します。これは、スマートカードで証明書を管理しないため、TMS 以外 の環境です。TMS 環境では、スマートカードで証明書を管理します。

少なくとも、TMS 以外の環境では CA のみが必要ですが、TMS 以外の環境では OCSP レスポンダーと KRA インスタンスも使用できます。

2.4.1. 証明書の発行

通常、Certificate Manager は Certificate System の中核となります。リクエストから登録 (発行)、更新、失効まで、あらゆる段階で証明書を管理します。

Certificate System は、証明書の登録と発行、および Web ブラウザー、サーバー、仮想プライベートネットワーク (VPN) クライアントなどのさまざまなエンドエンティティーからの証明書要求の処理をサポートします。発行した証明書は X.509 バージョン 3 標準仕様に準拠します。

詳細は、Red Hat Certificate System 管理ガイド証明書の登録および更新について セクションを参照してください。

2.4.1.1. 登録プロセス

エンドエンティティーは、エンドエンティティーインターフェイスを介して登録要求を送信することにより、PKI 環境に登録します。さまざまな登録方法を使用したり、さまざまな認証方法を必要とする多くの種類の登録があります。異なるインターフェイスが、異なるタイプの証明書署名要求 (CSR) を受け入れることもできます。

Certificate Manager は、グラフィカルインターフェイスやコマンドラインツールの使用など、CSR を送信するさまざまな方法をサポートします。

2.4.1.1.1. ユーザーインターフェイスを使用した登録

ユーザーインターフェイスを介した登録ごとに、登録の種類、認証の種類、および証明書の種類に関連付けられた証明書プロファイルに固有の個別の登録ページが作成されます。登録に関連するフォームは、外観とコンテンツの両方でカスタマイズできます。または、登録タイプごとに証明書プロファイルを作成することにより、登録プロセスをカスタマイズできます。証明書プロファイルは、証明書プロファイルに関連付けられた入力を設定することによってカスタマイズされたフォームを動的に生成します。異なるインターフェイスが、異なるタイプの証明書署名要求 (CSR) を受け入れることもできます。

エンドエンティティーが証明書を要求して PKI に登録すると、PKI の設定とインストールされているサブシステムに応じて、次のイベントが発生する可能性があります。

  1. エンドエンティティーは、登録フォームの 1 つに情報を提供し、リクエストを送信します。

    エンドエンティティーから収集された情報は、収集された情報に応じてフォームでカスタマイズ可能であり、証明書に保存したり、フォームに関連付けられた認証方法に対して認証したりできます。このフォームは、Certificate Manager に送信される要求を作成します。

  2. 登録フォームは、リクエストの公開鍵と秘密鍵、またはデュアルキーペアの作成をトリガーします。
  3. エンドエンティティーは、認証タイプに応じて、リクエストの送信前に認証情報を提供します。LDAP 認証、PIN ベースの認証、または証明書ベースの認証を指定できます。
  4. リクエストは、エージェントの承認登録プロセスまたは自動プロセスのいずれかに送信されます。

    • エンドエンティティー認証を含まないエージェント承認プロセスは、エージェントが要求を処理する必要があるエージェントサービスインターフェイスの要求キューに要求を送信します。その後、エージェントはリクエストの一部を変更したり、リクエストのステータスを変更したり、リクエストを拒否したり、リクエストを承認することができます。

      自動通知を設定して、リクエストがキューに表示されるたびにエージェントにメールが送信されるようにすることができます。また、自動化されたジョブを設定して、事前に設定されたスケジュールでキューの内容のリストをエージェントに送信することもできます。

    • エンドエンティティー認証を含む自動化されたプロセスは、エンドエンティティーが正常に認証されるとすぐに証明書要求を処理します。
  5. フォームの送信時に LDAP ディレクトリーからエンドエンティティーに関する情報を収集します。証明書プロファイルベースの登録では、フォームのデフォルト値を使用して、ユーザーの LDAP ID およびパスワードを収集します。
  6. フォームに関連付けられた証明書プロファイルは、発行する証明書の要素を決定します。証明書プロファイルに応じて、リクエストは、要求が制約セットを満たすか、必要な情報が提供されているか、および新しい証明書の内容を決定するために評価されます。
  7. フォームは、ユーザーが秘密鍵をエクスポートするようにリクエストすることもできます。KRA サブシステムがこの CA で設定されている場合は、エンドエンティティーのキーが要求され、アーカイブされた要求が KRA に送信されます。このプロセスは通常、エンドエンティティーからの対話を必要としません。
  8. 証明書要求は、証明書プロファイルまたは認証要件を満たしていないために拒否されるか、証明書が発行されます。
  9. 証明書はエンドエンティティーに配信されます。

    • 自動登録では、証明書は即座にユーザーに配信されます。通常、登録は HTML ページを介して行われるため、証明書は別の HTML ページの応答として返されます。
    • エージェントが承認した登録では、証明書はシリアル番号またはエンドエンティティーインターフェイスのリクエスト ID で取得できます。
    • 通知機能が設定されている場合は、証明書の取得先のリンクがエンドユーザーに送信されます。
  10. 証明書が発行または拒否されると、自動通知をエンドエンティティーに送信できます。
  11. 新しい証明書は Certificate Manager の内部データベースに保存されます。
  12. Certificate Manager に公開が設定されている場合、証明書はファイルまたは LDAP ディレクトリーに公開されます。
  13. 内部 OCSP サービスは、証明書ステータス要求を受け取る際に内部データベースの証明書のステータスを確認します。

エンドエンティティーインターフェイスには、発行された証明書および CA 証明書チェーンを検索するフォームがあります。

デフォルトでは、ユーザーインターフェイスは PKCS #10 および Certificate Request Message Format (CRMF) の CSR に対応しています。

2.4.1.1.2. コマンドラインを使用した登録

このセクションでは、コマンドラインを使用して証明書を登録する際の一般的なワークフローを説明します。

2.4.1.1.2.1. pki ユーティリティーを使用した登録

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

2.4.1.1.2.2. CMC を使用した登録

CMC に証明書を登録するには、次の手順に従います。

  1. PKCS10ClientCRMFPopClient などのユーティリティーを使用して、PKCS #10 または CRMF 証明書署名要求 (CSR) を生成します。

    注記

    Key Recovery Agent (KRA) で鍵のアーカイブが有効になっている場合は、kra.transport ファイルに設定されている Privacy Enhanced Mail (PEM) 形式の KRA のトランスポート証明書とともに、CRMFPopClient ユーティリティーを使用します。

  2. CMCRequest ユーティリティーを使用して、CSR を CMC 要求に変換します。CMCRequest ユーティリティーは、設定ファイルを入力として使用します。このファイルには、CSR へのパスや CSR の形式などが含まれます。

    詳細と例は、CMCRequest(1) の man ページを参照してください。

  3. HttpClient ユーティリティーを使用して、CMC 要求を CA に送信します。HttpClient は、CMC 要求ファイルやサーブレットへのパスなどの設定を含む設定ファイルを使用します。

    HttpClient コマンドが成功すると、ユーティリティーは CA から CMC ステータス制御を備えた PKCS #7 チェーンを受け取ります。

    ユーティリティーが提供するパラメーターの詳細は、パラメーターを指定せずに HttpClient コマンドを入力します。

  4. CMCResponse ユーティリティーを使用して、HttpClient で生成された PKCS #7 ファイルの発行結果を確認します。リクエストが正常に行われると、CMCResponse は証明書チェーンを読み取り可能な形式で表示します。

    詳細は、CMCResponse(1) の man ページを参照してください。

  5. 新しい証明書をアプリケーションにインポートします。詳細は、証明書をインポートするアプリケーションの手順に従います。

    注記

    HttpClient が取得した証明書は、PKCS #7 形式になります。アプリケーションが Base64 でエンコードされた証明書のみに対応している場合は、BtoA ユーティリティーを使用して証明書を変換します。

    また、一部のアプリケーションでは、PEM (Privacy Enhanced Mail) 形式の証明書にヘッダーとフッターが必要です。必要な場合は、証明書を変換した後に PEM ファイルに手動で追加します。

2.4.1.1.2.2.1. POP なしの CMC 登録

POP (Proof Of Possession) がない場合、HttpClient ユーティリティーは、EncryptedPOP CMC ステータスを受け取ります。これは、CMCResponse コマンドで表示されます。この場合は、設定ファイルに異なるパラメーターを指定して CMCRequest コマンドを再び入力します。

詳細は、Red Hat Certificate System 管理ガイドCMC 登録プロセス セクションを参照してください。

2.4.1.1.2.2.2. 署名付き CMC 要求

CMC 要求は、ユーザーまたは CA エージェントのいずれかによって署名できます。

  • エージェントが要求に署名する場合は、プロファイルの認証方法を CMCAuth に設定します。
  • ユーザーが要求に署名する場合は、プロファイルの認証方法を CMCUserSignedAuth に設定します。

詳細は、Red Hat Certificate System 管理ガイドCMC 認証プラグイン セクションを参照してください。

2.4.1.1.2.2.3. 署名されていない CMC 要求

CMCUserSignedAuth 認証プラグインはプロファイルで設定されているため、共有秘密認証メカニズムと組み合わせて署名されていない CMC 要求を使用する必要があります。

注記

署名されていない要求は 自己署名付き CMC 要求 とも呼ばれます。

詳細は、Red Hat Certificate System 管理ガイドCMC 認証プラグイン セクションおよび 「CMC 共有シークレット機能の有効化」 を参照してください。

2.4.1.1.2.2.4. 共有シークレットのワークフロー

Certificate System は、RFC 5272 に従って、CMC 要求の共有シークレット認証メカニズムを提供します。パスフレーズを保護するには、CMCSharedToken コマンドの使用時に、発行保護証明書を提供する必要があります。保証保護証明書は、KRA トランスポート証明書と同じように機能します。詳細は、CMCSharedToken(1) man ページと 「CMC 共有シークレット機能の有効化」 を参照してください。

エンドエンティティーユーザーによって作成された共有シークレット (推奨)

以下に、ユーザーが共有の秘密を生成する場合にワークフローを説明します。

  1. エンドエンティティーユーザーは、CA 管理者から発行保護証明書を取得します。
  2. エンドエンティティーユーザーは CMCSharedToken ユーティリティーを使用して共有シークレットトークンを生成します。

    注記

    -p オプションは、トークンのパスワードではなく、CA とユーザー間で共有されるパスフレーズを設定します。

  3. エンドエンティティーユーザーは、CMCSharedToken ユーティリティーによって生成された暗号化された共有トークンを管理者に送信します。
  4. 管理者は、ユーザーの LDAP エントリーの shrTok 属性に共有トークンを追加します。
  5. エンドエンティティーユーザーは、CMCRequest ユーティリティーに渡される設定ファイル内の witness.sharedSecret パラメーターを、パスフレーズを使用して設定します。
CA 管理者によって作成された共有シークレット

以下では、CA 管理者がユーザーの共有のシークレットを生成する場合にワークフローを説明します。

  1. 管理者は CMCSharedToken ユーティリティーを使用して、ユーザーの共有シークレットトークンを生成します。

    注記

    -p オプションは、トークンのパスワードではなく、CA とユーザー間で共有されるパスフレーズを設定します。

  2. 管理者は、ユーザーの LDAP エントリーの shrTok 属性に共有トークンを追加します。
  3. 管理者は、パスフレーズをユーザーと共有します。
  4. エンドエンティティーユーザーは、CMCRequest ユーティリティーに渡される設定ファイル内の witness.sharedSecret パラメーターを、パスフレーズを使用して設定します。
2.4.1.1.2.2.5. 単純な CMC 要求

Certificate System は、シンプルな CMC 要求を許可します。ただし、このプロセスは完全な CMC 要求と同じレベルのセキュリティー要件をサポートしていないため、安全な環境でのみ使用する必要があります。

単純な CMC 要求を使用する場合は、HttpClient ユーティリティーの設定ファイルで以下を設定します。

servlet=/ca/ee/ca/profileSubmitCMCSimple?profileId=caECSimpleCMCUserCert
2.4.1.2. 証明書プロファイル

Certificate System は証明書プロファイルを使用して、証明書の内容、証明書を発行する制約、使用する登録方法、およびその登録方法の入力フォームおよび出力フォームを設定します。1 つの証明書プロファイルが、特定の証明書の発行に関連付けられます。

最も一般的な証明書プロファイルのセットは、最も一般的な証明書タイプに含まれます。プロファイル設定は変更できます。証明書プロファイルは管理者が設定し、エージェントの承認のためにエージェントサービスページに送信されます。証明書プロファイルが承認されると、使用が有効になっています。UI の登録の場合、証明書プロファイルに対して動的に生成される HTML フォームは、証明書プロファイルで呼び出す証明書登録のエンドエンティティーページで使用されます。コマンドラインベースの登録の場合は、認証、認可、入力、出力、デフォルト、制約などの同じ処理を実行するために証明書プロファイルが呼び出されます。サーバーは、要求に対応する前に、証明書プロファイルに設定されているデフォルトと制約が満たされていることを確認し、証明書プロファイルを使用して発行された証明書の内容を判別します。

Certificate Manager は、プロファイルや送信の証明書要求の設定に応じて、以下のいずれかの特徴で証明書を発行できます。

  • X.509 バージョン 3 に準拠する証明書
  • 証明書サブジェクト名と発行者名に対する Unicode サポート
  • 空の証明書のサブジェクト名のサポート
  • カスタマイズされたサブジェクト名コンポーネントのサポート
  • カスタマイズされた拡張機能のサポート

デフォルトでは、証明書登録プロファイルは <instance directory>/ca/profiles/ca<profile id>.cfg 形式の名前で保存されます。適切な pkispawn 設定パラメーターを使用すると、LDAP ベースのプロファイルが可能です。

2.4.1.3. 証明書登録の認証

Certificate System は、証明書登録の認証オプションを提供します。これには、エージェントが要求を処理するエージェント承認済み登録と、エンドエンティティーを認証する認証方法が使用され、CA が自動的に証明書を発行する自動登録があります。エージェントによって承認されたリクエストを自動的に処理する CMC 登録もサポートされています。

2.4.1.4. クロスペア証明書

これら 2 つの CA 間でクロス署名証明書を発行および格納することにより、2 つの異なる CA 間で信頼される関係を作成できます。クロス署名付き証明書ペアを使用すると、組織の PKI 以外で発行された証明書は、システム内で信頼できます。

2.4.2. 証明書の更新

証明書が有効期限に達すると、失効を許可するか、更新することができます。

更新 は、その証明書の既存の鍵ペアを使用して証明書要求を再生成し、要求を Certificate Manager に再送信します。更新された証明書は、同じキーマテリアルを使用して同じプロファイルから作成されているため、元の証明書と同一です。ただし、有効期限は異なり、元の証明書より後になっています。

更新された証明書は古い証明書とまったく同じように機能するため、更新により、証明書の管理とユーザーとサーバー間の関係がはるかにスムーズになります。ユーザー証明書の更新により、暗号化されたデータには失われなくてもアクセスすることができます。

2.4.3. 証明書および CRL の公開

証明書はファイルおよび LDAP ディレクトリー、CRL をファイル、LDAP ディレクトリー、および OCSP レスポンダーに公開できます。公開フレームワークは、3 つのすべての場所に公開するための堅牢なツールセットを提供し、証明書や CRL を公開する場所をより詳細に定義するルールを設定します。

2.4.4. 証明書の取り消しとステータスの確認

エンドエンティティーは、独自の証明書が取り消されることを要求できます。エンドエンティティーが要求を行うとき、証明書を CA に提示する必要があります。証明書とキーが使用可能な場合、要求は処理されて Certificate Manager に送信され、証明書は取り消されます。Certificate Manager は、証明書をデータベースで取り消されたとマークし、該当する CRL に追加します。

エージェントは、エージェントサービスインターフェイスで証明書を検索し、取り消しにすることにより、Certificate Manager が発行する証明書をすべて取り消すことができます。証明書が取り消されると、証明書が公開用に設定されている場合は、データベースと公開ディレクトリーで取り消されたとマークされます。

内部の OCSP サービスが設定されている場合、サービスは内部データベースで証明書のステータスを判断します。

自動通知は、証明書失効通知メッセージを有効にして設定すると、証明書が取り消された時にエンドエンティティーに電子メールメッセージを送信するように、自動通知を設定することができます。

2.4.4.1. 証明書の取り消し

ユーザーは、以下を使用して証明書を取り消すことができます。

  • エンドエンティティーページ。詳細は、Red Hat Certificate System 管理ガイド証明書取り消しページ セクションを参照してください。
  • コマンドラインでの CMCRequest ユーティリティー。詳細は、Red Hat Certificate System 管理ガイドCMC 取り消しの実行 セクションを参照してください。
  • コマンドラインの pki ユーティリティー。詳細は、pki-cert(1) の man ページを参照してください。
2.4.4.2. 証明書のステータス
2.4.4.2.1. CRL

Certificate System は、設定可能なフレームワークから証明書失効リスト (CRL) を作成できます。これにより、ユーザー定義の発行ポイントが可能になり、発行する各ポイントに CRL を作成できます。デルタ CRL は、定義した発行ポイントにも作成できます。CRL は、証明書の各タイプ、証明書のタイプの特定のサブセット、またはプロファイルまたはプロファイルのリストに従って生成された証明書に対して発行できます。CRL を公開する際の頻度と間隔がすべて設定できます。

Certificate Manager は X.509 標準 CRL を発行します。CRL は、証明書が取り消されたり、指定した間隔で毎回更新される可能性があります。

2.4.4.2.2. OCSP サービス

Certificate System CA は、PKIX 標準 RFC 2560 で定義されている Online Certificate Status Protocol (OCSP) をサポートします。OCSP プロトコルを使用すると、OCSP 準拠のアプリケーションは、CA から検証機関に公開された CRL を直接確認しなくても、失効ステータスを含む証明書の状態を判別できます。OCSP レスポンダー とも呼ばれる検証機関は、アプリケーションをチェックします。

  1. CA は、証明書のステータスに対してクエリーできる OCSP レスポンダーを特定する Authority Information Access 拡張を含む証明書を発行するよう設定されます。
  2. CA は CRL を OCSP レスポンダーに定期的に公開します。
  3. OCSP レスポンダーは、CA から受け取る CRL を維持します。
  4. OCSP 準拠のクライアントは、検証用の OCSP レスポンダーに証明書を特定するのに必要なすべての情報が含まれるリクエストを送信します。アプリケーションは、検証する証明書の Authority Information Access 拡張の値から OCSP レスポンダーの場所を決定します。
  5. OCSP レスポンダーは、リクエストに処理に必要なすべての情報が含まれるかどうかを判断します。有効になっていない場合、または要求されたサービスに対して有効になっていない場合は、拒否通知が送信されます。十分な情報がある場合は、要求を処理し、証明書のステータスを示すレポートを送信します。
2.4.4.2.2.1. OCSP 応答の署名

拒否通知を含む、クライアントが受信するすべての応答は、応答者によってデジタル署名されます。クライアントは、署名を検証して、要求を送信したレスポンダーからの応答であることを確認する必要があります。レスポンダーがメッセージに署名するために使用するキーは、OCSP レスポンダーが PKI セットアップでどのようにデプロイメントされているかによって異なります。RFC 2560 は、応答に署名するために使用される鍵が以下のいずれかに属することを推奨します。

  • ステータスがチェックされている証明書を発行した CA。
  • クライアントが信頼する公開鍵のあるレスポンダー。このようなレスポンダーは 信頼済みレスポンダー と呼ばれます。
  • 証明書を取り消して CRL を公開する CA から直接発行された、特別にマークされた証明書を保持するレスポンダー。レスポンダーによるこの証明書の所持は、CA が、CA によって取り消された証明書に対して OCSP 応答を発行することをレスポンダーに許可したことを示します。このようなレスポンダーは、CA 指定レスポンダー または CA 承認レスポンダー と呼ばれます。

Certificate Manager のエンドエンティティーには、OCSP レスポンダーの証明書を手動で要求するためのフォームが含まれています。デフォルトの登録フォームには、OCSP レスポンダー証明書として証明書を識別するすべての属性が含まれます。OCSPNoCheck や Extended Key Usage などの必要な証明書拡張機能は、証明書が送信されたときに証明書に追加できます。

2.4.4.2.2.2. OCSP 応答

クライアントが受け取った OCSP 応答は、OCSP レスポンダーが決定した証明書の現在の状態を示します。応答は以下のいずれかになります。

  • Good or Verified。ステータス照会に対する肯定応答を指定します。これは、証明書が取り消されていないことを意味します。必ずしも証明書が発行されたことや、証明書の有効期間内であることを意味するわけではありません。応答拡張は、証明書のステータスに関するレスポンダーによるアサーションの追加情報を示すために使用できます。
  • Revoked。永続的または一時的に、証明書が取り消されたことを指定します。

クライアントは、ステータスに基づいて、証明書を検証するかどうかを決定します。

注記

OCSP レスポンダーは Unknown の応答を返しません。応答は常に Good または Revoked になります。

2.4.4.2.2.3. OCSP サービス

OCSP サービスの設定方法は 2 つあります。

  • Certificate Manager に構築された OCSP
  • Online Certificate Status Manager サブシステム

Certificate Manager は、組み込みの OCSP サービスの他に、CRL を OCSP 準拠の検証認証局に公開できます。CA は、CRL を Certificate System Online Certificate Status Manager に公開できるように設定できます。Online Certificate Status Manager は、各 Certificate Manager の CRL を内部データベースに保存し、適切な CRL を使用して、OCSP 準拠のクライアントから照会されたときに証明書の失効ステータスを確認します。

Certificate Manager は、証明書が取り消され、指定した間隔で CRL を生成および公開します。OCSP レスポンダーの目的は、証明書の即時検証を容易にすることを目的としているため、Certificate Manager は証明書を取り消すたびに CRL を Online Certificate Status Manager に公開する必要があります。間隔を置いてのみ公開するということは、OCSP サービスが古い CRL をチェックしていることを意味します。

注記

CRL が大きい場合、Certificate Manager は CRL を公開するのにかなり時間がかかる場合があります。

Online Certificate Status Manager は、各 Certificate Manager の CRL を内部データベースに保存し、証明書の検証に CRL として使用します。Online Certificate Status Manager は LDAP ディレクトリーに公開される CRL も使用できます。そのため、Certificate Manager は CRL を Online Certificate Status Manager に直接更新する必要はありません。

2.4.5. キーのアーカイブ、リカバリー、ローテーション

PKI の間、秘密鍵のアーカイブを使用すると、秘密鍵が失われた場合に暗号化されたデータのリカバリーが可能になります。秘密鍵は、ハードウェア障害、パスワード忘れ、スマートカードの紛失、パスワード所有者の資格喪失など、さまざまな理由で失われる可能性があります。このようなアーカイブおよびリカバリー機能は、RHCS の Key Recovery Authority (KRA) サブシステムによって提供されます。

データの暗号化にのみ使用されるキーのみをアーカイブする必要があります。特に署名キーは決してアーカイブされるべきではありません。署名キーのコピーが 2 つあると、誰がキーを使用したかを確実に特定することができなくなります。2 番目にアーカイブされたコピーを使用して、元のキー所有者のデジタル ID を偽装することができます。

2.4.5.1. キーのアーカイブ

KRA で提供されるキーアーカイブメカニズムには、以下の 2 つのタイプがあります。

  • クライアント側のキー生成: このメカニズムを使用すると、クライアントは CRMF 形式で CSR を生成し、登録とキーのアーカイブのために (適切な KRA セットアップを使用して) CA に要求を送信します。Red Hat Certificate System 管理ガイドCRMFPopClient を使用した CSR の作成 セクションを参照してください。
  • サーバー側の鍵生成: このメカニズムでは、適切に装備された証明書登録プロファイルにより、PKI キーが KRA で生成され、任意で新しく発行された証明書とともにアーカイブされます。Red Hat Certificate System 管理ガイドサーバー側の鍵生成を使用した CSR の生成 セクションを参照してください。

アーカイブが設定されている場合、KRA は秘密鍵を自動的にアーカイブします。

KRA は秘密鍵を安全な鍵リポジトリーに格納します。各キーは暗号化され、キーレコードとして保存され、一意の鍵 ID が付与されます。

鍵のアーカイブコピーは、KRA のストレージキーでラップされます。ストレージ証明書の対応する秘密鍵ペアを使用することによってのみ、復号またはラップ解除が可能になります。1 つ以上のキーリカバリー (または KRA) エージェントの証明書の組み合わせは、KRA で鍵のリカバリーを完了して秘密鍵を取得し、その証明書を使用してアーカイブされた秘密鍵を復号または再作成できるようにします。「コマンドラインでのエージェント承認キーリカバリーの設定」 を参照してください。

KRA インデックスは、キー番号、所有者名、および公開鍵のハッシュ別に保存されるため、非常に効率的な検索を可能にします。キーリカバリーエージェントには、キーレコードの挿入、削除、および検索を行うための特権があります。

  • キーリカバリーエージェントがキー ID で検索されると、その ID に対応するキーのみが返されます。
  • ユーザー名でエージェントを検索すると、その所有者に属する保存されたすべてのキーが返されます。
  • 証明書の公開鍵でエージェントを検索すると、対応する秘密鍵のみが返されます。

Certificate Manager がキーのアーカイブオプションを含む証明書要求を受信すると、自動的に要求を KRA に転送して暗号鍵をアーカイブします。秘密鍵はトランスポートキーで暗号化され、KRA は暗号化されたコピーを受け取り、キーをキーリポジトリーに保存します。キーをアーカイブするには、KRA は以下の 2 つの特別なキーペアを使用します。

  • トランスポートキーペアと対応する証明書。
  • ストレージキーペア

図2.2「クライアント側のキー生成における鍵アーカイブプロセスの仕組み」 は、サーバー側の鍵の生成時に、最終的にエンティティーが証明書を要求する際に鍵のアーカイブプロセスがどのように発生するかを示しています。

図2.2 クライアント側のキー生成における鍵アーカイブプロセスの仕組み

kra arc
  1. クライアントは CRMF リクエストを生成し、CA の登録ポータルを介して送信します。

    1. クライアントの秘密鍵は CRMF リクエスト内にラップされ、KRA によってだけラップできます。
  2. CA は、キーアーカイブオプションを使用した CRMF リクエストであることを検出し、秘密キーアーカイブのためにリクエストを KRA に転送します。
  3. KRA は、ユーザーの秘密鍵を復号/ラップ解除し、秘密鍵が公開鍵に対応していることを確認した後、内部 LDAP データベースに保存する前に再度暗号化/ラップします。
  4. 秘密鍵が正常に保存されると、KRA は、鍵が正常にアーカイブされたことを確認する CA に応答します。
  5. CA は、証明書情報コンテンツの作成と検証のために、登録プロファイルフレームワークにリクエストを送信します。すべてが渡されると、証明書を発行し、応答でエンドエンティティーに送り返します。
2.4.5.2. キーのリカバリー

KRA は、agent-initiated key recovery をサポートします。エージェントが開始するリカバリーとは、指定されたリカバリーエージェントが KRA エージェントサービスポータルのキーリカバリーフォームを使用して、キーリカバリー要求を処理および承認する場合です。特定の数のエージェントを承認すると、システムは、キーの所有者が利用できない、またはキーが失われた場合にキーを回復できます。

キーリカバリーエージェントは、KRA エージェントサービスポータルを介して、秘密暗号化キーと関連する証明書をまとめて承認し、PKCS #12 パッケージに取得して、クライアントにインポートできます。

キーリカバリー許可では、キーリカバリーエージェントの 1 つが、必要なすべてのリカバリーエージェントに、差し迫ったキーリカバリーを通知します。すべてのリカバリーエージェントは、KRA キーリカバリーポータルにアクセスします。エージェントの 1 つが、キーリカバリープロセスを開始します。KRA はエージェントへの通知を返します。これには、エージェントの認証に必要な特定のキーリカバリー要求を指定するリカバリー承認参照番号が含まれます。各エージェントは参照番号を使用し、キーの復元を個別に承認します。

KRA は 非同期リカバリー をサポートします。つまり、リカバリープロセスの各ステップ (最初の要求と後続の承認または承認または拒否) は、キーエントリーの KRA の内部 LDAP データベースに保存されます。元のブラウザーセッションが閉じられたり、KRA がシャットダウンしている場合でも、リカバリープロセスのステータスデータを取得することができます。エージェントは、参照番号を使用せずにキーをリカバリーすることができます。

この非同期リカバリーオプションは、図2.3「非同期リカバリー」 で説明されています。

図2.3 非同期リカバリー

recovery options

KRA は、認可のステータスキーリカバリープロセスを開始したエージェントに通知します。

すべての承認を入力すると、KRA は情報をチェックします。提示された情報が正しい場合は、要求されたキーを取得し、PKCS #12 パッケージの形式で、キーリカバリープロセスを開始したエージェントに、対応する証明書を返します。

警告

PKCS #12 パッケージには、暗号化された秘密鍵が含まれます。キーの不正使用のリスクを最小限に抑えるには、リカバリーエージェントはセキュアな方法を使用して PKCS #12 パッケージおよびパスワードを鍵受信者に提供する必要があります。このエージェントは、PKCS #12 パッケージを暗号化するために適切なパスワードを使用し、適切な配信メカニズムを設定する必要があります。

キーリカバリーエージェントスキーム は、キーリカバリーエージェントが属するグループを認識するように KRA を設定し、アーカイブされた鍵を復元する前にキーリカバリー要求を承認するために必要なこれらのリカバリーエージェントの数を指定します。

重要

上記の情報は、Firefox などの Web ブラウザーを使用することを指します。ただし、KRA の使用に重要な機能は、ブラウザーの新しいバージョンではなくなりました。このような場合は、pki ユーティリティーを使用してこの動作を複製する必要があります。詳細は、pki(1) および pki-key(1) の man ページを参照するか、CRMFPopClient --help および man CMCRequest を実行してください。

KRA は非対称鍵を保存する他に、ボリューム暗号化シークレット、パスワード、パスフレーズなどの対称鍵やシークレットも格納することができます。pki ユーティリティーは、これらのタイプのシークレットの保存および取得を可能にするオプションをサポートします。

2.4.5.3. KRA トランスポートキーのローテーション

KRA トランスポートローテーションにより、現在のトランスポートキーと新しいトランスポートキーを使用して、CA サブシステムインスタンスと KRA サブシステムインスタンスとの間のシームレスな移行が可能になります。これにより、移行時に古いトランスポートキーと新しいトランスポートキーの両方を操作できるようにすることで、KRA トランスポートキーを定期的にローテーションしてセキュリティーを強化できます。個々のサブシステムインスタンスは順番に設定され、他のクローンはダウンタイムなしでサービスを継続します。

KRA トランスポートキーローテーションプロセスでは、新しいトランスポートキーペアが生成され、証明書要求が送信され、新しいトランスポート証明書が取得されます。2 番目のトランスポートキーのサポートを提供するために、新しいトランスポートキーペアと証明書を KRA 設定に含める必要があります。KRA が 2 つのトランスポートキーをサポートすると、管理者は CA を新しいトランスポートキーに移行できます。古いトランスポートキーの KRA サポートは、すべての CA が新しいトランスポートキーに移動した後に削除できます。

KRA トランスポートキーローテーションを設定するには、以下を実行します。

  1. 新しい KRA トランスポートの鍵および証明書の生成
  2. 新しいトランスポートキーおよび証明書の KRA クローンへの転送
  3. 新しい KRA トランスポート証明書を使用した CA 設定の更新
  4. 新しいトランスポートキーおよび証明書のみを使用するように KRA 設定を更新

これにより、KRA トランスポート証明書のローテーションが完了し、影響を受ける CA および KRA がすべて新しい KRA 証明書のみを使用します。上記の手順の実行方法は、以下の手順を参照してください。

新しい KRA トランスポートキーおよび証明書の生成
  1. KRA トランスポート証明書を要求します。

    • KRA を停止します。

      # pki-server stop pki-kra

      nuxwdog watchdog を使用している場合は以下のようになります。

      # systemctl stop pki-tomcatd-nuxwdog@pki-kra.service
    • KRA NSS データベースディレクトリーに移動します。

      # cd /etc/pki/pki-kra/alias
    • サブディレクトリーを作成し、すべての NSS データベースファイルを保存します。以下に例を示します。

      mkdir nss_db_backup
      cp *.db nss_db_backup
    • PKCS10Client ユーティリティーを使用して新しい要求を作成します。以下に例を示します。

      PKCS10Client -p password -d '.' -o 'req.txt' -n 'CN=KRA Transport 2 Certificate,O=example.com Security Domain'

      または、certutil ユーティリティーを使用します。以下に例を示します。

      certutil -d . -R -k rsa -g 2048 -s 'CN=KRA Transport 2 Certificate,O=example.com Security Domain' -f password-file -a -o transport-certificate-request-file
    • CA エンドエンティティーページの 手動データリカバリーマネージャートランスポート証明書の登録 ページで、トランスポート証明書要求を送信します。
    • End-Entity 取得ページで要求ステータスをチェックして、送信した要求のエージェント承認が証明書を取得するのを待ちます。
  2. CA Agent Services インターフェイスを使用して KRA トランスポート証明書を承認します。
  3. KRA トランスポート証明書を取得します。

    • KRA NSS データベースディレクトリーに移動します。

      # cd /etc/pki/pki-kra/alias
    • End-Entity 取得ページで要求ステータスをチェックして、送信した要求のエージェント承認が証明書を取得するのを待ちます。
    • 新しい KRA トランスポート証明書が利用可能になったら、その Base64 でエンコードされた値をテキストファイル (例: cert-serial`number.txt_ ファイル) に貼り付けます。ヘッダー (-----BEGIN CERTIFICATE-----) またはフッター (-----END CERTIFICATE-----`) を追加しないでください。
  4. KRA トランスポート証明書を要求します。

    • KRA NSS データベースディレクトリーに移動します。

      # cd /etc/pki/pki-kra/alias
    • トランスポート証明書を KRA NSS データベースにインポートします。

      # certutil -d . -A -n 'transportCert-serial_number cert-pki-kra KRA' -t 'u,u,u' -a -i cert-serial_number.txt
  5. KRA トランスポート証明書設定を更新します。

    • KRA NSS データベースディレクトリーに移動します。

      # cd /etc/pki/pki-kra/alias
    • 新しい KRA トランスポート証明書がインポートされていることを確認します。

      # certutil -d . -L
      # certutil -d . -L -n 'transportCert-serial_number cert-pki-kra KRA'
    • /var/lib/pki/pki-kra/kra/conf/CS.cfg ファイルを開き、以下の行を追加します。

      kra.transportUnit.newNickName=transportCert-serial_number cert-pki-kra KRA
新しいトランスポートキーおよび証明書の KRA クローンへの伝搬
  1. KRA を起動します。
# pki-server start pki-kra

nuxwdog watchdog を使用している場合は以下のようになります。

# systemctl start pki-tomcatd-nuxwdog@pki-kra.service
  1. クローンに伝播するために、新しいトランスポートキーと証明書を抽出します。

    • KRA NSS データベースディレクトリーに移動します。

      # cd /etc/pki/pki-kra/alias
    • KRA を停止します。

      # pki-server stop pki-kra

      nuxwdog watchdog を使用している場合は以下のようになります。

      # systemctl stop pki-tomcatd-nuxwdog@pki-kra.service
    • 新しい KRA トランスポート証明書が存在することを確認します。

      # certutil -d . -L
      # certutil -d . -L -n 'transportCert-serial_number cert-pki-kra KRA'
    • KRA の新規トランスポートキーおよび証明書をエクスポートします。

      # pk12util -o transport.p12 -d . -n 'transportCert-serial_number cert-pki-kra KRA'
    • エクスポートした KRA トランスポート鍵および証明書を確認します。

      # pk12util -l transport.p12
  2. 各 KRA クローンで以下の手順を実行します。

    • トランスポートキーおよび証明書を含む transport.p12 ファイルを KRA クローンの場所にコピーします。
    • クローンの NSS データベースディレクトリーに移動します。

      # cd /etc/pki/pki-kra/alias
    • KRA のクローンを停止します。

      # pki-server stop pki-kra

      nuxwdog watchdog を使用している場合は以下のようになります。

      # systemctl stop pki-tomcatd-nuxwdog@pki-kra.service
    • クローン NSS データベースの内容を確認します。

      # certutil -d . -L
    • クローンの新規トランスポートキーと証明書をインポートします。

      # pk12util -i transport.p12 -d .
    • クローンの /var/lib/pki/pki-kra/kra/conf/CS.cfg ファイルに以下の行を追加します。

      kra.transportUnit.newNickName=transportCert-serial_number cert-pki-kra KRA
    • KRA のクローンを起動します。

      # pki-server start pki-kra

      nuxwdog watchdog を使用している場合は以下のようになります。

      # systemctl start pki-tomcatd-nuxwdog@pki-kra.service
新しい KRA トランスポート証明書を使用した CA 設定の更新
  1. CA に組み込む新しい KRA トランスポート証明書をフォーマットします。

    • 直前の手順で KRA トランスポート証明書を取得する際に作成した cert-serial_number.txt KRA トランスポート証明書ファイルを取得します。
    • cert-serial_number.txt に含まれる Base64 でエンコードされた証明書を 1 行のファイルに変換します。

      # tr -d '\n' < cert-serial_number.txt > cert-one-line-serial_number.txt
  2. CA と、上記の KRA に対応するすべてのクローンに対して以下を行います。

    • CA を停止します。

      # pki-server stop pki-ca

      nuxwdog watchdog を使用している場合は以下のようになります。

      # systemctl stop pki-tomcatd-nuxwdog@pki-ca.service
    • /var/lib/pki/pki-ca/ca/conf/CS.cfg ファイルで、以下の行に含まれる証明書を見つけます。

      ca.connector.KRA.transportCert=certificate

      その証明書を、cert-one-line-serial_number.txt に含まれる証明書に置き換えます。

    • CA を起動します。

      # pki-server start pki-ca

      nuxwdog watchdog を使用している場合は以下のようになります。

      # systemctl start pki-tomcatd-nuxwdog@pki-ca.service
注記

CA とそのすべてのクローンが新しい KRA トランスポート証明書で更新されている間、移行を完了した CA インスタンスは新しい KRA トランスポート証明書を使用し、まだ更新されていない CA インスタンスは引き続き古い KRA トランスポート証明書を使用します。対応する KRA とそのクローンが両方のトランスポート証明書を使用するよう更新されているため、ダウンタイムは発生しません。

新しいトランスポートキーおよび証明書のみを使用するように KRA 設定を更新

KRA とその各クローンについて、以下を実行します。

  1. KRA NSS データベースディレクトリーに移動します。

    # cd /etc/pki/pki-kra/alias
  2. KRA を停止します。

    # pki-server stop pki-kra

    nuxwdog watchdog を使用している場合は以下のようになります。

    # systemctl stop pki-tomcatd-nuxwdog@pki-kra.service
  3. 新しい KRA トランスポート証明書がインポートされていることを確認します。

    # certutil -d . -L
    # certutil -d . -L -n 'transportCert-serial_number cert-pki-kra KRA'
  4. /var/lib/pki/pki-kra/kra/conf/CS.cfg ファイルを開き、以下の行に含まれる nickName 値を見つけます。

    kra.transportUnit.nickName=transportCert cert-pki-kra KRA

    nickName 値を次の行に含まれる newNickName 値に置き換えます。

    kra.transportUnit.newNickName=transportCert-serial_number cert-pki-kra KRA

    これにより、CS.cfg ファイルに以下の行が含まれます。

    kra.transportUnit.nickName=transportCert-serial_number cert-pki-kra KRA
  5. /var/lib/pki/pki-kra/kra/conf/CS.cfg から以下の行を削除します。

    kra.transportUnit.newNickName=transportCert-serial_number cert-pki-kra KRA
  6. KRA を起動します。

    # pki-server start pki-kra

    nuxwdog watchdog を使用している場合は以下のようになります。

    # systemctl start pki-tomcatd-nuxwdog@pki-kra.service

2.5. Certificate System を使用したスマートカードトークン管理

スマートカード は、暗号化証明書および鍵を含むハードウェア暗号化デバイスです。ユーザーは、セキュアな Web アクセスやセキュアなメールなどの操作に参加できます。また、Red Hat Enterprise Linux などのさまざまなオペレーティングシステムにログインする認証デバイスとしても機能します。これらのカードまたはトークンは、使用期間を通して トークン管理システム (TMS) によって管理されます。

TMS 環境には、認証局 (CA)、トークンキーサービス (TKS)、およびトークン処理システム (TPS) と、サーバー側のキー生成およびキーのアーカイブとリカバリーのための任意のキーリカバリー認証局 (KRA) が必要です。OCSP (Online Certificate Status Protocol) を使用して、オンライン証明書ステータス要求に対応する CA と連携することもできます。この章では、Red Hat Certificate System のスマートカード管理機能を提供する TKS システムおよび TPS システムと、ユーザー側から TMS と連携する Enterprise Security Client (ESC) の概要を説明します。

図2.4 TMS によるスマートカードの管理方法

tms

2.5.1. トークンキーサービス (TKS)

Token Key Service (TKS) は、1 つ以上のマスターキーを管理します。これは マスターキー を保持し、キーマテリアルにアクセスできる TMS 内の唯一のエンティティーです。運用環境では、有効な各スマートカードトークンには、マスターキーと、カード (CUID) に固有の ID の両方から派生した対称鍵のセットが含まれます。

最初に、対称キーのデフォルト (製造元のマスターキーごとにのみ一意) のセットが、製造元によって各スマートカードで初期化されます。このデフォルトのセットは、Key Changeover 操作を実行して TKS で新しいマスターキーを生成することで、デプロイメントサイトで変更する必要があります。マスターキーの唯一の所有者として、スマートカードの CUID が付与されると、TKS はその特定のスマートカードにある対称キーのセットを導出できます。これにより、TKS は、TMS と個々のスマートカード間の安全な通信用にセッションベースの セキュアチャネル を確立できます。

注記

TKS が管理するデータの機密性により、TKS はアクセスが制限されたファイアウォールの背後に設定する必要があります。

2.5.1.1. マスターキーとキーセット

TKS は、複数のスマートカードの鍵セットをサポートします。各スマートカードベンダーは、スマートカードトークンストックに対して異なるデフォルト (開発者) の静的キーセットを作成し、TKS には、空白のトークンのフォーマットプロセスを開始するための静的キーセット (メーカーごと) が装備されています。

空白のスマートカードトークンのフォーマットプロセス中に、Java アプレットと一意に派生した対称キーセットがトークンに挿入されます。TKS がサポートする各マスターキー (場合によっては keySet と呼ばれます) には、TKS 設定ファイル (CS.cfg) にエントリーセットがあります。各 TPS プロファイルには、TMS とスマートカードトークン間のセッション固有のキーのセットによってセキュリティーが保護された Secure Channel の確立を本質的に担当する、一致するキー導出プロセスの適切な TKS keySet に登録を指示する設定が含まれています。

TKS では、マスターキーは TPS の参照用に名前付きの keySet によって定義されます。TPS では、登録タイプ (内部または外部の登録) に応じて、keySet は TPS プロファイルで指定されます。または、keySet Mapping Resolver で決定されます。

2.5.1.2. キーセレモニー (共有キートランスポート)

キーセレモニー は、機密性の高いキーをある場所から別の場所に安全な方法で転送するためのプロセスです。1 つのシナリオでは、非常に安全なデプロイメント環境では、外部へのネットワークのないセキュアな vault でマスターキーを生成できます。組織が、異なる物理マシンに TKS インスタンスと TPS インスタンスを持つ場合があります。いずれの場合も、キーを信頼できる人が 1 人もいないという前提の下で、Red Hat Certificate System TMS は、安全な鍵の送信を管理する tkstool と呼ばれるユーティリティーを提供します。

2.5.1.3. キー更新 (キーの切り替え)

Global Platform 準拠のスマートカードをファクトリーに作成すると、製造元はデフォルトの対称鍵をトークンに作成します。TKS は、最初にこの対称鍵を使用するように設定されています (TKS 設定のベンダーごとに KeySet エントリーが 1 つ)。しかし、これらの対称鍵は同一ストックのスマートカードに固有のものではなく、周知の鍵であるため、トークンを操作できるエンティティーセットを制限するために、製造元で共有されていない、トークンごとに固有のセットに置き換えることが強く推奨されます。

キーの変更は、Token Key Service サブシステムのサポートにより行われます。TKS の関数の 1 つは、以前に説明したスマートカードトークンキーが派生しているマスターキーを確認することです。TKS の制御下に複数のマスターキーが存在する可能性があります。

重要

このキー切り替えプロセスがトークンに対して実行されると、デフォルトのキーセットが有効でなくなったため、トークンは将来使用できなくなる可能性があります。トークンをプロビジョニングした TPS および TKS システムが有効である限り、鍵は基本的に有効です。このため、マスターキーのいずれかが古くなっている場合でも、すべてのマスターキーを保持することが不可欠です。

TKS の古いマスターキーを無効にして、適切に制御できますが、無効にしたトークンがプランの一部である限り削除しないでください。トークンキーを元のキーセットに戻すためのサポートがあります。これは、ある種のテストシナリオでトークンを再利用する場合に実行可能です。

2.5.1.4. APDU およびセキュアチャンネル

Red Hat Certificate System Token Management System (TMS) は GlobalPlatform スマートカード仕様をサポートしており、マスターキーを管理する Token Key System (TKS) と、Application Protocol Data Units (APDU) を使用してスマートカード (トークン) と通信する Token Processing System (TPS) で Secure Channel の実装が行われます。

APDU には、以下の 2 つのタイプがあります。

  • コマンド APDU (TPS からスマートカードに送信)
  • 応答 APDU (スマートカードから TPS に応答として送信)

APDU コマンドの開始は、クライアントがアクションを実行し、要求のために Certificate System サーバーに接続したときにトリガーされる場合があります。セキュアなチャネルは、TPS からスマートカードトークンに送信される InitializeUpdate APDU で始まり、ExternalAuthenticate APDU で完全に確立されます。次に、トークンと TMS の両方が、セッションキーと呼ばれる共有シークレットのセットを確立します。これは、通信の暗号化と認証に使用されます。この認証および暗号化された通信チャネルは Secure Channel と呼ばれます。

TKS は、一意の対称オントークンスマートカードキーのセットを取得できるマスターキーにアクセスできる唯一のエンティティーであるため、Secure Channel は、TMS と個々のトークンとの間の適切に保護された通信を提供します。チャンネルの接続解除には、新しいチャンネルに対する新しいセッションキーの再確立が必要になります。

2.5.2. トークン処理システム (TPS)

Token Processing System (TPS) は、スマートカード証明書登録の登録認証局です。これは、クライアント側のスマートカードトークンと対話するユーザー中心のエンタープライズセキュリティークライアント (ESC) と、認証局 (CA) やキーリカバリー認証局 (KRA) などの Certificate System バックエンドサブシステムとの間のパイプ役として機能します。

TMS では、スマートカードを管理するために TPS が必要です。これは、TPS が APDU コマンドと応答を理解する唯一の TMS エンティティーであるためです。TPS は、スマートカードにコマンドを送信して、ユーザーやデバイスなどの特定のエンティティーのキーと証明書を生成および保存できるようにします。スマートカード操作は TPS を経由して、証明書を生成するために CA や、鍵を生成、アーカイブ、または復元する KRA などのアクションのために適切なサブシステムに転送されます。

2.5.2.1. Coolkey アプレット

Red Hat Certificate System には、TMS 対応スマートカードトークンで実行するために作成された Coolkey Java アプレットが含まれています。Coolkey アプレットは、証明書およびキー関連の操作を処理する PKCS#11 モジュールに接続します。トークンフォーマットの操作時に、このアプレットは Secure Channel プロトコルを使用してスマートカードトークンに挿入され、設定ごとに更新できます。

2.5.2.2. トークン操作

Red Hat Certificate System の TPS は、スマートカードのエンドユーザーの代わりにスマートカードをプロビジョニングすることができます。Token Processing System は、以下の主要なトークン操作をサポートします。

  • トークンフォーマット: フォーマット操作は、適切な Coolkey アプレットをトークンにインストールします。アプレットは、後続の暗号鍵と証明書を後で配置できるプラットフォームを提供します。
  • トークンの登録: 登録操作により、必要な暗号鍵と暗号証明書でスマートカードが生成されます。この資料により、スマートカードのユーザーは、セキュアな Web サイトアクセスやセキュアなメールなどの操作に参加できます。登録には 2 つのタイプがサポートされています。これは、グローバルに設定されます。

    • 内部登録: プロファイル マッピングリゾルバー で決定される TPS プロファイルで登録します。
    • 外部登録: ユーザーの LDAP レコードのエントリーで決定される TPS プロファイルで登録を行います。
  • トークンの PIN リセット: トークンの PIN リセット操作により、トークンのユーザーはトークンへのログインに使用される新しい PIN を指定でき、暗号化操作を実行できます。

以下の他の操作は、上記の主な操作に対して補助または固有の操作として考慮できます。これらは、関連する設定ごとに、またはトークンの状態によってトリガーできます。

  • キー生成: 各 PKI 証明書は、公開鍵と秘密鍵のペアで構成されます。Red Hat Certificate System では、TPS プロファイル の設定に応じて 2 種類の方法で鍵を生成できます。

    • トークン側のキー生成: PKI キーペアがスマートカードトークンで生成されます。トークン側でキーペアを生成すると、キーのアーカイブが許可 されません
    • サーバー側のキー生成: PKI キーペアは TMS サーバー側で生成されます。その後、キーペアはセキュアチャネルを使用してトークンに送信されます。サーバー側で鍵のペアを生成すると、キーのアーカイブが可能になります。
  • 証明書の更新: この操作により、以前登録したトークンが同じ鍵を再度使用している間にトークンに現在発行された証明書を使用できるようになります。これは、古い証明書の有効期限が切れて、新しい証明書を作成したいが、元のキーマテリアルを維持したい場合に役立ちます。
  • 証明書失効リスト: TPS プロファイル設定またはトークンの状態をもとに、証明書失効リストをトリガーできます。

    通常、証明書を発行した CA のみがそれを取り消すことができます。つまり、CA を廃止すると、特定の証明書を取り消すことができなくなります。ただし、トークンの失効要求をリタイアした CA にルーティングしながら、登録などの他のすべての要求を新しいアクティブな CA にルーティングすることは可能です。このメカニズムは 取り消しルーティング と呼ばれます。

  • トークンキーの切り替え: フォーマット操作によってトリガーされるキーの変更操作により、トークンの内部キーを、デフォルトの開発者キーセットから、トークン処理システムの開発者により制御される新しいキーセットに変更できます。開発者キーセットはテスト状況に適したものであるため、通常、実際のデプロイメントシナリオでこれを行います。
  • アプレットの更新: TMS デプロイメントでは、必要に応じて Coolkey スマートカードアプレットを更新またはダウングレードできます。
2.5.2.3. TPS プロファイル

Certificate System Token Processing System サブシステムは、スマートカードトークンの管理を容易にします。トークンは TPS によってプロビジョニングされ、空白の状態からフォーマット済みまたは登録済みの状態になります。フォーマットされたトークンには、TPS でサポートされる CoolKey アプレットが含まれますが、登録済みトークンは、必要な証明書と暗号化キーを使用して個人にパーソナライズされます (バインディング と呼ばれるプロセス)。この完全にプロビジョニングされたトークンは、暗号化操作に使用する準備ができています。

TPS は プロファイル も管理できます。トークンプロファイルの概念は以下に関連します。

  • トークンのフォーマットまたは登録を行う手順。
  • 操作が正常に完了した後、終了したトークンに含まれる属性。

以下のリストで、一意のトークンプロファイルを設定する数量を説明します。

  • TPS がユーザーの認証 LDAP データベースに接続する方法。
  • このトークン操作にはユーザー認証が必要ですか。その場合に使用する認証マネージャー。
  • TPS は、証明書を取得する Certificate System CA にどのように接続しますか。
  • このトークンで生成された秘密鍵と公開鍵はどのように生成されているか。トークン側またはサーバー側で生成されているか。
  • 秘密鍵と公開鍵を生成する際に使用する鍵のサイズ (ビット単位)。
  • このトークンで証明書を生成するのに使用される証明書登録プロファイル (CA によるプロビジョニング)

    注記

    この設定により、トークンに書き込まれる証明書の最終構造が決定されます。証明書に含まれる拡張機能に基づいて、さまざまな用途に応じてさまざまな証明書を作成できます。たとえば、1 つの証明書はデータ暗号化に特化でき、別の証明書は署名操作に使用できます。

  • トークンで必要となる Coolkey アプレットのバージョン
  • 登録操作のためにこのトークンに配置される証明書の数

上記および他の多くのトークンタイプまたはプロファイルごとに設定できます。利用可能な設定オプションのリストは、Red Hat Certificate System 管理ガイド を参照してください。

考慮すべきもう 1 つの質問は、ユーザーによってプロビジョニングされている特定のトークンがどのように個々のトークンプロファイルにマップされるかです。登録には、以下の 2 つのタイプがあります。

  • Internal Registration: この場合、TPS プロファイル (tokenType) は、プロファイル Mapping Resolver で決定されます。このフィルターベースのリゾルバーは、トークンが提供するデータをすべて考慮し、ターゲットプロファイルを決定するように設定できます。
  • 外部登録: 外部登録使用する場合、プロファイル (名前のみ - 実際のプロファイルは、内部登録で使用されるものと同じ方法で TPS で定義) は、認証中に取得される各ユーザーの LDAP レコードで指定されます。これにより、TPS はユーザー情報が保存される外部登録 Directory Server からキーの登録およびリカバリー情報を取得できます。これにより、TPS 内部登録メカニズムに固有の登録、失効、および復旧ポリシーを上書きする制御が可能になります。外部登録に関連するユーザー LDAP レコード属性名は設定可能です。

    "グループ証明書" という概念が必要な場合には、外部登録が役立ちます。この場合、グループ内のすべてのユーザーには、共有証明書および鍵をダウンロードするために LDAP プロファイルに特別なレコードを設定できます。

使用する登録は、TPS インスタンスごとにグローバルに設定されます。

2.5.2.4. トークンデータベース

Token Processing System は、LDAP トークンデータベースストアを使用します。これは、アクティブなトークンとその証明書のリストを維持し、各トークンの現在の状態を追跡します。ブランドの新しいトークンは Uninitialized とみなされますが、完全登録されたトークンは Enrolled と見なされます。このデータストアは常に更新され、トークンの処理時に TPS によって確認されます。

2.5.2.4.1. トークンの状態と遷移

Token Processing System は、現在のトークンステータスとトークンで実行できるアクションを定義するために内部データベースのステータスを保存します。

2.5.2.4.1.1. トークンの状態

以下の表では、可能なトークン状態をすべて紹介します。

表2.9 可能なトークン状態
Nameコードラベル

FORMATTED

0

フォーマット済み (初期化されていない)

DAMAGED

1

物理的に破損

PERM_LOST

2

永続的に失われる

SUSPENDED

3

一時停止 (一時的に失われる)

ACTIVE

4

アクティブ

TERMINATED

6

終了

UNFORMATTED

7

未フォーマット

コマンドラインインターフェイスは、上記の名前を使用してトークンの状態を表示します。グラフィカルインターフェイスは、代わりに Label を使用します。

注記

上記の表には、コード 5 付きの状態は含まれません。以前は削除された状態に属していました。

2.5.2.4.1.2. グラフィカルインターフェイスまたはコマンドラインインターフェイスを使用して行われるトークン状態の遷移

各トークンの状態には、遷移できる次の状態の数が制限されています。たとえば、トークンの状態は FORMATTED から ACTIVE または DAMAGED に遷移できますが、FORMATTED から UNFORMATTED に遷移することはできません。

さらに、トークンが遷移できる状態のリストは、遷移がコマンドラインまたはグラフィカルインターフェイスを使用して手動でトリガーされるか、トークン操作を使用して自動的にトリガーされるかによって異なります。許可されている手動遷移のリストは、tokendb.allowedTransitions プロパティーに格納され、tps.operations.allowedTransitions プロパティーコントロールは、ークン動作によってトリガ遷移を可能にしました。

手動およびトークン操作ベースの両方の遷移のデフォルト設定は、/usr/share/pki/tps/conf/CS.cfg 設定ファイルに保存されます。

2.5.2.4.1.2.1. コマンドラインインターフェイスまたはグラフィカルインターフェイスを使用して行われるトークン状態の遷移

コマンドラインまたはグラフィカルインターフェイスで許可される遷移はすべて、tokendb.allowedTransitions プロパティーを使用して TPS 設定ファイルに記載されています。

tokendb.allowedTransitions=0:1,0:2,0:3,0:6,3:2,3:6,4:1,4:2,4:3,4:6,6:7

プロパティーには、遷移のコンマ区切りリストが含まれます。それぞれの遷移は、<current code>:[rep]<new code> 形式で記述されます。このコードは 表2.10「可能な手動トークン状態遷移」 で説明されています。デフォルト設定は /usr/share/pki/tps/conf/CS.cfg に保存されます。

以下の表では、可能な各遷移の詳細を説明します。

表2.10 可能な手動トークン状態遷移
遷移現在の状態次の状態説明

0:1

FORMATTED

DAMAGED

このトークンは物理的に破損しています。

0:2

FORMATTED

PERM_LOST

このトークンは永続的に失われています。

0:3

FORMATTED

SUSPENDED

このトークンは一時停止されています (一時的で失われています)。

0:6

FORMATTED

TERMINATED

このトークンは終了しました。

3:2

SUSPENDED

PERM_LOST

この一時停止されたトークンは永続的に失われています。

3:6

SUSPENDED

TERMINATED

この一時停止されたトークンは終了しています。

4:1

ACTIVE

DAMAGED

このトークンは物理的に破損しています。

4:2

ACTIVE

PERM_LOST

このトークンは永続的に失われています。

4:3

ACTIVE

SUSPENDED

このトークンは一時停止されています (一時的で失われています)。

4:6

ACTIVE

TERMINATED

このトークンは終了しました。

6:7

TERMINATED

UNFORMATTED

このトークンを再利用します。

以下の遷移は、トークンの元の状態に応じて自動的に生成されます。トークンが元々 FORMATTED で、SUSPENDED となると、FORMATTED 状態にのみ戻ることができます。トークンが元々 ACTIVE で、SUSPENDED になると、ACTIVE 状態のみに戻ることができます。

表2.11 自動的にトリガーされるトークンの状態遷移
遷移現在の状態次の状態説明

3:0

SUSPENDED

FORMATTED

この一時停止 (一時的な損失) トークンがあります。

3:4

SUSPENDED

ACTIVE

この一時停止 (一時的な損失) トークンがあります。

2.5.2.4.1.3. トークン操作を使用したトークン状態遷移

トークン操作を使用して実行できる移行はすべて、tokendb.allowedTransitions プロパティーを使用して TPS 設定ファイルで説明されています。

tps.operations.allowedTransitions=0:0,0:4,4:4,4:0,7:0

プロパティーには、遷移のコンマ区切りリストが含まれます。それぞれの遷移は、<current code>:[rep]<new code> 形式で記述されます。このコードは 表2.10「可能な手動トークン状態遷移」 で説明されています。デフォルト設定は /usr/share/pki/tps/conf/CS.cfg に保存されます。

以下の表では、可能な各遷移の詳細を説明します。

表2.12 トークン操作を使用した可能なトークン状態遷移
遷移現在の状態次の状態説明

0:0

FORMATTED

FORMATTED

これにより、トークンの再フォーマットやトークンのアプレット/キーのアップグレードが可能になります。

0:4

FORMATTED

ACTIVE

これにより、トークンを登録できます。

4:4

ACTIVE

ACTIVE

これにより、アクティブなトークンを再登録できます。外部の登録に便利です。

4:0

ACTIVE

FORMATTED

これにより、アクティブなトークンのフォーマットが可能になります。

7:0

UNFORMATTED

FORMATTED

これにより、空白または以前に使用されたトークンのフォーマットが可能になります。

2.5.2.4.1.4. トークンの状態および遷移のラベル

トークン状態および遷移のデフォルトラベルは、/usr/share/pki/tps/conf/token-states.properties 設定ファイルに保存されます。デフォルトでは、ファイルの内容は以下のようになります。

# Token states
UNFORMATTED         = Unformatted
FORMATTED           = Formatted (uninitialized)
ACTIVE              = Active
SUSPENDED           = Suspended (temporarily lost)
PERM_LOST           = Permanently lost
DAMAGED             = Physically damaged
TEMP_LOST_PERM_LOST = Temporarily lost then permanently lost
TERMINATED          = Terminated

# Token state transitions
FORMATTED.DAMAGED        = This token has been physically damaged.
FORMATTED.PERM_LOST      = This token has been permanently lost.
FORMATTED.SUSPENDED      = This token has been suspended (temporarily lost).
FORMATTED.TERMINATED     = This token has been terminated.
SUSPENDED.ACTIVE         = This suspended (temporarily lost) token has been found.
SUSPENDED.PERM_LOST      = This suspended (temporarily lost) token has become permanently lost.
SUSPENDED.TERMINATED     = This suspended (temporarily lost) token has been terminated.
SUSPENDED.FORMATTED      = This suspended (temporarily lost) token has been found.
ACTIVE.DAMAGED           = This token has been physically damaged.
ACTIVE.PERM_LOST         = This token has been permanently lost.
ACTIVE.SUSPENDED         = This token has been suspended (temporarily lost).
ACTIVE.TERMINATED        = This token has been terminated.
TERMINATED.UNFORMATTED   = Reuse this token.
2.5.2.4.1.5. 許可されるトークン状態遷移のカスタマイズ

トークン状態遷移の一覧をカスタマイズするには、/var/lib/pki/ instance_name/tps/conf/CS.cfg で以下のプロパティーを編集します。

  • コマンドラインまたはグラフィカルインターフェイスを使用して実行できる移行のリストをカスタマイズするには、tokendb.allowedTransitions
  • トークン操作を使用して許可される移行のリストをカスタマイズするには、tps.operations.allowedTransitions

必要に応じて、移行はデフォルトのリストから削除できますが、デフォルトのリストにない限り、新しい移行を追加することはできません。デフォルトは /usr/share/pki/tps/conf/CS.cfg に保存されます。

2.5.2.4.1.6. トークンの状態と遷移ラベルのカスタマイズ

トークンの状態と遷移ラベルをカスタマイズするには、デフォルトの /usr/share/pki/tps/conf/token-states.properties をインスタンスフォルダー (/var/lib/pki/ instance_name/tps/conf/CS.cfg) にコピーし、必要に応じてラベルを変更します。

変更は即座に有効になり、サーバーを再起動する必要はありません。TPS ユーザーインターフェイスは読み込みが必要になる場合があります。

デフォルトの状態およびラベル名に戻すには、編集した token-states.properties ファイルをインスタンスフォルダーから削除します。

2.5.2.4.1.7. トークンアクティビティーログ

特定の TPS アクティビティーがログに記録されます。ログファイル内の考えられるイベントは、以下の表にリスト表示されています。

表2.13 TPS アクティビティーログイベント
Activity説明

add

トークンが追加されました。

format

トークンがフォーマットされました。

enrollment

トークンが登録されました。

recovery

トークンが復元されました。

更新

トークンが更新されています。

pin_reset

トークンの PIN がリセットされました。

token_status_change

トークンステータスは、コマンドラインまたはグラフィカルインターフェイスを使用して変更されました。

token_modify

トークンが変更されました。

delete

トークンが削除されました。

cert_revocation

トークン証明書が取り消されました。

cert_unrevocation

トークン証明書は失効しませんでした。

2.5.2.4.2. トークンポリシー

内部登録の場合、各トークンをトークンポリシーのセットで制御できます。デフォルトのポリシーは以下のとおりです。

RE_ENROLL=YES;RENEW=NO;FORCE_FORMAT=NO;PIN_RESET=NO;RESET_PIN_RESET_TO_NO=NO;RENEW_KEEP_OLD_ENC_CERTS=YES

内部登録中の TPS 操作は、トークンの記録に指定したポリシーの対象です。トークンにポリシーが指定されていない場合、TPS はデフォルトのポリシーセットを使用します。

2.5.2.5. マッピングリゾルバー

マッピングリゾルバー は、設定可能な基準に基づいて特定のトークンに割り当てるトークンプロファイルを決定するために TPS が使用する拡張可能なメカニズムです。各マッピングリゾルバーインスタンスは設定で一意に定義でき、各操作は定義されたマッピングリゾルバーインスタンスを参照できます。

注記

マッピングリゾルバーフレームワークは、カスタムプラグインを作成するプラットフォームを提供します。ただし、プラグインの作成方法に関する説明は、このドキュメントの範囲外です。

FilterMappingResolver は、デフォルトで TPS で提供される唯一のマッピングリゾルバー実装です。これにより、各マッピングに マッピング のセットおよびターゲットの結果を定義できます。各マッピングにはフィルターのセットが含まれ、ここでは以下のようになります。

  • 入力フィルターパラメーターがマッピング内の すべて のフィルターを渡すと、target の値が割り当てられます。
  • 入力パラメーターでフィルターが失敗すると、そのマッピングはスキップされ、次の順番に試行されます。
  • フィルターに指定された値がない場合は、常に合格します。
  • フィルターに指定された値がある場合、入力パラメーターは完全に一致する必要があります。
  • マッピングが定義される順序は重要です。合格した最初のマッピングは解決されたと見なされ、呼び出し元に返されます。

入力フィルターパラメーターは、拡張の有無にかかわらずスマートカードトークンから受け取った情報です。上記のルールに従って、FilterMappingResolver に対して実行されます。FilterMappingResolver では、以下の入力フィルターパラメーターがサポートされます。

  • appletMajorVersion - トークン上の Coolkey アプレットのメジャーバージョン。
  • appletMinorVersion - トークン上の Coolkey アプレットのマイナーバージョン。
  • keySet または tokenType

    • keySet - クライアントリクエストでエクステンションとして設定できます。拡張子が指定されている場合は、フィルターの値と一致する必要があります。keySet マッピングリゾルバーは、外部登録を使用する際に keySet 値を決定することを目的としています。複数の鍵セットがサポートされる場合は、外部登録環境で Key Set Mapping Resolver が必要になります (たとえば、スマートカードトークンベンダーごとに必要です)。keySet 値は、Secure Channel を確立する上で重要な TKS のマスターキーを特定するために必要です。ユーザーの LDAP レコードにセット tokenType (TPS プロファイル) が入力されている場合は、どのカードが最終的に登録を行うかがわからないため、keySet を事前に決定することはできません。keySetMappingResolver は、認証前に keySet が解決できるようにすることで、問題の解決に役立ちます。
    • tokenType - okenType は、クライアントリクエストの拡張機能として設定できます。拡張子が指定されている場合は、フィルターの値と一致する必要があります。tokenType (TPS プロファイルとも呼ばれます) は、この時点で内部登録環境に対して決定されます。
  • tokenATR - トークンの Answer to Reset (ATR) です。
  • tokenCUID - "start" および "end" は、このフィルターに渡すためにトークンの Card Unique ID (CUID) の範囲を定義します。
2.5.2.6. TPS ロール

TPS は、デフォルトで以下のロールをサポートします。

  • TPS 管理者 - このロールは以下を実行できます。

    • TPS トークンの管理
    • TPS 証明書およびアクティビティーの表示
    • TPS ユーザーおよびグループの管理
    • 一般的な TPS 設定の変更
    • TPS オーセンティケーターおよびコネクターの管理
    • TPS プロファイルおよびプロファイルマッピングの設定
    • TPS 監査ロギングの設定
  • TPS エージェント - このロールは以下を実行できます。

    • TPS トークンの設定
    • TPS 証明書およびアクティビティーの表示
    • TPS プロファイルのステータスの変更
  • TPS オペレーター - このロールは以下を実行できます。

    • TPS トークン、証明書、およびアクティビティーの表示

2.5.3. TKS/TPS 共有シークレット

TMS のインストール時に、トークンキーサービスとトークン処理システム間に共有された対称鍵が確立されます。この鍵の目的は、Secure Channel に不可欠であるセッションキーをラップしてアンラップすることです。

注記

現在、共有秘密鍵は、ソフトウェア暗号化データベースにのみ保持されます。Red Hat Certificate System の将来のリリースでは、ハードウェアセキュリティーモジュール (HSM) デバイスでのキーの保持をサポートする計画があります。この機能が実装されると、tkstool を使用してキーセレモニーを実行し、キーを HSM に転送するように指示されます。

2.5.4. Enterprise Security Client (ESC)

Enterprise Security Client は、Web ブラウザーに似た HTTP クライアントアプリケーションであり、TPS と通信し、クライアント側からスマートカードトークンを処理します。ESC と TPS の間で HTTPS 接続が確立されている間、各 TLS セッション内のトークンと TMS の間でも基盤となる Secure Channel が確立されます。

2.6. Red Hat Certificate System サービス

Certificate System には、管理者が使用できるさまざまな機能があり、個々のサブシステムと PKI 全体の保守が容易になります。

2.6.1. 通知

証明書の発行や取り消し時など、特定のイベントが発生すると、通知は指定のメールアドレスに直接送信できます。通知フレームワークには、有効化および設定できるデフォルトのモジュールが同梱されています。

2.6.2. ジョブ

自動ジョブは、定義した間隔で実行されます。

2.6.3. ログ

Certificate System と各サブシステムは、システムの監視およびデバッグを可能にするためにシステムイベントを記録する豊富なシステムおよびエラーログを生成します。すべてのログレコードは、迅速に取得するためにローカルファイルシステムに保存されます。ログは設定可能なため、ログは特定タイプのイベントおよび必要なログレベルで作成できます。

Certificate System を使用すると、ログをアーカイブしたり、監査用に配布したりする前に、ログにデジタル署名することができます。この機能により、署名後に改ざんの可能性をログファイルがチェックできるようになります。

2.6.4. 監査

Certificate System は、証明書の要求、発行、取り消し、CRL の公開など、すべてのイベントの監査ログを維持します。これらのログは署名されます。これにより、承認されたアクセスやアクティビティーの検出が可能になります。その後、外部監査人は必要に応じてシステムを監査できます。割り当てられた監査ユーザーアカウントは、署名された監査ログを表示できる唯一のアカウントです。このユーザーの証明書は、ログを署名および暗号化するために使用されます。監査ロギングは、ログに記録されるイベントを指定するよう設定されます。

2.6.5. セルフテスト

Certificate System は、システムの起動時に自動的に実行されるシステムのセルフテストフレームワークを提供し、オンデマンドで実行できます。設定可能なセルフテストのセットはすでに Certificate System に含まれています。

2.6.6. ユーザー、認可、アクセス制御

Certificate System ユーザーはグループ (ロールとも呼ばれる) に割り当てることができます。グループには、どのユーザーが所属するグループにも特権があります。ユーザーには、ユーザーが作成したサブシステムのインスタンスと、ユーザーがメンバーとなるグループの権限のみが付与されます。

認証 は、Certificate System サブシステムが、証明書プロファイルまたはサービスインターフェイスのいずれかに対して認証されているか、クライアントのアイデンティティーを検証するのに使用されます。クライアントが認証を実行するには、単純なユーザー名/パスワード、SSL/TLS クライアント認証、LDAP 認証、NIS 認証、CMC など、さまざまな方法があります。サブシステムへの任意のアクセスに対して認証を実行できます。たとえば、証明書の登録の場合、プロファイルはリクエスターが CA に対して認証する方法を定義します。

クライアントが識別および認証されると、サブシステムは 許可 チェックを実行して、特定のユーザーがサブシステムへのアクセスをどのレベルで許可されているかを判別します。

承認は、個々のユーザーに直接ではなく、グループ、ロール、パーミッションに関連付けられます。Certificate System は、グループを作成し、アクセス制御をそれらのグループに割り当てる認可フレームワークを提供します。既存のグループのデフォルトのアクセス制御は変更可能で、アクセス制御は個々のユーザーおよび IP アドレスに割り当てることができます。システムの主要な部分に対して承認のアクセスポイントが作成され、その位置ごとにアクセス制御ルールを設定できます。

2.6.6.1. デフォルトの管理ロール
注記

Red Hat Certificate System は、ユーザーに指定したパーミッションのコンテキストにおいて、ロールグループ を区別せずに使用します。

Certificate System はデフォルトで、システムに異なるアクセスレベルを持つ 3 つのユーザータイプで設定されています。

  • 管理者 は、サブシステムに対して管理または設定タスクを実行できます。
  • 証明書要求の承認、トークン登録の管理、または鍵の復元など、PKI 管理タスクを実行する エージェント
  • 監査ログを表示および設定できる auditors
注記

デフォルトでは、ブートストラップを目的として、pkispawn ユーティリティーの実行時、Red Hat Certificate System インスタンスの作成中に管理者特権とエージェント特権の両方を処理する管理ユーザーが作成されます。このブートストラップ管理者は、デフォルトで caadmin ユーザー名を使用しますが、pkispawn コマンドに渡す設定ファイルの pki_admin_uid パラメーターでオーバーライドできます。ブートストラップ管理者が、最初の管理者およびエージェントユーザーを作成します。この操作には、ユーザーおよびグループの管理者権限と、証明書を発行するエージェントの権限が必要です。

2.6.6.2. 組み込みサブシステムの信頼ロール

さらに、セキュリティードメインが作成されると、ドメインをホストする CA サブシステムには、Security Domain Administrator の特別なロールが自動的に付与されます。これにより、サブシステムはセキュリティードメインとその中のサブシステムインスタンスを管理できます。他のセキュリティードメイン管理者ロールは、異なるサブシステムインスタンスに対して作成できます。これらの特別なロールは、実際のユーザーをメンバーとして持てません。

2.7. クローン

2.7.1. クローン作成について

高可用性 のプランニングは、1 つ以上のサブシステムのクローンを利用できることで、予定外の停止やその他の問題を削減します。ホストマシンがダウンすると、複製されたサブシステムは要求を処理してサービスを実行し、マスター (元の) サブシステムからシームレスに引き継ぎ、サービスを中断することなく維持できます。

クローン作成されたサブシステムを使用すると、PKI システムのサービスを中断せずに、修復、トラブルシューティング、またはその他の管理タスクのためにシステムをオフラインにできます。

注記

TPS 以外のすべてのサブシステムをクローンできます。

クローン作成は、証明書要求を処理するなど、異なるマシン上のインスタンスを分離することで、PKI にスケーラビリティーを提供する 1 つの方法です。マスターとそのクローンの内部データベースは相互に複製されるため、1 つのサブシステムの証明書要求またはアーカイブされたキーに関する情報は、他のすべてのサブシステムで利用できます。

通常、マスターおよびクローンインスタンスは異なるマシンにインストールされ、それらのマシンは ロードバランサー の内側に配置されます。ロードバランサーは、Certificate System サブシステムに送信された HTTP および HTTPS 要求を受け入れ、それらのリクエストをマスターインスタンスとクローンインスタンスとの間で適切にダイレクトします。一方のマシンに障害が発生した場合、ロードバランサーは、もう一方のマシンがオンラインに戻るまで、まだ実行中のマシンにすべての要求を透過的にリダイレクトします。

図2.5 クローン作成の例

クローンアーチ

Certificate System サブシステムの前にあるロードバランサーは、高可用性システムで実際のフェイルオーバーサポートを提供するものです。ロードバランサーは、Certificate System サブシステムの一部として以下の利点があります。

  • DNS ラウンドロビン。複数のサーバーに負荷を分散するネットワーク輻輳を管理する機能です。
  • スティッキー SSL/TLS。これにより、ユーザーがシステムに戻して、以前使用された同じホストをルーティングできるようになります。

通常、システムのクローンを作成すると、設定サーブレットは内部 LDAP データベース間でレプリカ合意を設定します。ただし、一部のユーザーは、独自のレプリカ合意を確立して管理する場合があります。PKI インスタンスに [Tomcat] セクションを追加し、そのセクションに次の 2 つの name=value ペアを追加することにより、pkispawn 実行ファイルが変更され、これを許可するようになりました。

[Tomcat]
pki_clone_setup_replication=False
pki_clone_reindex_data=False
重要

このようなインストールを指定する場合は、pkispawn を起動する 前に データを複製する必要があります。

2.7.2. クローンの準備

クローンサブシステムのインストール中に使用できるように、証明書を p12 ファイルにエクスポートする必要があります。このコマンドは、クローンサブシステムをインストールまたは設定するのではなく、インストールの準備をします。pki-server SUBSYSTEM-clone-prepare コマンドを使用してサブシステム証明書をエクスポートする方法の例を次に示します。

サブシステム証明書のエクスポート

pki-server ca-clone-prepare --i topology-02-CA --pkcs12-file /tmp/caclone.p12 --pkcs12-password SECret.123
-----------------------------------------------------
Added certificate "subsystemCert cert-topology-02-CA"
-----------------------------------------------------
--------------------------------------------------------
Added certificate "caSigningCert cert-topology-02-CA CA"
--------------------------------------------------------
----------------------------------------------------------
Added certificate "ocspSigningCert cert-topology-02-CA CA"
----------------------------------------------------------
-----------------------------------------------------------
Added certificate "auditSigningCert cert-topology-02-CA CA"
-----------------------------------------------------------

エクスポートされた p12 ファイルに証明書が含まれていることを確認できます。次の例では、pki pkcs12-cert-find の出力で 4 つの証明書が返されます。

pki pkcs12-cert-find --pkcs12-file /tmp/caclone.p12 --pkcs12-password SECret.123
---------------
4 entries found
---------------
Certificate ID: 4649cef11b90c78d126874b91654de98ded54073
Serial Number: 0x4
Nickname: subsystemCert cert-topology-02-CA
Subject DN: CN=Subsystem Certificate,OU=topology-02-CA,O=topology-02_Foobarmaster.org
Issuer DN: CN=CA Signing Certificate,OU=topology-02-CA,O=topology-02_Foobarmaster.org
Trust Flags: u,u,u
Has Key: true

Certificate ID: a304cf107abd79fbda06d887cd279fb02cefe438
Serial Number: 0x1
Nickname: caSigningCert cert-topology-02-CA CA
Subject DN: CN=CA Signing Certificate,OU=topology-02-CA,O=topology-02_Foobarmaster.org
Issuer DN: CN=CA Signing Certificate,OU=topology-02-CA,O=topology-02_Foobarmaster.org
Trust Flags: CTu,Cu,Cu
Has Key: true

Certificate ID: 4a09e057c1edfee40f412551db1959831abe117d
Serial Number: 0x2
Nickname: ocspSigningCert cert-topology-02-CA CA
Subject DN: CN=CA OCSP Signing Certificate,OU=topology-02-CA,O=topology-02_Foobarmaster.org
Issuer DN: CN=CA Signing Certificate,OU=topology-02-CA,O=topology-02_Foobarmaster.org
Trust Flags: u,u,u
Has Key: true

Certificate ID: 3f42f88026267f90f59631d38805cc60ee4c711a
Serial Number: 0x5
Nickname: auditSigningCert cert-topology-02-CA CA
Subject DN: CN=CA Audit Signing Certificate,OU=topology-02-CA,O=topology-02_Foobarmaster.org
Issuer DN: CN=CA Signing Certificate,OU=topology-02-CA,O=topology-02_Foobarmaster.org
Trust Flags: u,u,Pu
Has Key: true

エクスポートされた p12 ファイルを使用して、クローンサブシステムを設定できるようになりました。

2.7.3. CA のクローン作成

クローン作成されたインスタンスはマスターと全く同じ秘密鍵を持つため、それらの証明書は同じになります。CA の場合、つまり、CA 署名証明書が元のマスター CA およびそのクローン作成された CA と同一であることを意味します。クライアントの観点からは、これは単一の CA に似ています。

クローンとマスターの両方のすべての CA は、証明書を発行し、失効要求を処理できます。

複製された CA を管理する主な問題は、発行する証明書にシリアル番号を割り当てる方法です。複製された CA が異なれば、異なるレートのシリアル番号を使用してトラフィックのレベルが異なる可能性があり、2 つの複製された CA が同じシリアル番号の証明書を発行しないことが不可欠です。これらのシリアル番号範囲は、各 CA の範囲を定義する共有の複製エントリーと、1 つの CA 範囲が少なくなったときに再割り当てする次の使用可能な範囲を使用して、動的に割り当ておよび管理されます。

クローン CA を使用するシリアル番号の範囲は fluid です。すべての複製された CA は、次の利用可能な範囲を定義する共通の設定エントリーを共有します。1 つの CA が利用可能な数未満の実行を開始すると、この設定エントリーをチェックし、次の範囲を要求します。エントリーは自動的に更新されます。これにより、次の CA が新規範囲を取得します。

範囲は begin*Number 属性と end*Number 属性で定義され、要求と証明書のシリアル番号には別々の範囲が定義されます。以下に例を示します。

 dbs.beginRequestNumber=1
 dbs.beginSerialNumber=1
 dbs.enableSerialManagement=true
 dbs.endRequestNumber=9980000
 dbs.endSerialNumber=ffe0000
 dbs.replicaCloneTransferNumber=5

CRL を生成、キャッシュ、公開できるのは 1 つの複製 CA のみになります。これは CRL CA です。複製された他の CA に送信された CRL 要求は、すぐに CRL CA にリダイレクトされます。複製された他の CA は、以前 CRL CA によって生成された CRL を取り消し、表示、インポート、およびダウンロードできますが、新しい CRL を生成すると、同期の問題が発生する可能性があります。CRL 生成を別の複製された CA に移動する方法は、「CA クローンおよびマスターの変換」 を参照してください。

マスター CA は、内部データベースへのレプリケーションの変更を監視することで、クローンされた CA 間の関係と情報共有も管理します。

注記

セキュリティードメインマスターである CA がクローンされた場合、そのクローン作成された CA はセキュリティードメインマスターになります。この場合、元の CA とクローンの両方が同じセキュリティードメイン設定を共有します。

重要

「カスタム設定およびクローン」 で説明されているとおり、LDAP データベースのデータはマスターとクローン間で複製されますが、異なるインスタンス用の 設定ファイル は複製されません。つまり、クローンの作成 に変更が発生すると、KRA 接続の追加やカスタムプロファイルの作成など、CS.cfg ファイルに影響する変更が、クローンの設定にコピーされません。

CA 設定への変更は、クローンの作成 にマスターに加える必要があります (これにより、カスタム変更はクローンプロセスに含まれます)。または、作成後に設定の変更をクローンインスタンスに手動でコピーする必要があります。

2.7.4. KRA のクローン作成

KRA では、1 つの KRA にアーカイブされるすべての鍵が他の KRA の内部データベースに複製されます。これにより、キーがアーカイブされた KRA に関係なく、クローンの KRA で鍵のリカバリーを開始できます。

鍵のリカバリーが処理されると、リカバリーの記録はクローンされたすべての KRA の内部データベースに保存されます。

同期キーリカバリーではクローンでリカバリープロセスが開始できますが、開始された単一の KRA で完了する必要があります。これは、適切な承認数が KRA エージェントから取得されてからのみ復元操作がレプリケートされたデータベースに記録されるためです。それまでは、リカバリーが開始する KRA だけが、リカバリー操作について知っています。

重要

Red Hat Certificate System 9 以降で非推奨になり、このドキュメントでは説明されていない同期キーリカバリーメカニズムが存在します。Red Hat は、代わりに非同期鍵リカバリーの使用を推奨します。

2.7.5. 他のサブシステムのクローン作成

レプリケートされた TKS には実際の運用上の違いはありません。その 1 つで作成または維持される情報は、その他のサーバーに複製されます。

OCSP の場合、1 つの複製された OCSP のみが CRL 更新を受け取り、公開された CRL はクローンに複製されます。

2.7.6. クローンおよびキーストア

サブシステムのクローンを作成すると、同じ機能を実行するサーバープロセス 2 つが作成されます。別のサブシステムの新規インスタンスが作成され、同じ鍵と証明書を使用してその操作を実行するように設定されます。マスタークローン用の鍵を保存する場所に応じて、キーにアクセスするための方法が非常に異なります。

鍵と証明書が内部ソフトウェアトークンに保存されている場合は、初回の設定時にマスターサブシステムからエクスポートする必要があります。マスターインスタンスの設定時に、pkispawn 設定ファイルで pki_backup_keys および pki_backup_password パラメーターを指定することにより、システムキーと証明書を PKCS #12 ファイルにバックアップできます。詳細は、pki_default.cfg(5) man ページの BACKUP PARAMETERS セクションを参照してください。

初期設定時に鍵がバックアップされていない場合は、「ソフトウェアデータベースからのサブシステムキーのバックアップ」 に記載されているように、PKCS12Export ユーティリティーを使用して PKCS #12 ファイルに鍵を抽出できます。

次に、PKCS #12 ファイルをクローンサブシステムにコピーし、pki_clone_pkcs12_password および pki_clone_pkcs12_path パラメーターを使用して pkispawn 設定ファイルでその場所とパスワードを定義します。詳細は、pkispawn(8) man ページの Installing a Clone セクションを参照してください。特に、PKCS#12 ファイルが pkiuser ユーザーからアクセスできることを確認し、正しい SELinux ラベルがあることを確認します。

鍵と証明書がハードウェアトークンに保存されている場合は、ハードウェアトークン固有のユーティリティーを使用して鍵と証明書をコピーするか、またはトークンで直接参照する必要があります。

  • SSL/TLS サーバーキーと証明書をクローンインスタンスに対して除いた、必要なすべての鍵と証明書を複製します。これらの証明書のニックネームは同じままにします。さらに、必要なすべてのルート証明書をマスターインスタンスからクローンインスタンス (チェーンやクロスペアの証明書など) にコピーします。
  • トークンがネットワークベースである場合、鍵と証明書は単にトークンで利用できる必要があり、鍵と証明書はコピーする必要はありません。
  • ネットワークベースのハードウェアトークンを使用する場合は、単一障害点を回避するために、ハードウェアトークンで高可用性機能が有効になっていることを確認してください。

2.7.7. LDAP とポートに関する考慮事項

「クローン」 で説明したように、クローン作成の動作の一部は、複製されたサブシステム間で情報を複製することです。これにより、サブシステムは同一のデータセットとレコードから機能します。つまり、レプリケートされたサブシステムの LDAP サーバーが通信できる必要があります。

Directory Server インスタンスが異なるホストにある場合は、Directory Server インスタンスが相互に接続できるように、適切なファイアウォールアクセスがあることを確認してください。

注記

クローン作成されたサブシステムとそのマスターは、共通の接尾辞間でデータを複製しつつ、別の LDAP サーバーを使用する必要があります。

サブシステムは、LDAPS ポートを介した SSL/TLS または LDAP ポートを介した標準接続のいずれかを使用して、内部データベースに接続できます。サブシステムが複製されると、複製インスタンスはそのマスターと同じ接続方法 (SSL/TLS または標準) を使用してデータベースに接続します。ただし、クローン作成では、追加のデータベース接続があります。マスターの Directory Server データベースからクローンの Directory Server データベースへの接続です。この接続には、以下の 3 つの接続オプションがあります。

  • マスターが SSL/TLS を使用してデータベースに接続する場合、クローンは SSL/TLS を使用し、マスター/クローンの Directory Server データベースはレプリケーションに SSL/TLS 接続を使用します。
  • マスターがデータベースへの標準接続を使用する場合、クローンは標準接続を使用する必要があり、Directory Server データベースは、暗号化されていない接続を複製に使用 できます
  • マスターがデータベースへの標準接続を使用する場合、クローンは標準接続を使用する必要が ありますが、複製用のマスター/クローンの Directory Server データベースに Start TLS を使用するオプションがあります。TLS は、標準ポートでセキュアな接続を開きます。

    注記

    TLS を使用するには、SSL/TLS 接続を受け入れるように Directory Server を設定する必要があります。つまり、クローンを設定する前に、サーバー証明書と CA 証明書を Directory Server にインストールし、SSL/TLS を有効にする必要があります。

マスターが使用する接続メソッド (セキュアまたは標準) はクローンで使用し、クローンを設定する前に Directory Server データベースに対して適切に設定する必要があります。

重要

クローンが安全な接続を介してマスターに接続する場合でも、クローンの設定中は、標準の LDAP ポート (デフォルトでは 389) が開いていて、LDAP サーバーで有効になっている必要があります。

セキュアな環境では、クローンの設定後にマスターの Directory Server インスタンスで標準の LDAP ポートを無効にすることができます。

2.7.8. レプリカ ID 番号

クローン作成は、マスターインスタンスの Directory Server と、クローンインスタンスの Directory Server との間でレプリカ合意を設定することをベースとしています。

レプリケーションとともに関連するサーバーは、同じレプリケーション トポロジー にあります。サブシステムインスタンスのクローンが作成されるたびに、トポロジー全体に追加されます。Directory Server は、レプリカ ID 番号 に基づいてトポロジー内の異なるサーバー間で区別されません。このレプリカ ID は、トポロジー内のすべてのサーバーで一意である必要があります。

要求および証明書に使用されるシリアル番号の範囲 (「CA のクローン作成」) と同様に、すべてのサブシステムには、許可されるレプリカ ID の範囲が割り当てられます。サブシステムのクローン時に、レプリカ ID の 1 つをその範囲から新しいクローンインスタンスに割り当てます。

dbs.beginReplicaNumber=1
dbs.endReplicaNumber=95

インスタンスが現在の範囲を使い果たし始めると、レプリカ ID の範囲を新しい番号で更新できます。

2.7.9. カスタム設定およびクローン

クローンの作成後、クローン間、またはマスターとクローンの間で 設定 の変更は複製されません。インスタンスの設定は、複製されたデータベースの外部にある CS.cfg ファイルにあります。

たとえば、CA にはマスターとクローンの 2 つがあります。設定に関連付けられる新しい KRA が、マスター CA とともにインストールされている。CA-KRA コネクター情報はマスター CA の CS.cfg ファイルに保存されますが、このコネクター情報はクローン CA 設定に追加されません。キーアーカイブを含む証明書要求がマスター CA に送信される場合は、CA-KRA コネクター情報を使用してキーのアーカイブが KRA に転送されます。要求がクローン CA に送信される場合、KRA は認識されず、キーのアーカイブ要求は許可されません。

マスターサーバーまたはクローンサーバーの設定に加えた変更は、他のクローンインスタンスに複製されません。クローンを作成するには、重要な設定を手動で追加する必要があります。

注記

マスターサーバーの必要なカスタム設定をすべて設定してから、クローンを設定できます。たとえば、すべてのコネクター情報がマスター CA 設定ファイルにあるようにインストールしたり、カスタムプロファイルを作成したり、マスター OCSP レスポンダーのすべての公開ポイントを設定したりします。LDAP プロファイルが Directory Server に保存されている場合は、複製され、サーバー間で同期されることに注意してください。

マスターインスタンスのカスタム設定は、クローン時に クローンのインスタンスに追加されます (ただし、後では機能しません)。

第3章 サポートされる標準およびプロトコル

Red Hat Certificate System は、可能な限りパフォーマンスと相互運用性を確保できるように、多くのパブリックプロトコルおよび標準プロトコル RFC に基づいています。この章では、Certificate System {VER} で使用または対応している主な標準およびプロトコルについて、管理者がクライアントサービスを効果的に計画できるように、この章で概説しています。

3.1. TLS、ECC、および RSA

Transport Layer Security (TLS) プロトコルは、クライアントとサーバー間の認証と暗号化された通信の汎用的な標準です。クライアントとサーバーの認証は TLS 上で行われます。

TLS は、公開鍵と対称鍵の暗号化の組み合わせを使用します。対称キーの暗号化は公開鍵の暗号化よりもはるかに高速ですが、公開鍵の暗号化を使用すると認証の手法が向上します。TLS セッションは常に、ハンドシェイク と呼ばれるメッセージの交換で開始します。これはサーバーとクライアント間の初期通信です。ハンドシェイクにより、サーバーは公開鍵技術を使用してクライアントに対して自己認証を行い、必要に応じてクライアントがサーバーに対して認証できます。次に、クライアントとサーバーは、以下に示すセッション中に迅速な暗号化、復号、および整合性の検証に使用される対称鍵の作成において連携できるようになります。

TLS は、サーバーやクライアントの認証、証明書の送信、セッション鍵の確立などのさまざまな暗号化アルゴリズム (暗号) をサポートします。クライアントとサーバーは、異なる暗号スイートまたは暗号のセットをサポートする場合があります。その他の機能に加えて、ハンドシェイクは、サーバーおよびクライアントが相互に認証に使用される暗号スイートをどのようにネゴシエートし、証明書を送信し、セッションキーを確立する方法を決定します。

RSA や Elliptic Curve Diffie-Hellman (ECDH) などの鍵交換アルゴリズムは、サーバーとクライアントが TLS セッション中に使用する対称鍵を決定する方法を管理します。TLS は ECC (Elliptic Curve Cryptography) 暗号化スイートおよび RSA に対応します。Certificate System は、RSA と ECC の両方の公開鍵暗号システムをネイティブにサポートします。

最近の鍵交換アルゴリズムは、安全な通信のための共通鍵を確立する際に、2 人以上の当事者がそれぞれ結果に影響を与えることができる 鍵合意プロトコル に置き換わっています。キー合意は、PFS (Perfect Forward Secrecy) の実装を許可するため、鍵交換が推奨されます。PFS を使用する場合、鍵共有を目的として、非決定論的アルゴリズムによってセッションごとにランダムな公開鍵 (一時暗号パラメーターまたは 一時鍵 とも呼ばれます) が生成されます。その結果、複数のメッセージの不正使用につながる秘密の値がなく、過去や今後の通信量は保護されません。

注記

コンピューティング機能が向上するのに合わせてセキュリティーを提供するには、より長い RSA キーが必要です。推奨される RSA 鍵の長さは 2048 ビットです。多くのサーバーは 1024 ビット鍵を使用しますが、サーバーは少なくとも 2048 ビット鍵に移行する必要があります。64 ビットマシンの場合は、より強力なキーの使用を検討してください。すべての CA は、可能であれば 2048 ビット鍵と、より強力な鍵 (3072、4096 ビットなど) を使用する必要があります。

3.1.1. サポート対象の暗号スイート

暗号化およびハッシュアルゴリズムは、さまざまな脆弱性とセキュリティー強度に関して絶えず変化しています。原則として、Red Hat Certificate System は NIST ガイドライン に従い、サーバーキーに関連する TLS 1.1 および TLS 1.2 暗号スイートをサポートします。

3.2. 許可されるキーアルゴリズムとそのサイズ

Red Hat Certificate System は、基礎となる PKCS #11 モジュールにより提供されている場合は、以下の鍵アルゴリズムとサイズに対応します。

  • 許可される RSA 鍵サイズ:

    • 2048 ビット以上
  • FIPS PUB 186-4 標準仕様に定義されている EC 曲線または同等のもの。

    • nistp256
    • nistp384
    • nistp521

3.3. 許可されるハッシュ関数

以下の主要なハッシュメッセージ認証 (HMAC) を使用できます。

  • SHA-256
  • SHA-384
  • SHA-512

以下の暗号ハッシュ関数が許可されます。

  • SHA-256
  • SHA-384
  • SHA-512

3.4. IPv4 アドレスおよび IPv6 アドレス

Certificate System は、IPv4 アドレスと IPv6 アドレスの両方をサポートします。非常に多様な状況では、Certificate System サブシステムまたは操作がホスト名または IP アドレスを参照します。IPv4 と IPv6 形式のアドレスの両方をサポートすることで、ネットワークプロトコルとの互換性が転送されます。IPv6 接続をサポートする操作には、以下が含まれます。

  • TPS、TKS、CA 間を含むサブシステム間の通信、およびセキュリティードメインへの参加
  • TPS と Enterprise Security Client 間のトークン操作
  • サブシステムロギング
  • アクセス制御の手順
  • pki ユーティリティー、Subject Alt Name Extension ツール、HttpClient、Bulk Issuance Tool を含む Certificate System ツールで実行される操作
  • クライアント通信 (pkiconsole ユーティリティーおよび Web サービス用の IPv6 対応ブラウザーの両方を含む)
  • 証明書要求名と証明書サブジェクト名 (ユーザー、サーバー、ルーターの証明書など)
  • 公開
  • 内部データベースおよび認証ディレクトリーでの LDAP データベースへの接続

ホスト名または URL が参照されるたびに、IP アドレスを使用することができます。

  • IPv4 アドレスは、n.n.n.n または n.n.n.n,m.m.m.m の形式にする必要があります。たとえば、128.21.39.40 または 128.21.39.40,255.255.255.00 です。
  • IPv6 アドレスは 128 ビット名前空間を使用します。IPv6 アドレスはコロンで区切られ、ネットマスクはピリオドで区切られます。たとえば、0:0:0:0:0:0:13.1.68.3FF01::43、または 0:0:0:0:0:0:13.1.68.3,FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:255.255.255.0 です。

DNS が適切に設定されている場合、IPv4 アドレスまたは IPv6 アドレスを使用して Web サービスページおよびサブシステム Java コンソールに接続できます。最も一般的な方法は、完全修飾ドメイン名を使用することです。

https://ipv6host.example.com:8443/ca/services
pkiconsole https://ipv6host.example.com:8443/ca

IPv6 数値アドレスを使用するには、URL の完全修飾ドメイン名を角かっこで囲まれた IPv6 アドレス ([<IPv6_address>]) に置き換えます。以下に例を示します。

https://[00:00:00:00:123:456:789:00:]:8443/ca/services
pkiconsole https://[00:00:00:00:123:456:789:00:]:8443/ca

3.5. サポートされる PKIX 形式およびプロトコル

Certificate System は、IETF により Public-Key Infrastructure (X.509) で定義された多くのプロトコルとフォーマットをサポートします。以下に示す PKIX 標準に加えて、その他の PKIX リスト化された標準を IETF Datatracker の Web サイトから入手できます。

表3.1 Certificate System 10 でサポートされている PKIX 標準
形式またはプロトコルRFC またはドラフト説明

X.509 バージョン 1 およびバージョン 3

 

国際電気通信連合 (ITU) が推奨するデジタル証明書形式。

Certificate Request Message Format (CRMF)

RFC 4211

CA に証明書要求を送信するためのメッセージ形式。

証明書管理メッセージ形式 (CMMF)

 

メッセージ形式。エンドエンティティーから CA に証明書要求および失効リクエストを送信し、エンドエンティティーに情報を返します。CMMF は、別の標準である CMC に含まれています。

CS を介した証明書管理メッセージ (CMC)

RFC 5274

CS および PKCS #10 に基づく公開鍵認定製品への一般的なインターフェイス。これには、Diffie-Hellman 公開鍵で RSA 署名の証明書用の証明書登録プロトコルが含まれます。CMC には CRMF と CMMF が組み込まれています。

暗号化メッセージ構文 (CMS)

RFC 2630

デジタル署名と暗号化に使用される PKCS #7 構文のスーパーセット。

PKIX 証明書および CRL プロファイル

RFC 5280

インターネット用の公開鍵インフラストラクチャー向けに IETF により開発された標準規格です。証明書および CRL のプロファイルを指定します。

オンライン証明書ステータスプロトコル (OCSP)

RFC 6960

CRL を使用せずにデジタル署名の現在のステータスを決定するプロトコルは便利です。

第4章 サポート対象のプラットフォーム

このセクションでは、Red Hat Certificate System 10 でサポートされているさまざまなサーバープラットフォーム、ハードウェア、トークン、およびソフトウェアを説明します。

4.1. 一般要件

詳細は、Red Hat Certificate System 10 リリースノート で該当するセクションを参照してください。

4.2. サーバーサポート

Certificate System 10.8 の認証局 (CA)、Key Recovery Authority (KRA)、オンライン証明書ステータスプロトコル (OCSP)、トークンキーサービス (TKS)、およびトークン処理システム (TPS) サブシステムの実行は、Red Hat Enterprise Linux 8.10 以降でサポートされています。サポートされている Red Hat Directory Server のバージョンは 11.9 以降です。

注記

Certificate System 10.8 は、認定済みのハイパーバイザーの Red Hat Enterprise Linux 8.10 仮想ゲストでの実行に対応します。詳細は、ナレッジベースの記事 Which hypervisors are certified to run Red Hat Enterprise Linux? を参照してください。

4.3. サポートされる Web ブラウザー

Red Hat Certificate System 10 は、以下のブラウザーに対応しています。

表4.1 プラットフォームでサポートされる Web ブラウザー
プラットフォームエージェントサービスエンドユーザーページ

Red Hat Enterprise Linux

Firefox 60 以降 [a]

Firefox 60 以降

[a] この Firefox バージョンは、ブラウザーからキーの生成およびアーカイブに使用される暗号化 Web オブジェクトに対応しなくなりました。そのため、この分野では機能が限定されるはずです。
注記

HTML ベースのインスタンス設定に完全に対応するブラウザーは Mozilla Firefox のみです。

4.4. サポート対象のハードウェアセキュリティーモジュール

以下の表は、Red Hat Certificate System がサポートする Hardware Security Modules (HSM) を示しています。

HSMファームウェアアプライアンスソフトウェアクライアントソフトウェア

nCipher nShield Connect XC (High)

nShield_HSM_Firmware-12.72.1

12.71.0

SecWorld_Lin64-12.71.0

Thales TCT Luna Network HSM Luna-T7

lunafw_update-7.11.1-4

7.11.0-25

610-500244-001_LunaClient-7.11.1-5

第5章 Certificate System の計画

各 Red Hat Certificate System サブシステムは同じサーバーマシンにインストールするか、別のサーバーにインストールするか、組織全体で複数のインスタンスをインストールすることができます。サブシステムをインストールする前に、デプロイメントを計画することが重要です。どのような種類の PKI サービスが必要ですか。ネットワーク要件Certificate System にアクセスするために必要な人、そのロール、および物理的な場所は何ですか。発行する証明書の種類と、それらの制約またはルールを設定する必要があるか。

この章では、Certificate System のデプロイメントプランニングに関する基本的な質問を説明します。これらのデシジョンの多くは相互関連です。たとえば、スマートカードを使用して TPS サブシステムおよび TKS サブシステムをインストールするかどうかを決定するかどうかを決定するなど、別の選択肢に影響します。

5.1. 必要なサブシステムの決定

Certificate System サブシステムは、証明書管理のさまざまな側面に対応しています。インストールするサブシステムのプランニングは、デプロイメントが必要な PKI 操作を定義する方法の 1 つです。

ソフトウェアや設備などの証明書は、定義されたステージでライフサイクルを持ちます。最も基本的な手順は以下のとおりです。

  • 要求および発行されます。
  • これは有効です。
  • 期限切れになります。

ただし、このシンプルなシナリオでは、証明書に関する多くの共通問題を説明しません。

  • 証明書の有効期限が切れる前に従業員が退職するかどうか
  • CA 署名証明書の有効期限が切れると、その証明書を使用して発行および署名されたすべての証明書も有効期限が切れます。これにより、CA 署名証明書が更新され、発行された証明書が有効に保つか、または再発行されますか ?
  • 従業員がスマートカードを失ったか、またはスマートカードに残るかどうか。元の証明書キーを使用して代替証明書が発行されますか。他の証明書は一時停止または取り消されるか。一時的な証明書は許可されますか。
  • 証明書の有効期限が切れると、新しい証明書を発行するか、元の証明書が更新されますか ?

これにより、証明書の管理に関する他の 3 つの考慮事項 (失効、更新、および代替) を紹介します。

他の考慮事項は、認証局への負荷です。発行や更新のリクエストはたくさんありますか。証明書が有効かどうかの検証を試みるクライアントから大量のトラフィックがありますか。ID を認証するための証明書を要求する人はどのようになっていますか。また、そのプロセスによって発行プロセスが遅くなりますか。

5.1.1. 単一の Certificate Manager の使用

Certificate System PKI の中核は、Certificate Manager (認証局) です。CA は証明書要求を受け取り、すべての証明書を発行します。

図5.1 CA のみの Certificate System

ca basic

要求および発行のための基本処理はすべて、Certificate Manager が処理でき、これは唯一の必須サブシステムです。組織の要求に応じて、単一または多数の Certificate Manager をさまざまな関係で配置することができます。

証明書の発行に加えて、Certificate Manager は証明書を取り消すこともできます。管理者にとっての 1 つの質問は、証明書が紛失、侵害された場合、または証明書が発行された人や機器が会社をいなくなった場合に、証明書をどのように処理するかです。証明書要求を失効すると、失効日前に証明書を無効化し、失効した証明書のリストがコンパイルされ、発行 CA によって公開され、クライアントが証明書のステータスを検証できるようになります。

cm single

5.1.2. 紛失したキーの計画: キーのアーカイブと回復

CA が実行できない操作の 1 つがキーのアーカイブとリカバリーです。非常に現実的なシナリオとして、ユーザーに秘密鍵を紛失があります。たとえば、鍵がブラウザーデータベースから削除されたり、スマートカードを家に忘れてきたりする可能性があります。多くの一般的なビジネスオペレーションでは、暗号化された電子メールなどの暗号化されたデータが使用され、そのデータのロックを解除するキーを失うと、データ自体が失われます。会社のポリシーによっては、交換用の証明書を再生成または再インポートするためにキーをリカバリーする方法が必要になる可能性があり、どちらの操作にも秘密キーが必要です。

これには、キーを特別にアーカイブおよび取得するサブシステムである KRA が必要です。

図5.2 CA および KRA

ca drm

キーリカバリー認証局は暗号鍵 (キーアーカイブ) を保存し、CA が証明書 (キーのリカバリー) を再発行できるようにこれらのキーを取得できます。KRA は、通常の証明書に対して実行される場合でも、スマートカードを登録する場合でも、Certificate System によって生成された証明書のキーを格納できます。

キーのアーカイブおよびリカバリーのプロセスは、「キーのアーカイブ、リカバリー、ローテーション」 で詳しく説明されています。

注記

KRA は、秘密鍵のアーカイブおよび復元を目的としています。したがって、エンドユーザーは、公開鍵と秘密鍵のペアを格納するために、デュアルキー生成をサポートするブラウザーを使用する必要があります。

5.1.3. 証明書要求の処理の分散

サブシステムを連携させる方法のもう 1 つが負荷分散です。サイトのトラフィックが多い場合は、相互のクローンとして、またはフラット階層 (各 CA が独立している場合) やツリー階層 (一部の CA が他の CA に従属している場合) として、多数の CA を簡単にインストールできます。詳細は、「認証局階層の定義」 を参照してください。

5.1.4. クライアント OCSP 要求の分散

証明書が有効期間内にありますが無効にする必要がある場合は、取り消すことができます。Certificate Manager は、取り消された証明書のリストを公開することができます。これにより、クライアントが証明書が有効であることを確認する必要がある場合は、リストを確認できます。これらの要求は、オンライン証明書ステータスプロトコル要求 で、特定の要求と応答の形式を持ちます。Certificate Manager には、OCSP レスポンダーが組み込まれており、OCSP 要求を自分で検証できます。

ただし、証明書要求トラフィックと同様に、サイトには、証明書のステータスを確認するためのクライアントの要求が多数ある可能性があります。Example Corp. には大規模な Web ストアがあり、各顧客のブラウザーは SSL/TLS 証明書の有効性を検証しようとします。ここでも、CA は証明書の発行数を処理することができますが、要求トラフィックが高いとパフォーマンスに影響します。この場合、Example Corp. は外部の OCSP Manager サブシステムを使用して証明書のステータスを確認し、Certificate Manager は更新された CRL を頻繁に公開するだけで済みます。

図5.3 CA および OCSP

ca ocsp

5.1.5. スマートカードの使用

スマートカードは、キーと証明書のデータを格納するために物理的な媒体を使用するため、通常、直接の登録と承認のプロセスが必要です。つまり、複数のエージェントが TPS にアクセスでき、多くの場合は、異なるオフィスまたは地理的な場所にある複数の TPS サブシステムが必要になります。

トークン管理システムは非常にスケーラブルです。複数の TPS は、単一の CA、TKS、または KRA インスタンスと連携するように設定できますが、複数の Enterprise Security Clients は 1 つの TPS と通信できます。追加のクライアントがインストールされると、TPS を再設定せずに TPS インスタンスを参照できます。同様に、TPS が追加されるため、これらのサブシステムを再設定せずに、同じ CA、TKS、および KRA インスタンスを参照することができます。

tms2

インストール後に、TPS 設定を編集して、フェイルオーバーのサポートに追加の CA インスタンス、KRA インスタンス、および TKS インスタンスを使用できます。そのため、プライマリーサブシステムが利用できない場合、TPS はトークンサービスを中断せずに次に利用可能なシステムに切り替えます。

5.2. 認証局階層の定義

CA は PKI の中心となるため、CA システムの相互関係 (CA 階層) や他のサブシステム (セキュリティードメイン) の両方は、Certificate System PKI の計画に不可欠です。

PKI に複数の CA がある場合、CA は階層またはチェーンに構築されます。チェーン内の別の CA は、ルート CA と呼ばれます。チェーン内の別の CA の背後にある CA は 下位の CA と呼ばれます。CA は、Certificate System デプロイメント以外のルートに従属させることもできます。たとえば、Certificate System デプロイメント内でルート CA として動作する CA は、サードパーティーの CA に従属できます。

証明書マネージャー (または CA) は、CA 署名証明書 (証明書の発行を許可する証明書) が別の CA によって発行されるため、別の CA に従属します。下位 CA 署名証明書を発行した CA は、CA 署名証明書の内容を使用して CA を制御します。CA は、発行できる証明書の種類、証明書に含めることができる拡張機能、従属 CA が作成できる従属 CA のレベル数、ならびに発行できる証明書の有効期間および下位 CA 署名証明書の有効期間を通じて、従属 CA を制約できます。

注記

下位 CA はこれらの制約に違反する証明書を作成できますが、これらの制約に違反する証明書を認証するクライアントはその証明書を受け入れません。

自己署名ルート CA は、独自の CA 署名証明書に署名し、独自の制約を設定するとともに、発行する下位 CA 署名証明書に制約を設定します。

Certificate Manager は、ルート CA または下位 CA として設定できます。最初の CA が自己署名ルートをインストールし、サードパーティーに適用して証明書を発行するのを待つのが最も簡単な方法です。ただし、完全な PKI をデプロイする前に、ルート CA を用意するかどうか、いくつ持つか、ルート CA と従属 CA の両方を置く場所を検討してください。

5.2.1. パブリック CA への従属

Certificate System CA をサードパーティー公開 CA にチェーンすると、公開 CA が、下位 CA が発行できる証明書の種類と証明書チェーンの性質に課す制限が導入されます。たとえば、サードパーティー CA にチェーンする CA は、SSL/TLS サーバー証明書ではなく、S/MIME (Secure Multipurpose Internet Mail Extensions) および SSL/TLS クライアント認証証明書のみの発行に制限される可能性があります。パブリック CA を使用する方法は他にもあります。これは一部の PKI デプロイメントに許可されないことがあります。

パブリック CA にチェーンする利点の 1 つは、サードパーティーがルート CA 証明書を Web ブラウザーまたは他のクライアントソフトウェアに送信することです。これは、管理者が制御できないブラウザーを使用してさまざまな企業がアクセスする証明書を持つエクストラネットにとって大きな利点になる可能性があります。CA 階層にルート CA を作成するということは、ローカル組織が、Certificate System によって発行された証明書を使用するすべてのブラウザーにルート証明書を取得する必要があることを意味します。イントラネット内でこれを行うためのツールはありますが、エクストラネットでは実現が難しい場合があります。

5.2.2. Certificate System CA への従属

Certificate System CA は ルート CA として機能するため、サーバーは独自の CA 署名証明書、およびその他の CA 署名証明書に署名し、組織固有の CA 階層を作成します。このサーバーは、下位 A として設定することもできます。つまり、サーバーの CA 署名鍵が既存の CA 階層にある別の CA により署名されます。

Certificate System CA をルート CA として設定すると、発行した CA 署名証明書の内容を制御するポリシーを設定し、Certificate System 管理者がすべての下位 CA を制御することができます。下位 CA は、ルート CA の設定とは対照的に、独自の認証および証明書プロファイル設定を評価することで証明書を発行します。

5.2.3. リンクされた CA

Certificate System の Certificate Manager は、リンクされた CA として機能し、検証用のサードパーティーまたはパブリック CA までチェーンできます。これにより、会社の証明書階層外で証明書チェーンを検証できます。Certificate Manager は、サードパーティーの CA から Certificate Manager の CA 署名証明書 を要求して、サードパーティーの CA にチェーンされます。

これに関連し、Certificate Manager は、クロスペア または クロス署名の証明書 を発行することもできます。これら 2 つの CA 間でクロス署名証明書を発行および格納することにより、2 つの異なる CA 間で信頼される関係を作成できます。クロス署名付き証明書ペアを使用すると、組織の PKI 以外で発行された証明書は、システム内で信頼できます。

これらは、連邦ブリッジ認証局 (FBCA) の定義に関連して、ブリッジ証明書 とも呼ばれます。

5.2.4. CA のクローン作成

ルート CA と従属 CA の階層を作成する代わりに、Certificate Manager の複数のクローンを作成し、シリアル番号の範囲内で証明書を発行するように各クローンを設定することができます。

クローン として作成された Certificate Manager は、同じ CA 署名鍵と、別の Certificate Manager (マスター Certificate Manager) を使用します。

注記

サブシステムが複製される可能性がある場合は、設定プロセス中にそのキーペアをエクスポートして、安全な場所に保存するのが最も簡単です。クローンが元の Certificate Manager のキーから証明書を生成できるように、クローンインスタンスの設定時に、元の Certificate Manager のキーペアが使用可能である必要があります。

pk12util または PKCS12Export コマンドを使用して、後でセキュリティーデータベースから鍵をエクスポートすることもできます。

クローン CA と元の CA は、同じ CA 署名鍵と証明書を使用して、発行する証明書に署名するため、すべての証明書の 発行者名 は同じです。クローン CA と元の Certificate Manager は、単一の CA であるかのように証明書を発行します。高可用性フェイルオーバーのサポートのために、これらのサーバーは異なるホストに置くことができます。

クローン作成の利点は、Certificate Manager の負荷を複数のプロセスまたは複数の物理マシンに分散することです。登録需要の高い CA の場合は、クローン作成から得られる配布により、指定された時間間隔でより多くの証明書に署名して発行できます。

クローン作成された Certificate Manager には、エージェントやエンドエンティティーゲートウェイ機能など、通常の Certificate Manager と同じ機能があります。

クローンが発行する証明書のシリアル番号は、動的に分散されます。各クローンとマスターのデータベースが複製されるため、すべての証明書要求と発行された証明書の両方も複製されます。これにより、シリアル番号の競合が発生せず、クローンされた Certificate Manager にシリアル番号の範囲を手動で割り当てる必要がなくなります。

5.3. セキュリティードメインの計画

セキュリティードメイン は PKI サービスのレジストリーです。CA などの PKI サービスは、これらのドメインに独自の情報を登録するため、PKI サービスのユーザーはレジストリーを確認して他のサービスを検索できます。Certificate System のセキュリティードメインサービスは、Certificate System サブシステムの PKI サービスの登録と、共有信頼ポリシーのセットの両方を管理します。

レジストリーは、ドメイン内でサブシステムによって提供されるすべての PKI サービスの完全なビューを提供します。各 Certificate System サブシステムは、ホストまたはセキュリティードメインのメンバーのいずれかである必要があります。

CA サブシステムは、セキュリティードメインをホストできる唯一のサブシステムです。セキュリティードメインは、特権ユーザーおよびグループ情報の CA 内部データベースを共有して、セキュリティードメインを更新し、新しい PKI サービスを登録し、証明書を発行できるユーザーを決定します。

セキュリティードメインは CA の設定中に作成され、セキュリティードメインの CA の LDAP ディレクトリーにエントリーが自動的に作成されます。各エントリーには、ドメインに関する重要な情報がすべて含まれます。セキュリティードメインを登録する CA を含む、ドメイン内のすべてのサブシステムは、セキュリティードメインコンテナーエントリーの下に記録されます。

CA の URL はセキュリティードメインを一意に識別する。セキュリティードメインには、Example Corp Intranet PKI などの分かりやすい名前も付けられます。他のすべてのサブシステム (KRA、TPS、TKS、OCSP、およびその他の CA) は、サブシステムの設定時にセキュリティードメイン URL を指定して、セキュリティードメインのメンバーになる必要があります。

セキュリティードメイン内の各サブシステムは、異なるサーバーやブラウザーから取得できる同じ信頼ポリシーと信頼されたルートを共有します。セキュリティードメインで利用可能な情報は、新しいサブシステムの設定中に使用されます。これにより、設定プロセスが合理化および自動化されます。たとえば、TPS が CA に接続する必要がある場合、TPS はセキュリティードメインを参照して、使用可能な CA のリストを取得できます。

各 CA には独自の LDAP エントリーがあります。セキュリティードメインは、CA エントリーの下にある組織グループです。

ou=Security Domain,dc=server.example.com-pki-ca

次に、セキュリティードメイン組織グループの下に各サブシステムタイプのリストがあり、グループタイプを識別するための特別なオブジェクトクラス (pkiSecurityGroup) があります。

cn=KRAList,ou=Security Domain,o=pki-tomcat-CA
objectClass: top
objectClass: pkiSecurityGroup
cn: KRAList

各サブシステムインスタンスは、エントリータイプを識別するための特別な pkiSubsystem オブジェクトクラスを使用してそのグループのメンバーとして保存されます。

dn: cn=kra.example.com:8443,cn=KRAList,ou=Security Domain,o=pki-tomcat-CA
objectClass: top
objectClass: pkiSubsystem
cn: kra.example.com:8443
host: server.example.com
UnSecurePort: 8080
SecurePort: 8443
SecureAdminPort: 8443
SecureAgentPort: 8443
SecureEEClientAuthPort: 8443
DomainManager: false
Clone: false
SubsystemName: KRA kra.example.com 8443

サブシステムが操作を実行するために別のサブシステムに接続する必要がある場合は、(CA の管理ポートを介して接続するサーブレットを呼び出すことにより) サブシステムがセキュリティードメインをホストする CA に接続します。次に、セキュリティードメイン CA は、LDAP データベースからサブシステムに関する情報を取得し、その情報を要求元のサブシステムに返します。

サブシステムはサブシステム証明書を使用してセキュリティードメインに対して認証します。

セキュリティードメインを計画するときに以下を考慮してください。

  • セキュリティードメインをホストする CA は外部認証局によって署名できます。
  • 複数のセキュリティードメインを組織内に設定することができます。ただし、各サブシステムは 1 つのセキュリティードメインにのみ属できます。
  • ドメイン内のサブシステムをクローンできます。サブシステムインスタンスは、システム負荷を分散し、フェイルオーバーポイントを提供します。
  • セキュリティードメインは、CA と KRA との間の設定を合理化します。KRA は、管理者が証明書を手動で CA にコピーする必要がなく、KRA コネクター情報をプッシュして証明書を CA に自動的に転送できます。
  • Certificate System セキュリティードメインを使用すると、オフラインの CA を設定できます。このシナリオでは、オフラインルートには独自のセキュリティードメインがあります。オンラインの下位 CA はすべて、異なるセキュリティードメインに属します。
  • セキュリティードメインは、CA と OCSP の間の設定を簡素化します。OCSP は、CA が OCSP 公開を設定するために、その情報を CA にプッシュし、CA から CA 証明書チェーンを取得して、内部データベースに格納することもできます。

5.4. サブシステム証明書の要件の決定

CA 設定は、発行される証明書の実際のタイプに関係なく、発行する証明書の特性の多くを決定します。CA 自体の有効期間、識別名、および許可される暗号化アルゴリズムに対する制約は、発行された証明書の同じ特性に影響を与えます。さらに、Certificate Manager には、発行するさまざまな種類の証明書のルールを設定する事前定義されたプロファイルがあり、追加のプロファイルを追加または変更できます。これらのプロファイル設定は、発行した証明書にも影響します。

5.4.1. インストールする証明書の決定

Certificate System サブシステムが最初にインストールおよび設定されると、それにアクセスして管理するために必要な証明書が自動的に作成されます。これには、エージェントの証明書、サーバー証明書、およびサブシステム固有の証明書が含まれます。これらの初期証明書は 表5.1「初期サブシステム証明書」 に表示されます。

表5.1 初期サブシステム証明書
サブシステム証明書

Certificate Manager

  • CA 署名証明書
  • OCSP 署名証明書
  • SSL/TLS サーバー証明書の場合
  • サブシステム証明書
  • ユーザー (エージェント/管理者) の証明書
  • 監査ログ署名証明書

OCSP

  • OCSP 署名証明書
  • SSL/TLS サーバー証明書の場合
  • サブシステム証明書
  • ユーザー (エージェント/管理者) の証明書
  • 監査ログ署名証明書

KRA

  • トランスポート証明書
  • ストレージ証明書
  • SSL/TLS サーバー証明書の場合
  • サブシステム証明書
  • ユーザー (エージェント/管理者) の証明書
  • 監査ログ署名証明書

TKS

  • SSL/TLS サーバー証明書の場合
  • ユーザー (エージェント/管理者) の証明書
  • 監査ログ署名証明書

TPS

  • SSL/TLS サーバー証明書の場合
  • ユーザー (エージェント/管理者) の証明書
  • 監査ログ署名証明書

既存のサブシステム証明書を置き換える際の注意点がいくつかあります。

  • ルート CA の新しい自己署名 CA 証明書を作成するときに新しいキーペアを生成すると、以前の CA 証明書で発行されたすべての証明書が無効になります。

    これは、古いキーを使用して CA によって発行または署名された証明書が機能しないことを意味します。下位 Certificate Manager、KRA、OCSP、TKS、および TPS は機能しなくなり、エージェントはエージェントインターフェイスにアクセスできなくなります。

    これと同じ状況は、下位 CA の CA 証明書が新しいキーペアを持つものに置き換えられた場合に発生します。その CA によって発行されたすべての証明書は無効になり、機能しなくなります。

    新しいキーペアから新しい証明書を作成する代わりに、既存の CA 署名証明書を更新することを検討してください。

  • CA が OCSP に公開するように設定されていて、新しい CA 署名証明書または新しい CRL 署名証明書がある場合は、CA を OCSP に対して再識別する必要があります。
  • KRA 用に新しいトランスポート証明書が作成された場合は、CA の設定ファイル CS.cfg で KRA 情報を更新する必要があります。既存のトランスポート証明書は、ca.connector.KRA.transportCert パラメーターの新しい証明書に置き換える必要があります。
  • CA のクローンが作成されている場合は、マスター Certificate Manager の新しい SSL/TLS サーバー証明書を作成するときに、クローン CA の証明書データベースが新しい SSL/TLS サーバーの全証明書で更新する必要があります。
  • Certificate Manager が証明書と CRL を LDAP ディレクトリーに公開するように設定されており、SSL/TLS クライアント認証に SSL/TLS サーバー証明書を使用する場合は、適切な拡張子を付けて新しい SSL/TLS サーバー証明書を要求する必要があります。証明書をインストールしたら、公開ディレクトリーが新しいサーバー証明書を使用するように設定する必要があります。
  • サブシステムインスタンスに対して任意の数の SSL/TLS サーバー証明書を発行できますが、実際には 1 つの SSL/TLS 証明書のみが必要です。この証明書は、必要に応じて何度でも更新または交換できます。

5.4.2. CA 識別名の計画

CA のコア要素は署名ユニットと Certificate Manager ID です。署名ユニットは、終了エンティティーが要求した証明書に署名します。Certificate Manager には、発行するすべての証明書に記載されている、独自の識別名 (DN) が必要です。

他の証明書と同様に、CA 証明書は DN を公開鍵にバインドします。DN は、エンティティーを一意に識別する一連の名前と値のペアです。たとえば、次の DN は、Example Corporation という名前の企業のエンジニアリング部門の Certificate Manager を識別します。

cn=demoCA, o=Example Corporation, ou=Engineering, c=US

Certificate Manager の DN には、名前と値のペアの組み合わせが多数あります。エンドエンティティーが検証できるため、DN は一意で識別する必要があります。

5.4.3. CA 署名証明書の有効期間の設定

Certificate Manager 署名証明書を含むすべての証明書には有効期間が必要です。Certificate System は、指定可能な有効期間を制限しません。証明書の更新の要件、証明書階層内の CA の位置、および PKI に含まれる公開 CA の要件に応じて、有効期間をできるだけ長く設定します。

Certificate Manager は、CA 署名証明書の有効期間よりも有効期間が長い証明書を発行することはできません。CA 証明書の有効期間よりも長い期間要求が行われた場合、要求された有効日は無視され、CA 署名証明書の有効期間が使用されます。

5.4.4. 署名キーの種類と長さの選択

署名鍵は、サブシステムが何かを検証して "封印する" ために使用されます。CA は、CA 署名証明書を使用して、発行する証明書または CRL に署名します。OCSP は、署名証明書を使用して、証明書ステータス要求への応答を検証します。すべてのサブシステムは、ログファイル署名証明書を使用して監査ログに署名します。

署名キーは、署名操作の保護とセキュリティーを提供するために、暗号的に強力である必要があります。以下の署名アルゴリズムがセキュアであるとみなされます。

  • SHA256withRSA
  • SHA512withRSA
  • SHA256withEC
  • SHA512withEC
注記

Certificate System には、ネイティブの ECC サポートが含まれています。ECC 対応サードパーティーの PKCS #11 モジュールを読み込み、使用することも可能です。詳細は、pkispawn ユーティリティーを使用して RHCS をインストールする」 を参照してください。

キー タイプ とともに、各キーには特定の ビット長 があります。キーは、より短い鍵よりも暗号で強力なと見なされます。ただし、キーの署名操作にはより長い時間がかかります。

設定ウィザードのデフォルトの RSA キーの長さは 2048 ビットです。機密性の高いデータまたはサービスへのアクセスを提供する証明書の場合は、長さを 4096 ビットに増やすことを検討してください。ECC キーは RSA キーよりもはるかに強力であるため、ECC キーの推奨長は 256 ビットであり、これは 2048 ビットの RSA キーと同等の強度です。

5.4.5. 証明書の拡張の使用

X.509 v3 証明書には、証明書に任意の数の追加フィールドを追加できる拡張フィールドが含まれています。証明書拡張機能は、代替サブジェクト名や使用制限などの情報を証明書に追加する方法を提供します。Red Hat Directory Server や Red Hat Certificate System などの古い Netscape サーバーは、PKIX パート 1 標準が定義される前に開発されたため、Netscape 固有の拡張機能が必要です。

X.509 v1 証明書の仕様は、公開鍵を X.500 ディレクトリーの名前にバインドするように設計されました。証明書がインターネットおよびエクストラネットで使用されるようになり、ディレクトリールックアップを常に実行できるとは限らなかったため、元の仕様ではカバーされていなかった問題領域が発生しました。

  • 信用。X.500 仕様は、厳密なディレクトリー階層を使用して信頼を確立します。対照的に、インターネットおよびエクストラネットのデプロイメントには、階層的な X.500 アプローチに準拠していない分散信頼モデルが含まれることがよくあります。
  • 証明書の使用。一部の組織では、証明書の使用方法を制限しています。たとえば、一部の証明書はクライアント認証のみに制限される場合があります。
  • 複数の証明書証明書ユーザーが、同じサブジェクト名でキーマテリアルが異なる複数の証明書を所有していることは珍しくありません。この場合、どのキーと証明書をどの目的に使用するかを特定する必要があります。
  • 代替名。目的によっては、証明書の公開鍵にもバインドされている代替サブジェクト名があると便利です。
  • 追加属性。一部の組織では、ディレクトリーで情報を検索できない場合など、追加情報を証明書に保存します。
  • CA に関連。証明書チェーンに中間 CA が含まれる場合は、CA 間の関係に関する情報を証明書に埋め込むと便利です。
  • CRL チェック。証明書の失効ステータスをディレクトリーに対して、または元の認証局で常に確認できるとは限らないため、証明書に CRL を確認する場所に関する情報を含めると便利です。

X.509 v3 仕様は、証明書の拡張機能の一般的な形式を定義し、証明書に含めることができる拡張機能を指定することにより、証明書の形式を変更して証明書内に追加情報を含めることにより、これらの問題に対処しました。X.509 v3 証明書用に定義された拡張機能により、追加の属性をユーザーまたは公開鍵に関連付け、証明書階層を管理できます。インターネット X.509 公開鍵インフラストラクチャー証明書および CRL プロファイル は、インターネット証明書に使用する一連の拡張機能と、証明書または CA 情報の標準的な場所を推奨しています。これらの拡張機能は 標準拡張機能 と呼ばれます。

注記

標準拡張の詳細は、RFC 2459RFC 3280、および RFC 3279 を参照してください。

証明書の X.509 v3 標準を使用すると、組織はカスタム拡張機能を定義して証明書に含めることができます。これらの拡張機能は、プライベート 拡張機能、プロプライエタリー 拡張機能、または カスタム 拡張機能と呼ばれ、組織またはビジネスに固有の情報を伝達します。アプリケーションは、プライベートの重要な拡張機能を含む証明書を検証できない可能性があるため、これらを広範囲の状況で使用することは推奨されません。

X.500 および X.509 の仕様は、主に大手通信事業者や政府機関などの国際的な通信ネットワーク関係者を対象とした国際機関である ITU (International Telecommunication Union) によって管理されています。インターネットの基礎となる標準の多くを管理する IETF (Internet Engineering Task Force) は、現在、公開鍵インフラストラクチャー X.509 (PKIX) 標準を開発しています。これらの提案された標準は、インターネットで使用するための拡張機能に対する X.509v3 アプローチをさらに改良します。証明書および CRL の推奨事項は、提案された標準ステータスに達しており、PKIX パート 1 と呼ばれるドキュメントに記載されています。

他の 2 つの標準、Abstract Syntax Notation One (ASN.1) および Distinguished Encoding Rules (DER) は、Certificate System と一般的な証明書で使用されます。これらは CCITT 勧告 X.208 および X.209 で指定されます。ASN.1 および DER の概要は、RSA Laboratories の Web サイト (http://www.rsa.com) で入手できる A Layman’s Guide to a Subset of ASN.1, BER, and DER を参照してください。

5.4.5.1. 証明書の拡張機能の構造

RFC 3280 では、X.509 証明書拡張は以下のように定義されます。

Extension  ::=  SEQUENCE  {

extnID OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING  }

証明書の拡張機能が次のもので構成されていることを意味します。

  • 拡張のオブジェクト識別子 (OID)。この識別子は、拡張子を一意に識別します。また、値フィールドの ASN.1 タイプの値や、値が解釈される方法も決定します。拡張機能が証明書に表示されると、OID は拡張機能 ID フィールド (extnID) として示されます。また、対応する ASN.1 エンコード構造は、オクテット文字列の値 (extnValue) として示されます。
  • critical と呼ばれるフラグまたはブール値フィールド。

    このフィールドに割り当てられた値 (true または false のいずれか) は、拡張子が証明書にとって重要かどうかを示します。 拡張機能が重要であり、拡張機能の ID に基づいて拡張機能を理解しないアプリケーションに証明書が送信された場合は、アプリケーションが証明書を拒否する必要があります。 拡張機能が重要ではなく、拡張機能の ID に基づいて拡張機能を理解しないアプリケーションに証明書が送信された場合、アプリケーションは拡張機能を無視して証明書を受け入れることができます。

  • 拡張の値の DER エンコーディングを含む octet 文字列。

通常、証明書を受信するアプリケーションは、拡張 ID をチェックして、ID を認識できるかどうかを判断します。可能であれば、エクステンション ID を使用して、使用する値のタイプを判断します。

X.509 v3 標準仕様で定義されている標準拡張には、以下が含まれます。

  • 証明書の署名に使用されるキーである CA の公開キーを識別する Authority Key Identifier 拡張。
  • サブジェクトの公開キーを識別するサブジェクトキー識別子拡張。キーは認証されています。
注記

すべてのアプリケーションがバージョン 3 拡張機能の証明書をサポートするわけではありません。これらの拡張機能をサポートするアプリケーションは、これらの特定の拡張機能の一部またはすべてを解釈できない場合があります。

5.4.6. 証明書プロファイルの使用およびカスタマイズ

証明書には、タイプとアプリケーションが異なります。これらは、企業ネットワークのシングルサインオン環境の確立、VPN のセットアップ、電子メールの暗号化、または Web サイトへの認証に使用できます。異なる種類のユーザーに対して同じタイプの証明書に対して異なる要件が存在する可能性があるのと同様に、これらすべての証明書の要件は異なる可能性があります。これらの証明書の特性は、証明書プロファイル で設定されます。Certificate Manager は、ユーザーまたはマシンが証明書を要求するときに登録フォームとして使用する一連の証明書プロファイルを定義します。

証明書プロファイル

証明書プロファイルは、認証方法、証明書の内容 (デフォルト)、内容の値の制約、証明書プロファイルの入力と出力の内容など、特定の種類の証明書の発行に関連するすべてを定義します。登録要求は証明書プロファイルに送信され、その証明書プロファイルで設定されたデフォルトと制約の対象となります。これらの制約は、要求が証明書プロファイルに関連付けられた入力フォームを介して送信されるか、他の手段を介して送信されるかに関係なく適用されます。証明書プロファイル要求から発行される証明書には、デフォルトで必要なコンテンツと、デフォルトのパラメーターで必要な情報が含まれています。制約は、証明書で許可されるコンテンツに対するルールを提供します。

たとえば、ユーザー証明書の証明書プロファイルは、証明書の有効期間を含む、その証明書のすべての側面を定義します。デフォルトの有効期間は 2 年に設定でき、この証明書プロファイルを介して要求された証明書の有効期間が 2 年を超えてはならないという制約をプロファイルに設定できます。ユーザーがこの証明書プロファイルに関連付けられた入力フォームを使用して証明書を要求すると、発行された証明書にはデフォルトで指定された情報が含まれ、2 年間有効です。ユーザーが、有効期間が 4 年の証明書を事前にフォーマットされた要求を提出した場合、制約により、このタイプの証明書の有効期間は最大 2 年となるため、要求は拒否されます。

発行する最も一般的な証明書プロファイルのセットが事前定義されました。これらの証明書プロファイルは、デフォルトと制約を定義し、認証方法を関連付け、証明書プロファイルに必要な入力と出力を定義します。

証明書プロファイルパラメーターの変更

デフォルトの証明書プロファイルのパラメーターは変更できます。これには、認証方法、デフォルト、各プロファイルで使用される制約、プロファイル内の任意のパラメーターに割り当てられた値、入力、および出力が含まれます。他のタイプの証明書用に新しい証明書プロファイルを作成したり、証明書タイプ用に複数の証明書プロファイルを作成したりすることもできます。特定のタイプの証明書に複数の証明書プロファイルがあり、同じタイプの証明書を異なる認証方法またはデフォルトと制約の異なる定義で発行できます。たとえば、SSL/TLS サーバー証明書の登録用に 2 つの証明書プロファイルがあり、1 つの証明書プロファイルは 6 カ月の有効期間の証明書を発行し、もう 1 つの証明書プロファイルは 2 年の有効期間の証明書を発行します。

入力は、登録フォームのテキストフィールドと、エンドエンティティーから収集する必要のある情報の種類を設定します。これには、証明書要求を貼り付けるためのテキスト領域の設定が含まれます。これにより、必要な要求情報を使用して、入力フォームの外部で要求を作成できます。入力値は、証明書の値として設定されます。デフォルトの入力は、Certificate System で設定できません。

出力は、正常な登録に対する応答ページがどのように表示されるかを指定します。通常は、ユーザーが読み取り可能な形式で証明書を表示します。デフォルトの出力には、結果の証明書の出力可能なバージョンが表示されます。他の出力は、PKCS #7 など、登録の最後に生成される情報のタイプを設定します。

ポリシーセットは、プロファイルを通じて処理されるすべての証明書に付加される制約とデフォルトの拡張機能のセットです。拡張機能は、有効期間やサブジェクト名の要件などの証明書の内容を定義します。プロファイルは 1 つの証明書要求を処理しますが、1 つの要求に複数の証明書の情報を含めることができます。PKCS#10 リクエストには、公開鍵が 1 つ含まれています。CRMF 要求には複数の公開鍵 (つまり、複数の証明書要求) を含めることができます。プロファイルには複数のポリシーセットが含まれる場合があり、各セットは CRMF 要求内で 1 つの証明書要求を処理する方法を指定します。

証明書プロファイルの管理

管理者は、既存の認証プラグインまたはメソッドを証明書プロファイルに関連付けることにより、証明書プロファイルを設定します。デフォルトと制約を有効にして設定し、入力と出力を定義します。管理者は、既存の証明書プロファイルを使用したり、既存の証明書プロファイルを変更したり、新しい証明書プロファイルを作成したり、この PKI で使用されない証明書プロファイルを削除したりできます。

証明書プロファイルが設定されると、エージェントサービスページの Manage Certificate Profiles ページに表示され、エージェントは証明書プロファイルを承認して有効にすることができます。証明書プロファイルを有効にすると、エンドエンティティーページの Certificate Profile タブに表示され、エンドエンティティーは証明書プロファイルを使用して証明書を登録できます。

エンドエンティティーインターフェイスの証明書プロファイル登録ページには、エージェントによって有効にされた各証明書プロファイルへのリンクが含まれています。エンドエンティティーがこれらのリンクの 1 つを選択すると、その証明書プロファイルに固有の登録フォームを含む登録ページが表示されます。登録ページは、プロファイルに定義された入力から動的に生成されます。認証プラグインが設定されている場合、ユーザーを認証するために追加のフィールドが追加される場合があります。

エンドエンティティーが、エージェントが承認した (手動) 登録 (認証プラグインが設定されていない登録) に関連付けられた証明書プロファイル要求を送信すると、証明書要求はエージェントサービスインターフェイスのキューに入れられます。エージェントは、登録のいくつかの側面を変更、要求、検証、キャンセル、拒否、更新、または承認することができます。エージェントは、要求を送信せずに更新したり、要求がプロファイルのデフォルトと制約に準拠していることを検証したりできます。この検証手順は検証のみを目的としており、リクエストが送信されることはありません。エージェントは、設定された制約に拘束されます。制約に違反するような方法でリクエストを変更することはできません。署名付き承認は即座に処理され、証明書が発行されます。

証明書プロファイルが認証方法に関連付けられている場合は、要求がすぐに承認され、ユーザーが認証に成功し、必要なすべての情報が提供され、要求が証明書プロファイルに設定された制約に違反しない場合は、証明書が自動的に生成されます。サブジェクト名や有効期間など、ユーザーが指定した設定を許可するプロファイルポリシーがあります。証明書プロファイルフレームワークは、発行した証明書の元の証明書要求に設定されたユーザー定義のコンテンツを保持することもできます。

発行された証明書には、証明書の延長や有効期間など、この証明書プロファイルのデフォルトで定義されたコンテンツが含まれています。証明書の内容は、デフォルトごとに設定された制約によって制限されます。1 つのプロファイルに複数のポリシー (デフォルトと制約) を設定し、ポリシーセット ID で同じ値を使用して各セットを区別できます。これは、暗号鍵と署名鍵が同じプロファイルに送信されるデュアルキー登録を処理する場合に特に便利です。サーバーは、受け取る各リクエストで各セットを評価します。1 つの証明書が発行されると、1 つのセットが評価され、その他のセットは無視されます。デュアルキーペアが発行されると、最初のセットは最初の証明書要求で評価され、2 番目のセットは 2 番目の証明書要求で評価されます。単一の証明書を発行するために複数のセット、またはデュアルキーペアを発行するために複数のセットは必要ありません。

証明書プロファイルのカスタマイズガイドライン

組織のプロファイルを、組織が使用する実際のニーズと予想される証明書の種類に合わせて調整します。

  • PKI で必要となる証明書プロファイルを決定します。発行される証明書のタイプごとに、少なくとも 1 つのプロファイルが必要です。証明書の種類ごとに複数の証明書プロファイルを用意して、特定の種類の証明書に対して異なる認証方法や異なるデフォルトや制約を設定することができます。管理インターフェイスで使用可能な証明書プロファイルはすべて、エージェントによって承認され、エンドエンティティーによって登録に使用されます。
  • 使用されていない証明書プロファイルを削除します。
  • 会社の証明書の特定の特性について、既存の証明書プロファイルを変更します。

    • 証明書プロファイルに設定されているデフォルト、デフォルトに設定されているパラメーターの値、または証明書の内容を制御する制約を変更します。
    • パラメーターの値を変更して、設定された制約を変更します。
    • 認証方法を変更します。
    • 入力ページのフィールドを制御する証明書プロファイルの入力を追加または削除して、入力を変更します。
    • 出力を追加または削除します。
5.4.6.1. SSL サーバー証明書への SAN 拡張機能の追加

Certificate System を使用すると、ルート以外の CA またはその他の Certificate System インスタンスのインストール時に、SSL サーバー証明書にサブジェクト代替名 (SAN) 拡張機能を追加できます。これを行うには、/usr/share/pki/ca/profiles/ca/caInternalAuthServerCert.cfg ファイルの指示に従い、pkispawn ユーティリティーに提供されている設定ファイルに次のパラメーターを追加します。

pki_san_inject
このパラメーターの値を True に設定します。
pki_san_for_server_cert
必要な SAN 拡張機能のリストをコンマで区切って指定します。

以下に例を示します。

pki_san_inject=True
pki_san_for_server_cert=intca01.example.com,intca02.example.com,intca.example.com

5.4.7. 認証方法の計画

「証明書プロファイルの使用およびカスタマイズ」 で暗示されるように、証明書プロセスの 認証 とは、証明書を要求するユーザーまたはエンティティーが、自分が本人であることを証明する方法を意味します。Certificate System がエンティティーを認証できる方法は 3 つあります。

  • エージェントの承認 登録では、承認のためにエンドエンティティーがエージェントに送信されます。エージェントは証明書要求を承認します。
  • 自動 登録では、エンドエンティティー要求はプラグインを使用して認証され、証明書要求が処理されます。エージェントは登録プロセスに関与していません。
  • CMC 登録 では、サードパーティーのアプリケーションが、エージェントによって署名されてから自動的に処理される要求を作成できます。

Certificate Manager は、最初にエージェント承認の登録と CMC 認証用に設定されています。自動登録を有効にするには、認証プラグインモジュールのいずれかを設定します。サブシステムの単一インスタンスで、1 つ以上の複数の認証方法を設定できます。HTML 登録ページには、使用されるメソッドを指定する非表示値が含まれます。証明書プロファイルを使用すると、有効なプロファイルごとにエンドエンティティー登録ページが動的に生成されます。この証明書プロファイルに関連付けられた認証方法は、動的に生成される登録ページで指定します。

認証プロセスは単純です。

  1. エンドエンティティーは登録のリクエストを送信します。リクエストの送信に使用されるフォームは、認証および登録のメソッドを識別します。すべての HTML フォームはプロファイルにより動的に生成され、適切な認証方法をフォームと自動的に関連付けます。
  2. 認証方法がエージェント承認の登録である場合、要求は CA エージェントの要求キューに送信されます。キューの要求に対する自動通知が設定されている場合は、新しい要求が受信された適切なエージェントにメールが送信されます。エージェントは、そのフォームに対して許可される要求とそのプロファイル制約を修正できます。承認されると、要求は Certificate Manager に設定された証明書プロファイルに合格する必要があり、合格すると証明書が発行されます。証明書が発行されると、内部データベースに保存され、シリアル番号または要求 ID によってエンドエンティティーページのエンドエンティティーによって取得できます。
  3. 認証方法が自動化されている場合、エンドエンティティーは、LDAP ユーザー名やパスワードなど、ユーザーを認証するために必要な情報とともに要求を送信します。ユーザーが正常に認証されると、リクエストはエージェントのキューに送信されずに処理されます。要求が Certificate Manager の証明書プロファイル設定に合格すると、証明書が発行され、内部データベースに保管されます。HTML フォームを介して即座に終了エンティティーに配信されます。

証明書要求の認証方法の要件は、必要なサブシステムとプロファイル設定に直接影響を与える可能性があります。たとえば、エージェントが承認した登録で、エージェントが要求者に直接会い、裏付けされた書類を使用して身元を確認する必要がある場合、認証プロセスは時間がかかるだけでなく、エージェントと要求者の両方の物理的な可用性に制約を受ける可能性があります。

5.4.8. 証明書および CRL の公開

CA は、証明書と CRL の両方を公開できます。証明書は、プレーンファイルまたは LDAP ディレクトリーに公開できます。CRL は、ファイルまたは LDAP ディレクトリーに公開することもできます。また、証明書の検証を処理するために OCSP レスポンダーに公開することもできます。

パブリッシュの設定は非常にシンプルで、簡単に調整できます。ただし、継続性とアクセシビリティーのためには、証明書および CRL をどこで公開する必要があるか、およびクライアントがそれらにアクセスできるようにする必要があるかを計画することが推奨されます。

LDAP ディレクトリーに公開するには、公開が機能するようにディレクトリーの特別な設定が必要です。

  • 証明書がディレクトリーに公開されている場合、証明書が発行されるすべてのユーザーまたはサーバーに、LDAP ディレクトリーに対応するエントリーがある必要があります。
  • CRL がディレクトリーに公開されている場合は、CRL を発行した CA のエントリーに公開する必要があります。
  • SSL/TLS の場合、ディレクトリーサービスは SSL/TLS で設定する必要があり、任意で、Certificate Manager が証明書ベースの認証を使用できるように設定する必要があります。
  • ディレクトリー管理者は、LDAP ディレクトリーへの DN (エントリー名) とパスワードベースの認証を制御するための適切なアクセス制御ルールを設定する必要があります。

5.4.9. CA 署名証明書の更新または再発行

CA 署名証明書の有効期限が切れると、CA の対応する署名キーで署名されたすべての証明書が無効になります。エンドエンティティーは CA 証明書の情報を使用して、証明書の信頼性を検証します。CA 証明書自体が期限切れになると、アプリケーションは証明書を信頼できる CA にチェーンできません。

CA 証明書の有効期限を解決する方法は 2 つあります。

  • CA 証明書を 更新 するには、古い CA 証明書と同じサブジェクト名と公開鍵および秘密鍵の内容を使用し、有効期間を延長した新しい CA 証明書を発行する必要があります。古い CA 証明書の有効期限が切れる前に、新しい CA 証明書がすべてのユーザーに配布される限り、証明書を更新すると、古い CA 証明書で発行された証明書は、有効期間の全期間にわたって機能し続けることができます。
  • CA 証明書を 再発行すること には、新しい名前、公開鍵と秘密鍵の内容、および有効期限を持つ新しい CA 証明書を発行することが含まれます。これにより、CA 証明書の更新に関連するいくつかの問題が回避されますが、管理者とユーザーの両方が実装するためにより多くの作業が必要になります。有効期限が切れていないものも含め、古い CA によって発行されたすべての証明書は、新しい CA によって更新する必要があります。

CA 証明書の更新または再発行には、問題があり、利点があります。Certificate Manager をインストールする前に、CA 証明書の更新または再発行の計画を開始し、計画された手順が PKI デプロイメントの拡張、ポリシー、およびその他の側面に与える影響を検討します。

注記

拡張機能 (たとえば authorityKeyIdentifier 拡張機能) の正しい使用は、古い CA 証明書から新しい CA 証明書への移行に影響を与える可能性があります。

5.5. ネットワークおよび物理セキュリティーの計画

Certificate System サブシステムをデプロイするときは、サブシステムによって生成および保存されるデータの機密性のために、サブシステムインスタンスの物理的およびネットワークセキュリティーを考慮する必要があります。

5.5.1. ファイアウォールの考慮事項

Certificate System サブシステムでファイアウォールを使用する方法は 2 つあります。

  • 機密サブシステムを不正アクセスから保護
  • ファイアウォール外部のその他のサブシステムおよびクライアントへの適切なアクセスを許可する

CA、KRA、および TKS には、セキュリティーが侵害された場合に壊滅的なセキュリティー結果を引き起こす可能性のある重要な情報が含まれているため、常にファイアウォールの内側に置かれます。

TPS および OCSP は、ファイアウォールの外に置くことができます。同様に、Certificate System で使用される他のサービスやクライアントは、ファイアウォールの外側にある別のマシンに置くことができます。この場合、ファイアウォールの背後にあるサブシステムとファイアウォールの外側にあるサービスとの間のアクセスを許可するようにローカルネットワークを設定する必要があります。

LDAP データベースは、それを使用するサブシステムとは異なるネットワーク上であっても、異なるサーバー上に配置できます。この場合、ディレクトリーサービスへのトラフィックを許可するために、すべての LDAP ポート (デフォルトでは LDAP の場合は 389、LDAPS の場合は 636) を開く必要があります。LDAP データベースにアクセスしないと、すべてのサブシステム操作が失敗します。

ファイアウォールの設定の一環として、iptables が有効になっている場合は、適切な Certificate System ポートを介した通信を許可するようにポリシーを設定する必要があります。iptables の設定は、firewalld の使用および設定ガイド を参照してください。

5.5.2. 物理セキュリティーと場所の考慮事項

それらが保持する機密データのため、CA、KRA、および TKS を適切な物理的アクセス制限のある安全な施設に保管することを検討してください。システムへのネットワークアクセスを制限する必要があるのと同様に、物理アクセスも制限する必要があります。

安全な場所を見つけることに加えて、サブシステムのエージェントと管理者への近さを考慮してください。たとえば、キーリカバリーには、複数のエージェントの承認が必要となる場合があります。これらのエージェントが広い地域に分散している場合は、時間差がキーの取得能力に悪影響を及ぼす可能性がある。サブシステムの物理的な場所を計画し、次にサブシステムを管理するエージェントと管理者の場所に従って計画します。

5.5.3. ポートの計画

各 Certificate System サーバーは、最大 4 つのポートを使用します。

  • 認証を必要としないエンドエンティティーサービスのセキュアではない HTTP ポート
  • 認証を必要とするエンドエンティティーサービス、エージェントサービス、管理コンソール、および管理サービス用の安全な HTTP ポート
  • Tomcat Server Management ポート
  • Tomcat AJP コネクターポート

Red Hat Certificate System 管理ガイドRed Hat Certificate System ユーザーインターフェイス の章で説明されているすべてのサービスページとインターフェイスは、インスタンスの URL と対応するポート番号を使用して接続されます。以下に例を示します。

https://server.example.com:8443/ca/ee/ca

管理コンソールにアクセスするには、URL は管理ポートを指定します。

pkiconsole https://server.example.com:8443/ca

すべてのエージェントおよび管理機能に、SSL/TLS クライアント認証が必要です。エンドエンティティーからの要求の場合、Certificate System は SSL/TLS (暗号化) ポートと非 SSL/TLS ポートの両方でリッスンします。

ポートは server.xml ファイルで定義します。ポートを使用しない場合は、そのファイルで無効にできます。以下に例を示します。

<Service name="Catalina">
    <!--Connector port="8080" ... /-->  unused standard port
    <Connector port="8443" ... />

新しいインスタンスをインストールするときは常に、新しいポートがホストシステム上で一意であることを確認してください。

ポートが使用できることを確認するには、オペレーティングシステムに適切なファイルを確認します。ネットワークアクセス可能なサービスのポート番号は通常、services という名前のファイルで維持されます。Red Hat Enterprise Linux では、現在 SELinux コンテキストを持っているすべてのポートを一覧表示する semanage port -l コマンドを実行して、ポートが SELinux によって割り当てられていないことを確認することも役立ちます。

新しいサブシステムインスタンスが作成されると、1〜65535 の任意の番号をセキュアポート番号として指定できます。

5.6. Certificate System サブシステムのキーおよび証明書を保存するトークン

トークン は、暗号化機能を実行し、公開鍵証明書、暗号化鍵、およびその他のデータを格納するハードウェアまたはソフトウェアデバイスです。Certificate System は、Certificate System サブシステムに属するキーペアと証明書を格納するために、内部外部 の 2 種類のトークンを定義します。

内部 (ソフトウェア) トークンは、通常は 証明書データベース (cert9.db) および キーデータベース (key4.db) と呼ばれるファイルのペアで、Certificate System がキーペアと証明書を生成および保存するために使用します。Certificate System は、最初に内部トークンを使用するときに、ホストマシンのファイルシステムにこれらのファイルを自動的に生成します。これらのファイルは、キーペアの生成に内部トークンが選択されている場合、Certificate System サブシステムの設定時に作成されます。

これらのセキュリティーデータベースは、/var/lib/pki/ instance_name/alias ディレクトリーにあります。

外部トークンとは、スマートカードやハードウェアセキュリティーモジュール (HSM) など、Certificate System がキーペアと証明書を生成および保存するために使用する外部ハードウェアデバイスを指します。Certificate System は、PKCS #11 に準拠するハードウェアトークンに対応します。

PKCS#11 は、暗号化デバイスの詳細からアプリケーションを分離する API と共有ライブラリーの標準セットです。これにより、アプリケーションは PKCS #11 準拠の暗号化デバイスに統合されたインターフェイスを提供できます。

Certificate System に実装されている PKCS #11 モジュールは、さまざまな製造元が提供する暗号化デバイスをサポートしています。このモジュールを使用すると、Certificate System は、外部暗号化デバイスの製造元が提供する共有ライブラリーをプラグインし、それを使用して、Certificate System マネージャーのキーおよび証明書を生成および保存できます。

外部トークンを使用して、Certificate System が使用する鍵ペアと証明書を生成および保存することを検討します。ハードウェアトークンはソフトウェアトークンよりも安全であると見なされることがあるため、これらのデバイスは秘密鍵を保護するためのもう 1 つのセキュリティー対策です。

外部トークンを使用する前に、サブシステムで外部トークンをどのように使用するかを計画します。

  • サブシステムのすべてのシステムキーは、同じトークンで生成する必要があります。
  • サブシステムは空の HSM スロットにインストールする必要があります。HSM スロットが以前に他のキーを格納するために使用されていた場合は、HSM ベンダーのユーティリティーを使用してスロットの内容を削除します。Certificate System は、デフォルトのニックネームを持つスロットで証明書および鍵を作成できます。適切にクリーンアップされない場合、これらのオブジェクトの名前は以前のインスタンスと共存する可能性があります。

Certificate System は、外部トークンで ハードウェア暗号化プレーヤー を使用することもできます。アクセラレーターの多くは、以下のセキュリティー機能を提供します。

  • 高速 SSL/TLS 接続。多数の同時登録またはサービス要求に対応するには、速度が重要です。
  • 秘密鍵のハードウェア保護これらのデバイスは、ハードウェアトークンから秘密鍵をコピーまたは削除できないようにすることで、スマートカードのように動作します。これは、オンラインの Certificate Manager のアクティブな攻撃から鍵の盗難に対する予防措置として重要です。

Certificate System は、デフォルトで nCipher nShield ハードウェアセキュリティーモジュール (HSM) に対応します。Certificate System がサポートする HSM は、PKCS #11 ライブラリーモジュールがデフォルトのインストールパスにある場合は、インストールの事前設定段階で modutil を使用して pkcs11.txt データベースに自動的に追加されます。

設定中、Security Modules パネルには、サポートされているモジュールと、NSS 内部ソフトウェア PKCS#11 モジュールが表示されます。検出された、サポートされているすべてのモジュールは、Found のステータスを示し、Logged in または Not logged in として個別にマークされます。トークンが見つかり、ログインしていない場合には、Operations の下にある Login を使用してログインできます。管理者がトークンを正常にログインできる場合、パスワードは設定ファイルに保存されます。Certificate System インスタンスの次回の起動時または再起動時に、パスワードストア内のパスワードを使用して、対応する各トークンのログインが試行されます。

管理者は、システムキーの生成に使用されるデフォルトトークンとしてログインしている任意のトークンを選択できます。

5.7. PKI の計画に関するチェックリスト

  • いくつのセキュリティードメインが作成され、どのサブシステムインスタンスが各ドメインに配置されますか。
  • サブシステムは、信頼できる関係がある場合にのみ別のサブシステムと通信できます。セキュリティードメイン内のサブシステムは相互に自動的に信頼できる関係にあるため、サブシステムがどのドメインに参加するかが重要です。セキュリティードメインには、さまざまな証明書発行ポリシー、ドメイン内のさまざまな種類のサブシステム、またはさまざまな Directory Server データベースを含めることができます。各サブシステムが属する場所 (物理マシン上および相互の関係の両方) をマップし、それに応じてセキュリティードメインに割り当てます。
  • 各サブシステムに割り当てるポート。単一の SSL/TLS ポートが必要ですか。それともセキュリティーを強化するためにポートを分離する方がよいでしょうか。
  • 最も安全なソリューションとして、SSL/TLS インターフェイスごとに個別のポートを使用します。ただし、複数のポートを実装する可能性は、ネットワークセットアップ、ファイアウォールルール、およびその他のネットワーク条件によって異なる場合があります。
  • ファイアウォールの内側に配置するサブシステムは何ですか。これらのファイアウォールで保護されたサブシステムにアクセスするために必要なクライアントまたは他のサブシステムと、アクセスが許可される方法LDAP データベースにファイアウォールへのアクセスが許可されているか。
  • サブシステムのインストール場所は、ネットワーク設計によって異なります。OCSP サブシステムは、ユーザーの便宜のためにファイアウォールの外側で動作するように特別に設計されていますが、CA、KRA、および TPS はすべて、セキュリティーを強化するためにファイアウォールの背後で保護する必要があります。

    サブシステムの場所を決定するときは、サーバーがアクセスする必要のある のサブシステムまたはサービス (内部データベース、CA、または外部ユーザーを含む) を計画し、ファイアウォール、サブネット、および VPN 設定を確認することが重要です。

  • 物理的にセキュア化する必要があるサブシステムアクセスが付与される方法と、アクセスを誰に付与するか。
  • CA、TKS、および KRA はすべて、非常に機密性の高いキーと証明書の情報を格納します。デプロイメントによっては、サブシステムが実行するマシンへの物理アクセスを制限しないといけない場合があります。その場合、サブシステムとそのホストマシンの両方を、より大規模なインフラストラクチャーインベントリーとセキュリティー設計に含める必要があります。
  • 全エージェントと管理者の物理的な場所サブシステムの物理的な場所。管理者またはエージェントは、サブシステムサービスに適時どのようにアクセスしますか。各地理的な場所またはタイムゾーンにサブシステムが必要ですか。
  • Certificate System ユーザーの物理的な場所は、ネットワークの遅延時間のために、要求の承認やトークンの登録、システムのパフォーマンスなどに影響を与える可能性があります。インストールするサブシステムの場所と数を決定するときは、証明書操作を処理するための応答時間の重要性を考慮に入れる必要があります。
  • インストールが必要なサブシステムの数
  • 主な考慮事項は、各サブシステムの予想される負荷であり、次に、地理的または部門的な分割です。負荷がかなり低いサブシステム (KRA や TKS など) では、PKI 全体に対して単一のインスタンスのみが必要になる場合があります。高負荷のシステム (CA)、またはローカルエージェント (TPS など) のローカルインスタンスの恩恵を受ける可能性のあるシステムでは、複数のインスタンスが必要になる場合があります。

    サブシステムは複製できます。つまり、サブシステムは基本的にクラスター化され、単一のユニットとして動作します。これは、負荷分散と高可用性に適しています。クローン作成は、CA と KRA に特に適しています。この場合、同じキーと証明書のデータに多数のユーザーがアクセスしたり、信頼性の高いフェイルオーバーを行う必要があります。

    複数のサブシステムインスタンスを計画するときは、サブシステムが確立されたセキュリティードメイン内にどのように適合するかを覚えておいてください。セキュリティードメインは、サブシステム間に信頼できる関係を構築し、サブシステムが連携して、差し迫ったニーズに対応するために利用可能なサブシステムを見つけることを可能にします。あらゆる種類のサブシステムの複数のインスタンスを使用して、単一の PKI で複数のセキュリティードメインを使用することも、すべてのサブシステムに単一のセキュリティードメインを使用することもできます。

  • サブシステムのクローンを作成する必要がありますか。その場合、キーのマテリアルを安全に保管する方法は何ですか。
  • クローン作成されたサブシステムは、基本的に単一のインスタンスとして動作します。これは、需要の高いシステム、フェイルオーバー、または負荷分散には適していますが、保守が困難になる可能性があります。たとえば、複製された CA には、発行する証明書のシリアル番号の範囲があり、クローンはその範囲の終わりに達する可能性があります。
  • サブシステムの証明書とキーは、Certificate System の内部ソフトウェアトークンまたは外部ハードウェアトークンに保存されますか。
  • Certificate System は、nCipher nShield と Safenet LunaSA の 2 つのハードウェアセキュリティーモジュール (HSM) をサポートしています。ハードウェアトークンを使用すると、サブシステムをインストールする前に追加のセットアップと設定が必要になる場合がありますが、セキュリティーの別のレイヤーも追加されます。
  • CA 署名証明書の要件Certificate System で、有効期間などの属性を制御する必要があるか。CA 証明書が配布される方法
  • ここでの本当の問題は、CA が証明書の発行に関する独自のルールを設定するルート CA になるのか、それとも他の CA (PKI 内の別の CA または外部 CA) が発行できるどの種類の証明書に制限を設定するのかということです。

    Certificate Manager は、ルート CA または下位 CA として設定できます。ルート CA と下位 CA の相違点は、CA 署名証明書に署名することです。ルート CA は、独自の証明書に署名します。下位 CA には、別の CA (内部または外部) がその証明書に署名します。

    自己署名ルート CA の問題であり、独自の CA 署名証明書に署名します。これにより、CA は、有効期間や許可される従属 CA の数など、独自の設定ルールを設定できます。

    下位 CA には、パブリック CA または別の Certificate System ルート CA によって発行された証明書があります。この CA は、他の CA が発行できる証明書の種類、証明書に含めることができる拡張子、下位 CA が作成できる下位 CA のレベルなど、証明書の設定や証明書の使用方法に関するルールに 従属 しています。

    1 つの方法として、Certificate Manager をパブリック CA に従属させる方法があります。これは、下位 CA が発行できる証明書の種類と証明書チェーンの性質にパブリック CA が課す制限を導入するため、非常に制限される可能性があります。一方、パブリック CA にチェーンする利点の 1 つは、サードパーティーがルート CA 証明書を Web ブラウザーまたは他のクライアントソフトウェアに送信する責任があることです。これは、管理者が制御することはできないブラウザーを使用してさまざまな企業がアクセスする証明書の主な利点です。

    もう 1 つのオプションは、CA を Certificate System CA に従属させることです。Certificate System CA をルート CA として設定すると、発行した CA 署名証明書の内容を制御するポリシーを設定し、Certificate System 管理者がすべての下位 CA を制御することができます。

    最初の CA が自己署名ルートをインストールし、サードパーティーに適用して証明書を発行するのを待つのが最も簡単な方法です。ルート CA の数と、ルート CA と従属 CA の両方を配置する場所を必ず決めておいてください。

  • 発行する証明書の種類どのような特性が必要であり、それらの特性に使用できるプロファイル設定は何ですか。証明書に必要な制限
  • 「証明書プロファイルの使用およびカスタマイズ」 で言及したとおり、プロファイル (CA によって発行される各タイプの証明書を設定するフォーム) をカスタマイズできます。これは、サブジェクト DN、有効期間、SSL/TLS クライアントのタイプ、およびその他の要素を、特定の目的のために管理者が定義できることを意味します。セキュリティーを確保するため、プロファイルは PKI で必要な機能のみを提供する必要があります。不要なプロファイルは無効にする必要があります。
  • 証明書要求を承認するための要件。要求側が自身を認証する方法と、要求を承認するのに必要なプロセスの種類。
  • 要求承認プロセスは、証明書のセキュリティーに直接影響を及ぼします。自動化されたプロセスははるかに高速ですが、リクエスターの ID は表面的にしか検証されないため、安全性は低くなります。同様に、エージェントが承認した登録はより安全です (最も安全なシナリオでは、直接の確認とサポート ID が必要になる可能性があるため) が、最も時間がかかる可能性もあります。

    まず、ID 検証プロセスの安全性を判断し、次にその ID を検証するために必要な認証 (承認) メカニズムを判断します。

  • 多くの外部クライアントが証明書のステータスを検証する必要があるか。Certificate Manager の内部 OCSP が負荷を処理しているか。
  • CRL の公開および証明書の検証は重要です。証明書のステータスをチェックするクライアントの種類 (主に内部クライアントなのか、外部クライアントなのか、ユーザー証明書またはサーバー証明書を検証するのか) を決定し、実行される OCSP チェックの数も決定します。CA には内部チェックや頻度の低いチェックに使用できる内部 OCSP がありますが、多数の OCSP チェックを行うと CA のパフォーマンスが低下する可能性があります。多数の OCSP チェック、特に大規模な CRL の場合は、別の OCSP マネージャーを使用して CA の負荷を軽減することを検討してください。
  • PKI が代替キーを許可するか ?キーアーカイブとリカバリーが必要になりますか。
  • 失われた証明書またはトークンが単に取り消されて置き換えられた場合は、それを回復するためのメカニズムは必要ありません。ただし、証明書を使用して電子メール、ファイル、ハードドライブなどのデータに署名または暗号化を行う場合は、データを回復できるように、キーが常に使用可能である必要があります。この場合、データが常にアクセスできるように KRA を使用してキーをアーカイブします。
  • 組織はスマートカードを使用しますか ?その場合は、スマートカードが置き忘れられ、キーのアーカイブとリカバリーが必要になった場合、一時的なスマートカードは許可されますか。
  • スマートカードが使用されていない場合、これらのサブシステムはトークン管理にのみ使用されるため、TPS または TKS を設定する必要はありません。ただし、スマートカードを使用する場合は、TPS および TKS が必要です。トークンが失われて置き換えられる可能性がある場合は、トークンの証明書を再生成できるように、キーをアーカイブするための KRA も必要です。
  • 証明書および CRL を公開する場所パブリッシュが機能するには、受信側でどのような設定が必要ですか。どのような種類の証明書または CRL を公開する必要があり、どのくらいの頻度で公開する必要がありますか。
  • 決定すべき重要なことは、証明書または CRL 情報にアクセスできるようにするために必要なクライアントと、そのアクセスを許可する方法です。そこから、公開ポリシーを定義できます。

パート II. Red Hat Certificate System のインストール

ここでは、Red Hat Certificate System をインストールするための要件および手順を説明します。

第6章 インストールの前提条件および準備

Red Hat Certificate System のインストールプロセスでは、環境の準備が必要です。この章では、Certificate System サブシステムをインストールする際の要件、依存関係、およびその他の前提条件を説明します。

6.1. Red Hat Enterprise Linux のインストール

Red Hat Certificate System 10.8 には、Red Hat Enterprise Linux 8.10 バージョンが必要です。Red Hat Enterprise Linux のインストールの詳細は、標準的な RHEL インストールの実行 を参照してください。

Red Hat Enterprise Linux で FIPS (Federal Information Processing Standard) を有効にするには、Red Hat セキュリティーの強化ガイド を参照してください。

重要

Certificate System をインストールする前に、FIPS モードを RHEL ホストで有効にする必要があります。FIPS モードが有効になっていることを確認するには、以下を実行します。

# sysctl crypto.fips_enabled

返された値が 1 の場合、FIPS モードは有効です。

重要

RHEL で FIPS モードが有効になっている場合、Certificate System で使用されるアタッチされた HSM も FIPS モードである必要があります。「HSM での FIPS モードの有効化」を参照してください。

6.1.1. SELinux を使用したシステムの保護

SELinux (Security-Enhanced Linux) は、Linux カーネルに必須のアクセス制御メカニズムを実装しておりで、標準の任意アクセス制御がチェックされた後、許可された操作をチェックします。SELinux は、定義されたポリシーに基づいて、Linux システム内のファイルとプロセス、およびそれらのアクションにルールを適用できます。

ほとんどの場合、enforcing モードで SELinux を使用して Certificate System を実行するために必要なアクションはありません。ハードウェアセキュリティーモジュール (HSM) を使用する場合など、Certificate System のドキュメントの手順で SELinux 関連の設定を手動で行う必要がある場合は、対応するセクションに記載されています。

デフォルトでは、Red Hat Enterprise Linux をインストールした後、SELinux が有効になり、enforcing モードで実行します。それ以上のアクションは必要ありません。

  • 現在の SELinux モードを確認するには、以下を入力します。

    # getenforce

SELinux の詳細は、SELinux 使用ガイド を参照してください。

6.1.2. ファイアウォールの設定

以下の表は、Certificate System サブシステムで使用されるデフォルトのポートを示しています。

表6.1 Certificate System のデフォルトポート
サービスポートプロトコル

HTTP

8080

TCP

HTTPS

8443

TCP

Tomcat 管理

8005

TCP

pkispawn ユーティリティーを使用して Certificate System を設定すると、ポート番号をカスタマイズできます。上記のデフォルトとは異なるポートを使用する場合は、ファイアウォールで必要なポートを開くの説明に従ってファイアウォールで対応して開きます。ポートの詳細は、「ポートの計画」 を参照してください。

Directory Server にアクセスするために必要なポートは、Directory Server インストールガイド の該当するセクションを参照してください。

ファイアウォールで必要なポートを開く

クライアントと Certificate System と間の通信を有効にするには、ファイアウォールで必要なポートを開きます。

  1. firewalld サービスが実行中である必要があります。

    # systemctl status firewalld
  2. firewalld を起動し、システム起動時に自動的に起動するように設定するには、次のコマンドを実行します。

    # systemctl start firewalld
    # systemctl enable firewalld
  3. firewall-cmd ユーティリティーを使用して必要なポートを開きます。たとえば、デフォルトのファイアウォールゾーンで Certificate System のデフォルトポートを開くには、次のコマンドを実行します。

    # firewall-cmd --permanent --add-port={8080/tcp,8443/tcp,8009/tcp,8005/tcp}

    システムのポートを開くために firewall-cmd を使用する方法の詳細は、ネットワークの保護 または firewall-cmd(1) の man ページを参照してください。

  4. ファイアウォール設定を再度読み込んで、変更が即座に反映されるようにします。

    # firewall-cmd --reload

6.2. ハードウェアセキュリティーモジュール

ハードウェアセキュリティーモジュール (HSM) を使用するには、FIPS (Federal Information Processing Standard) 140-2 で検証された HSM が必要です。Certificate System は、デフォルトで nCipher nShield ハードウェアセキュリティーモジュール (HSM) と Gemalto Safenet LunaSA HSM をサポートします。Certificate System がサポートする HSM は、PKCS #11 ライブラリーモジュールが指定されているインストールパスにある場合、インストールの事前設定段階で modutil コマンドを使用して pkcs11.txt データベースに自動的に追加されます。

6.2.1. HSM での FIPS モードの有効化

特定のデプロイメントでは、FIPS モードを使用するように HSM を設定する必要があります。HSM で FIPS モードを有効にするには、特定の手順は、HSM ベンダーのドキュメントを参照してください。

重要
nCipher HSM
nCipher HSM では、FIPS モードが Security World を生成する場合にのみ有効にできます。これは後で変更することはできません。Security World を生成するにはさまざまな方法がありますが、常に new-world コマンドを使用することが推奨されます。FIPS 準拠の Security World を生成する方法は、nCipher HSM ベンダーのドキュメントを参照してください。
LunaSA HSM
同様に、Luna HSM で FIPS モードを有効にするには、初期設定時に行う必要があります。これは、このポリシーを変更すると、セキュリティー対策として HSM がゼロになるためです。詳細は、Luna HSM ベンダーのドキュメントを参照してください。

6.2.2. FIPS モードが HSM で有効になっているかどうかの確認

このセクションでは、特定の HSM に対して FIPS モードが有効になっているかどうかを確認する方法を説明します。その他の HSM は、ハードウェアの製造元のドキュメントを参照してください。

6.2.2.1. FIPS モードが nCipher HSM で有効にされているかどうかの確認
注記

完全な手順は、HSM ベンダーのドキュメントを参照してください。

FIPS モードが nCipher HSM で有効になっているかどうかを確認するには、次のコマンドを実行します。

# /opt/nfast/bin/nfkminfo

古いバージョンのソフトウェアでは、StrictFIPS140 が state フラグに一覧表示されると、FIPS モードが有効になります。ただし、新しいバージョンでは、新しい mode の行を確認して fips1402level3 を検索することが推奨されます。すべてのケースで、nfkminfo 出力には hkfips キーも存在しているはずです。

6.2.2.2. FIPS モードが Luna SA HSM で有効にされているかどうかの確認
注記

完全な手順は、HSM ベンダーのドキュメントを参照してください。

FIPS モードが Luna SA HSM で有効になっているかどうかを確認するには、次を実行します。

  1. lunash 管理コンソールを開きます。
  2. hsm show コマンドを使用して、出力に The HSM is in FIPS 140-2 approved operation mode. の文字が含まれていることを確認します。

    lunash:> hsm show
    ...
           FIPS 140-2 Operation:
           =====================
           The HSM is in FIPS 140-2 approved operation mode.
    ...

6.2.3. HSM 用の SELinux の設定

特定の HSM では、Certificate System をインストールする前に、手動で SELinux 設定を更新する必要があります。

以下のセクションでは、対応している HSM に必要なアクションを説明します。

nCipher nShield

HSM をインストールし、Certificate System をインストールする前に、以下を行います。

  1. /opt/nfast/ ディレクトリーのファイルのコンテキストをリセットします。

    # restorecon -R /opt/nfast/
  2. nfast ソフトウェアを再起動します。

    # /opt/nfast/sbin/init.d-ncipher restart
Gemalto Safenet LunaSA HSM
Certificate System をインストールする前に、SELinux 関連のアクションは必要ありません。

対応している HSM の詳細は、「サポート対象のハードウェアセキュリティーモジュール」 を参照してください。

6.2.4. HSM を使用した Certificate System のインストールの準備

pkispawn ユーティリティーを使用して RHCS をインストールする」 では、HSM を使用して Certificate System をインストールする場合は、pkispawn ユーティリティーに渡す設定ファイルで以下のパラメーターを使用します。

...
[DEFAULT]
##########################
# Provide HSM parameters #
##########################
pki_hsm_enable=True
pki_hsm_libfile=hsm_libfile
pki_hsm_modulename=hsm_modulename
pki_token_name=hsm_token_name
pki_token_password=pki_token_password

########################################
# Provide PKI-specific HSM token names #
########################################
pki_audit_signing_token=hsm_token_name
pki_ssl_server_token=hsm_token_name
pki_subsystem_token=hsm_token_name
...
  • pki_hsm_libfile および pki_token_name パラメーターの値は、HSM インストールにより異なります。これらの値により、pkispawn ユーティリティーで HSM をセットアップし、Certificate System が接続できるようになります。
  • pki_token_password の値は、HSM トークンのパスワードにより異なります。パスワードは、HSM で新しいキーを作成するための pkispawn ユーティリティーの読み取りおよび書き込み権限を付与します。
  • pki_hsm_modulename の値は、後続の pkispawn 操作で HSM を識別するために使用される名前です。文字列は、任意のものとして設定できる識別子です。これにより、pkispawn および Certificate System は、後の操作で HSM および設定情報を名前で参照できます。

以下のセクションでは、各 HSM の設定を説明します。HSM がリストにない場合は、HSM の製造元のドキュメントを参照してください。

6.2.4.1. nCipher HSM パラメーター

nCipher HSM の場合は、以下のパラメーターを設定します。

pki_hsm_libfile=/opt/nfast/toolkits/pkcs11/libcknfast.so
pki_hsm_modulename=nfast

pki_hsm_modulename の値は任意の値に設定できることに注意してください。上記の値は推奨値です。

例6.1 トークン名の特定

トークン名を特定するには、root ユーザーとして以下のコマンドを実行します。

[root@example911 ~]# /opt/nfast/bin/nfkminfo
World
 generation  2

...snip...

Cardset
 name          "NHSM6000-OCS"
 k-out-of-n    1/4
 flags         NotPersistent PINRecoveryRequired(enabled) !RemoteEnabled
 timeout       none

...snip...

Cardset セクションの name フィールドの値は、トークン名を一覧表示します。

以下のようにトークン名を設定します。

pki_token_name=NHSM6000-OCS
6.2.4.2. SafeNet/Luna SA HSM パラメーター

SafeNet Luna Network HSM などの SafeNet / Luna SA HSM の場合は、次のパラメーターを指定します。

pki_hsm_libfile=/usr/safenet/lunaclient/lib/libCryptoki2_64.so
pki_hsm_modulename=lunasa

pki_hsm_modulename の値は任意の値に設定できることに注意してください。上記の値は推奨値です。

例6.2 トークン名の特定

トークン名を特定するには、root ユーザーとして以下のコマンドを実行します。

# /usr/safenet/lunaclient/bin/vtl verify

The following Luna SA Slots/Partitions were found:

Slot    Serial #            Label
===    ===============    =====
   0       1209461834772     lunasaQE

label 列の値にはトークン名がリストされます。

以下のようにトークン名を設定します。

pki_token_name=lunasaQE

6.3. FQDN 設定

PKI システムを適切に機能させるには、システム内の各マシンに正しい完全修飾ドメイン名が必要です。

各マシンで完全修飾ドメイン名を設定するには、次のプロセスを実行します。

6.3.1. FQDN の検証

現在の FQDN を確認するには、次のコマンドを実行します。

# hostname
pki.example.com

6.3.2. FQDN の設定

ホスト名が予想と異なる場合は、hostnamectl を実行してホスト名を設定します。以下に例を示します。

  1. pki マシンのホスト名を次のように設定します。

    # hostnamectl set-hostname pki.example.com
  2. DS マシンのホスト名を次のように設定します。

    # hostnamectl set-hostname dir.example.com
  3. CS マシンと DS マシンの IP アドレスと新しいホスト名を、両方のマシンの /etc/hosts のエントリーとして追加します。

    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    10.1.111.111 pki.example.com
    10.2.222.222 dir.example.com
  4. 変更してから FQDN を再度確認します。

    # hostname

6.4. Red Hat Directory Server のインストール

Red Hat Certificate System は、Red Hat Directory Server を使用して、システム証明書とユーザーデータを保存します。Directory Server と Certificate System の両方を、ネットワーク内の同じホストまたは異なるホストにインストールできます。

重要

Directory Server をホストしている RHEL システムで FIPS モードを有効にする場合は、Directory Server をインストールする前に、RHEL ホストで FIPS モードを有効にする必要があります。

FIPS モードが有効になっていることを確認するには、以下を実行します。

# sysctl crypto.fips_enabled

返された値が 1 の場合、FIPS モードは有効です。

6.4.1. Directory Server パッケージのインストール

Red Hat Directory Server パッケージをインストールするには、次の手順を実行します。

  1. Directory Server を提供するサブスクリプションがホストに登録されていることを確認してください。
  2. Directory Server リポジトリーを有効にします。

    # subscription-manager repos --enable=dirsrv-11-for-rhel-8-x86_64-rpms
  3. Directory Server と openldap-clients パッケージをインストールします。

    # dnf module install redhat-ds:11
    # dnf install openldap-clients

6.4.2. Directory Server インスタンスの作成

注記: DS インスタンスをインストールする前に、次の手順が実行されていることを確認してください。

PKI サーバー用のローカル DS インスタンスを準備するには、次のプロセスに従います。

注記: DS のインストールにより、SSL 接続用のブートストラップサーバー証明書を発行するブートストラップ自己署名付き証明書が自動的に生成されます。PKI インストールでは、これにより提供されるセキュリティーを利用してインストールを完了します。ブートストラップサーバー証明書は、インストール後の手順として実際の CA により発行されたサーバー証明書に置き換えることができます。

ブートストラップ証明書の生成と SSL 接続を無効にする場合は、以下の sed コマンドで self_sign_cert = False を設定します。ブートストラップ証明書を使用して DS で SSL 接続を有効にする の手順に従って、後から SSL を有効にすることもできます。

6.4.2.1. DS インスタンスの作成
6.4.2.1.1. DS 設定ファイル (例: ds.inf) を生成します。
$ dscreate create-template ds.inf

DS 設定ファイルを次のようにカスタマイズします。

$ sed -i \
    -e "s/;instance_name = ./instance_name = localhost/g" \ -e "s/;root_password = ./root_password = Secret.123/g" \
    -e "s/;suffix = ./suffix = dc=example,dc=com/g" \ -e "s/;create_suffix_entry = ./create_suffix_entry = True/g" \
    -e "s/;self_sign_cert = .*/self_sign_cert = True/g" \
    ds.inf

以下は、

  • instance_name は、DS インスタンスの名前を指定します。この例では、localhost に設定されています。
  • root_password は、DS 管理者のパスワード (cn=Directory Manager) を指定します。この例では Secret.123 に設定されています。
  • suffix は、DS インスタンスの名前空間を指定します。この例では、dc=example,dc=com に設定されています。
  • self_sign_cert は、SSL 接続用に自己署名証明書を作成するかどうかを指定します。この例では True に設定されています。SSL 接続が有効になっています。

詳細は、DS 設定ファイル (ds.inf) および DS ドキュメント に記載されているパラメーターの説明を参照してください。

6.4.2.1.2. インスタンスの作成

最後に、インスタンスを作成します。

$ dscreate from-file ds.inf
6.4.2.2. PKI サブツリーの作成

最初は DS インスタンスは空です。LDAP クライアントを使用して、ルートエントリーと PKI ベースエントリーを追加します。以下はその例です。

$ ldapadd -H ldap://$HOSTNAME -x -D "cn=Directory Manager" -w Secret.123 << EOF
dn: dc=pki,dc=example,dc=com
objectClass: domain
dc: pki
EOF

各 PKI サブシステムのサブツリーは、サブシステムのインストール時に作成されます。すべての PKI サブシステムが作成されると、LDAP ツリーは次のようになります。

dc=example,dc=com
+ dc=pki
  + dc=ca
  + dc=kra
  + dc=ocsp
  + dc=tks
  + dc=tps
  + dc=acme
  + dc=est
6.4.2.3. SSL 接続を有効にする

以前に self_sign_cert = False を設定したことがあり、SSL 接続を使用して DS に PKI をインストールするためにブートストラップ証明書を作成する必要がある場合は、DS で SSL 接続を有効にする に従ってください。

注記: ブートストラップサーバー証明書は、インストール後の手順として実際の CA により発行されたサーバー証明書に置き換えることができます。

6.4.2.4. レプリケーションの設定

DS レプリケーションの設定 を参照してください。

6.4.2.5. DS インスタンスの削除

DS インスタンスを削除するには、以下を実行します。

$ dsctl localhost remove --do-it
6.4.2.6. ログファイル

DS ログファイルは /var/log/dirsrv/slapd-localhost にあります。

  • access
  • audit
  • errors
6.4.2.7. 関連情報

6.4.3. Red Hat サブスクリプションの添付および Certificate System パッケージリポジトリーの有効化

Certificate System をインストールおよび更新する前に、対応するリポジトリーを有効にする必要があります。

  1. Red Hat サブスクリプションをシステムにアタッチします。

    システムがすでに登録されているか、Certificate System を提供するサブスクリプションが割り当てられている場合は、この手順をスキップしてください。

    1. システムを Red Hat サブスクリプション管理サービスに登録する

      --auto-attach オプションを使用して、オペレーティングシステムに利用可能なサブスクリプションを自動的に適用します。

      # subscription-manager register --auto-attach
      Username: admin@example.com
      Password:
      The system has been registered with id: 566629db-a4ec-43e1-aa02-9cbaa6177c3f
      
      Installed Product Current Status:
      Product Name:           Red Hat Enterprise Linux Server
      Status:                 Subscribed
    2. 利用可能なサブスクリプションをリストし、Red Hat Certificate System を提供するプール ID をメモします。以下に例を示します。

      # subscription-manager list --available --all
      ...
      Subscription Name:   Red Hat Enterprise Linux Developer Suite
      Provides:            ...
                           Red Hat Certificate System
                           ...
      Pool ID:             7aba89677a6a38fc0bba7dac673f7993
      Available:           1
      ...

      サブスクリプションが多数ある場合は、コマンドの出力が非常に長くなることがあります。必要に応じて、出力をファイルにリダイレクトできます。

      # subscription-manager list --available --all > /root/subscriptions.txt
    3. 前の手順でプール ID を使用して、Certificate System のサブスクリプションをシステムに割り当てます。

      # subscription-manager attach --pool=7aba89677a6a38fc0bba7dac673f7993
      Successfully attached a subscription for: Red Hat Enterprise Linux Developer Suite
  2. Certificate System リポジトリーを有効にします。

    # subscription-manager repos --enable certsys-10.x-for-rhel-8-x86_64-rpms
    Repository 'certsys-10-for-rhel-8-x86_64-rpms' is enabled for this system.
  3. Certificate System モジュールストリームを有効にします。

    # dnf module enable redhat-pki

必要なパッケージのインストールについては、7章Red Hat Certificate System のインストールと設定 に記載されています。

注記

コンプライアンスのために、Red Hat が承認したリポジトリーのみを有効にします。subscription-manager ユーティリティーを使用して有効にできるのは、Red Hat が承認したリポジトリーのみです。

6.5. Certificate System パッケージ

Certificate System パッケージをインストールする場合は、サブシステムごとに個別にインストールすることも、一度にすべてインストールすることもできます。

重要

Certificate System パッケージをインストールおよび更新するには、対応するリポジトリーを有効にする必要があります。詳細は、「Red Hat サブスクリプションの添付および Certificate System パッケージリポジトリーの有効化」 を参照してください。

Red Hat Certificate System では、以下のサブシステムパッケージとコンポーネントを利用できます。

  • pki-ca: 認証局 (CA) サブシステムを提供します。
  • pki-kra: Key Recovery Authority (KRA) サブシステムを提供します。
  • pki-ocsp: OCSP (Online Certificate Status Protocol) レスポンダーを提供します。
  • pki-tks: トークンキーサービス (TKS) を提供します。
  • pki-tps: トークン処理サービス (TPS) を提供します。
  • pki-console および redhat-pki-console-theme: Java ベースの Red Hat PKI コンソールを提供します。両方のパッケージをインストールする必要があります。
  • pki-server および redhat-pki-server-theme: Web ベースの Certificate System インターフェイスを提供します。両方のパッケージをインストールする必要があります。

    このパッケージは、pki-capki-krapki-ocsppki-tkspki-tps のいずれかのパッケージをインストールすると依存関係としてインストールされます。

  • pki-acme: 自動証明書管理環境 (ACME) を提供します。
  • pki-est: Enrollment over Secure Transport を提供します。

6.5.1. Certificate System パッケージのインストール

  • redhat-pki モジュールと組み合わせて使用すると、すべての Certificate System サブシステムパッケージとコンポーネントを RHEL 8 システムに一度にインストールできます。redhat-pki モジュールは、Red Hat Certificate System の 5 つのサブシステムをインストールします。Red Hat Identity Management (IdM) の一部である pki-core モジュール (CA、KRA) に加え、RHCS 固有のサブシステム (OCSP、TKS、および TPS) と必要な依存関係を処理する pki-deps モジュールが含まれています。

    # yum install redhat-pki
  • パッケージを個別にインストールできます。たとえば、CA サブシステムおよび任意の Web インターフェイスをインストールするには、次のコマンドを実行します。

    # yum install pki-ca redhat-pki-server-theme

    その他のサブシステムでは、pki-ca のパッケージ名を、インストールするサブシステムの 1 つに置き換えます。

  • オプションの PKI コンソールが必要な場合は、以下を行います。

    # yum install pki-console redhat-pki-console-theme
    注記

    pkiconsole ツールは非推奨になりました。

6.5.2. Certificate System パッケージの更新

Certificate System パッケージおよびオペレーティングシステムパッケージを更新するには、以下の手順に従います。

  1. 「Certificate System の製品バージョンの特定」 の手順に従って、製品バージョンを確認します。
  2. \# yum update を実行します。

    上記のコマンドは、RHCS パッケージを含むシステム全体を更新します。

    注記

    PKI インフラストラクチャーをオフラインにして更新をインストールできるメンテナンスウィンドウをスケジュールすることが推奨します。

    重要

    Certificate System を更新するには、PKI インフラストラクチャーを再起動する必要があります。

  3. 次に、「Certificate System の製品バージョンの特定」 でバージョンを再度確認します。

    バージョン番号は、更新が正常にインストールされていることを確認する必要があります。

インストールせずに更新をダウンロードするには、上記の手順で --downloadonly オプションを使用します。

yum update --downloadonly

ダウンロードしたパッケージは /var/cache/yum/ ディレクトリーに保存されます。最新バージョンであれば、yum update は後でパッケージを使用します。

6.5.3. Certificate System の製品バージョンの特定

Red Hat Certificate System の製品バージョンは、/usr/share/pki/CS`SERVER_VERSION ファイルに保存されます。バージョンを表示するには、以下を実行します。

# cat /usr/share/pki/CS_SERVER_VERSION
Red Hat Certificate System {Version} (Batch Update 1)

実行中のサーバーの製品バージョンを検索するには、ブラウザーから以下の URL にアクセスします。

  • http://host_name:[rep]port_number/ca/admin/ca/getStatus
  • http://host_name:[rep]port_number/kra/admin/kra/getStatus
  • http://host_name:[rep]port_number/ocsp/admin/ocsp/getStatus
  • http://host_name:[rep]port_number/tks/admin/tks/getStatus
  • http://host_name:[rep]port_number/tps/admin/tps/getStatus
注記

各コンポーネントは個別のパッケージであるため、バージョン番号は異なります。上記は、現在実行中の各コンポーネントのバージョン番号を示しています。

6.6. Certificate System のオペレーティングシステムのユーザーおよびグループ

Certificate System をインストールする場合、pkiuser アカウントと対応する pkiuser グループが自動的に作成されます。Certificate System は、このアカウントとグループを使用してサービスを起動します。

インストール後の手順の一部として、オペレーティングシステム上でインスタンスを起動、停止、または直接設定できるように、各 Certificate System 管理者のオペレーティングシステムユーザーを作成するように指示されます。詳細は、「インストール後のタスク」 を参照してください。

第7章 Red Hat Certificate System のインストールと設定

Red Hat Certificate System は、個別にインストールできるさまざまなサブシステムを提供します。たとえば、複数のサブシステムインスタンスを 1 つのサーバーにインストールすることも、異なるホストで個別に実行することもできます。これにより、インストールを環境に合わせて適応させることができ、より高い可用性、スケーラビリティー、フェイルオーバーのサポートを提供することができます。この章では、パッケージのインストールと、個別のサブシステムの設定方法を説明します。

Certificate System には以下のサブシステムが含まれます。

  • 認証局 (CA)
  • キーリカバリー認証局 (KRA)
  • OCSP (Online Certificate Status Protocol) レスポンダーの使用
  • トークンキーサービス (TKS)
  • トークン処理システム (TPS)

各サブシステムは、スタンドアロン Tomcat Web サーバーインスタンスとして独立してインストールおよび設定されます。ただし、Red Hat Certificate System はさらに、各サブシステムに 1 つまで共有の Tomcat Web サーバーインスタンスの実行をサポートしています。

7.1. サブシステムの設定順序

異なるサブシステム間の関係のため、個々のサブシステムがセットアップされる順序は重要です。

  1. 他の公開鍵インフラストラクチャー (PKI) サブシステムをインストールする前に、セキュリティードメインとして実行されている少なくとも 1 つの CA が必要です。
  2. CA の設定後に OCSP をインストールします。
  3. KRA サブシステムおよび TKS サブシステムは、CA および OCSP の設定後にいつでもインストールできます。
  4. TPS サブシステムは CA および TKS に依存し、任意で KRA サブシステムおよび OCSP サブシステムに依存します。
注記

特定の状況では、管理者は、セキュリティードメインとして実行している CA を必要としないスタンドアロンの KRA または OCSP をインストールしたいと考えます。詳細は、「PKI サブシステムのインストール」 を参照してください。

7.2. pkispawn ユーティリティーを使用して RHCS をインストールする

注記

pkispawn について十分理解している場合は、「PKI サブシステムのインストール」 に進んでください。

Red Hat Certificate System では、管理者は pkispawn ユーティリティーを使用して個々のサブシステムを設定します。このセクションでは、pkispawn を使用したインストールの仕組み全般を説明します。「PKI サブシステムのインストール」 のインストール手順を実行する場合は、正しい選択を行えるように、内容を慎重に確認してください。

pkispawn は、2 つの異なる動作モードを提供します。

  • インタラクティブモード: セットアップ中、ユーザーは設定時に個々の設定を要求します。このモードは、単純なデプロイメントに使用します。
  • バッチモード: ユーザーは提供する設定ファイルから値が読み込まれます。設定ファイルで設定されていないパラメーターはデフォルトを使用します (詳細は下記参照)。

特に明記されていない限り、これ以降ではバッチモードが想定されています。

7.2.1. pkispawn 設定ファイルの作成

pkispawn ユーティリティーには設定ファイルが必要です。このファイルには、セクションにグループ化されたパラメーターが含まれています。これらのセクションは積み重ねられているため、前のセクションで定義されたパラメーターを後のセクションで定義されたパラメーターでオーバーライドできます。セクションは次の順序で読まれます。

  1. [DEFAULT] - サブシステムに依存しない設定
  2. [Tomcat]
  3. [CA]、[KRA]、[OCSP]、[TKS]、[TPS]、[ACME]、または [EST] - サブシステム固有のセクション

実行すると、pkispawn は以下を行います。

  1. /usr/share/pki/server/etc/default.cfg ファイルからデフォルト値を読み取ります。詳細は、pki_default.cfg(5) の man ページを参照してください。

    重要

    /usr/share/pki/server/etc/default.cfg ファイルは編集しないでください。代わりに、デフォルトをオーバーライドする設定ファイルを作成するように指示されます。設定ファイルの使用に関する詳細は、次のセクションでサブシステムの各タイプに対応する pkispawn 設定ファイルの例を参照してください。

  2. 上記の管理者が提供する設定ファイルを読み取り、デフォルト値をオーバーライドします。
  3. 要求されたサブシステムのインストールを実行します。
  4. 設定に基づいて設定を行う Java サーブレットに設定を渡します。

pkispawn の設定

以下では、pkispawn の設定ファイルを作成する方法と、いくつかの主要なパラメーターを説明します。パラメーターが属している [ ] セクションや、パラメーターの正確なスペルなどの詳細は、pkispawn(8) および pki_default.cfg(5) の man ページ、特に /usr/share/pki/server/etc/default.cfg を参照してください。

/root/pki/config.subsystem.txt などの pkispawn 設定用のテキストファイルを作成し、以下で説明する設定を入力します。対応する [ ] セクションの下にすべての設定を追加する必要があります。適切な配置を確認するには、/usr/share/pki/server/etc/default.cfg ファイルを参照してください。

重要

このセクションでは、一般的な最小設定について説明します。環境によっては、追加のパラメーターが必要になる場合があります (/usr/share/pki/server/etc/default.cfg を参照)。追加の例は、pkispawn(8) の man ページの EXAMPLES セクションを参照してください。

このセクションで説明するパラメーターは、pki_default.cfg(5) の man ページを参照してください。

サブシステムに依存しない設定

サブシステムの共有 PKI インスタンスと個別の PKI インスタンスの両方がサポートされています。個別の PKI インスタンスは、単一の PKI サブシステム (CA、KRA、OCSP、TKS、または TPS) が含まれるスタンドアロンの Java ベースの Apache Tomcat インスタンスとして実行され、同じマシン上に配置されている場合は一意のインスタンス名とポートを使用する必要があります。一方、共有インスタンスは、同じインスタンス名とポートを共有する 1 つの Java ベースの Apache Tomcat インスタンスとして実行されますが、各タイプの PKI サブシステムを 1 つまで組み合わせて含めることができます。

インストールするサブシステムとは関係なく、設定ファイルの [DEFAULT] セクションで次の設定を指定できます。

  1. 一意のインスタンス名を設定します。

    # pki_instance_name=instance_name
  2. ホスト名を設定します。

    # pki_hostname=server.example.com
    注記

    Certificate System は、これらのパラメーターとインスタンス名に基づいて一意の証明書ニックネームを作成します。証明書のニックネームの一意性は、複数の PKI インスタンスで共有される HSM トークンの機能を維持する上で非常に重要です。

  3. HTTP および HTTPS プロトコルのポート番号を設定します。

    pki_https_port=port_number
    pki_http_port=port_number
    重要

    同じホスト上で複数の Certificate System インスタンスを実行するには、ホスト上の他のサービスで使用されていない一意のポートを pki_https_port および pki_http_port パラメーターに設定する必要があります。デフォルトでは、Certificate System は HTTP にポート 8080、HTTPS にポート 8443 を使用します。

  4. HSM 固有のパラメーターを設定します。

    pki_hsm_enable=<True|False>
    pki_hsm_libfile=HSM_PKCS11_library_path
    pki_hsm_modulename=HSM_module_name
    pki_token_name=HSM_token_name
    pki_token_password=HSM_token_password
    
    pki_audit_signing_token=HSM_token_name
    pki_subsystem_token=HSM_token_name
    pki_sslserver_token=HSM_token_name

    詳細は、「HSM を使用した Certificate System のインストールの準備」 を参照してください。

  5. RSA Certificate System インスタンスをビルドする場合は、次の設定を使用します。

    pki_admin_key_algorithm=SHA256withRSA
    pki_admin_key_size=4096
    pki_admin_key_type=rsa
    pki_sslserver_key_algorithm=SHA256withRSA
    pki_sslserver_key_size=4096
    pki_sslserver_key_type=rsa
    pki_subsystem_key_algorithm=SHA256withRSA
    pki_subsystem_key_size=4096
    pki_subsystem_key_type=rsa
    pki_audit_signing_key_algorithm=SHA256withRSA
    pki_audit_signing_key_size=4096
    pki_audit_signing_key_type=rsa
    pki_audit_signing_signing_algorithm=SHA256withRSA

    key_algorithm パラメーターに選択できる項目は次のとおりです。

    SHA256withRSA
    SHA384withRSA
    SHA512withRSA
    注記

    これらのアルゴリズムパラメーターは、CA の CS.cfg ファイルの ca.profiles.defaultSigningAlgsAllowed パラメーターで指定された値に設定できます。詳細は、管理ガイドの付録 B.2.10 署名アルゴリズムの制約 を参照してください。署名アルゴリズムは key_type と一致する必要があります。

  6. 証明書の作成時に RSA の代わりに楕円曲線暗号 (ECC) を使用するには、次のように設定します。

    pki_admin_key_algorithm=SHA256withEC
    pki_admin_key_size=nistp256
    pki_admin_key_type=ecc
    pki_sslserver_key_algorithm=SHA256withEC
    pki_sslserver_key_size=nistp256
    pki_sslserver_key_type=ecc
    pki_subsystem_key_algorithm=SHA256withEC
    pki_subsystem_key_size=nistp256
    pki_subsystem_key_type=ecc
    pki_audit_signing_key_algorithm=SHA256withEC
    pki_audit_signing_key_size=nistp256
    pki_audit_signing_key_type=ecc
    pki_audit_signing_signing_algorithm=SHA256withEC

    key_algorithm パラメーターに選択できる項目は次のとおりです。

    SHA256withEC
    SHA384withEC
    SHA512withEC
    注記

    これらのアルゴリズムパラメーターは、CA の CS.cfg ファイルの ca.profiles.defaultSigningAlgsAllowed パラメーターで指定された値に設定できます。詳細は、管理ガイドの付録 署名アルゴリズムの制約 を参照してください。署名アルゴリズムは key_type と一致する必要があります。

    ECC の場合、key_size に選択できる値は次のとおりです。

    nistp256
    nistp384
    nistp521

    ECC の場合、key_type には ecc を選択できます。

  7. ブートストラップ管理者ユーザーのクライアントディレクトリーを設定します。

    pki_client_dir=bootstrap_admin_directory

    デフォルトでは、パスは ~/.dogtag/instance_name/ に設定されています。

    重要

    pki_admin_* および pki_client_* パラメーターは、インストールプロセスによって自動的に作成されるブートストラップユーザーに属します。デフォルトのロール (権限) とブートストラップユーザーの詳細は、「ユーザー、認可、アクセス制御」 を参照してください。このセクションで説明するパラメーターは、pki_default.cfg(5) の man ページを参照してください。

  8. ブートストラップ管理者ユーザーのさまざまなパスワードを設定します。

    pki_admin_password=password
    pki_client_database_password=password
    pki_client_pkcs12_password=password
  9. Certificate System と Directory Server の間で TLS を設定することを選択した場合は、設定ファイルで次のパラメーターを使用します。

    注記

    最初に基本的な TLS サーバー認証接続を作成する必要があります。インストール後、接続時にクライアント認証証明書を Directory Server に提示するよう要求するように設定します。その際にクライアント認証が設定されると、pki_ds_password は意味がなくなることに注意してください。

    pki_ds_database=back_end_database_name
    pki_ds_hostname=host_name
    pki_ds_secure_connection=True
    pki_ds_secure_connection_ca_pem_file=path_to_CA_or_self-signed_certificate
    pki_ds_password=password
    pki_ds_ldaps_port=port
    pki_ds_bind_dn=cn=Directory Manager

    pki_ds_database パラメーターの値は、pkispawn ユーティリティーが Directory Server インスタンス上にに対応するサブシステムデータベースを作成するために使用する名前です。

    pki_ds_hostname パラメーターの値は、Directory Server インスタンスのインストール場所によって異なります。これは、「Directory Server パッケージのインストール」 で使用される値によって異なります。

    pki_ds_secure_connection=True を設定する場合は、以下のパラメーターを設定する必要があります。

    • pki_ds_secure_connection_ca_pem_file: Directory Server の CA 証明書のエクスポートされたコピーが格納されたファイルのファイル名を含む完全修飾パスを設定します。このファイルが先に存在していなければ、pkispawn は使用できません。
    • pki_ds_ldaps_port: Directory Server がリッスンしているセキュアな LDAPS ポートの値を設定します。デフォルトは 636 です。
  10. Directory Server で自己署名付き証明書を使用する場合は、以下のコマンドを使用して Directory Server の Network Security Services (NSS) データベースからエクスポートします。

    # certutil -L -d /etc/dirsrv/slapd-instance_name/ \ -n "server-cert" -a -o /root/ds.crt
  11. セキュリティードメインとして機能する CA に対して、適切なパラメーターを設定します。

    # for a CA that acts as a security domain
    pki_security_domain_hostname=
    pki_security_domain_name=example.com Security Domain
    pki_security_domain_user=caadmin
    pki_security_domain_password=SD password

[Tomcat] セクション:

  1. Tomcat JServ Protocol (AJP) ポートを設定します。

    pki_ajp_port=Tomcat_AJP_port
  2. Tomcat サーバーポートを設定します。

    pki_tomcat_server_port=Tomcat_server_port
重要

同じホスト上で複数の PKI サブシステムインスタンスを実行するには、ホスト上の他のサービスで使用されていないポートを pki_ajp_port および pki_tomcat_server_port パラメーターに設定する必要があります。デフォルトでは、pki_ajp_port は 8009 に、pki_tomcat_server_port は 8005 に設定されています。

サブシステム固有の設定

初期設定ファイルを作成したら、サブシステム固有の設定を追加します。/usr/share/pki/server/etc/default.cfg ファイルで、各サブシステム ([CA][OCSP][KRA][TKS][TPS]、[ACME]、または [EST]) に適したパラメーターのリストを検索します。

7.2.2. インストール方法 (シングルステップまたはツーステップ)

pkispawn は、シングルステップインストール または ツーステップインストール のいずれかで実行できます。

注記

<pki_instance_name> パラメーターで上書きされない限り、デフォルトで pkispawn/var/lib/pki/pki-tomcat ディレクトリー配下の pki-tomcat と呼ばれる PKI サーバーインスタンスにサブシステムをインストールします。同じインスタンスに複数のサブシステムをインストールできます。

サンプルのデプロイメント設定ファイルは、付録 XXX [NEEDS UPDATING] にあります。

7.2.2.1. ワンステップインストール

ワンステップインストールのプロセスでは、管理者は最初に pkispawn 設定ファイルを作成し、次にこのファイルに対して以下のように pkispawn を実行します。

# pkispawn -s [CA, OCSP, KRA, TKS, TPS, ACME, EST] -f cs_inst.cfg –debug
注記

インストールを開始する前に、まず --precheck オプションを指定して pkispawn コマンドを実行し、設定ファイルを検証することが推奨されます。

CA の場合の例を以下に示します。

# pkispawn -s CA -f rootca_inst.cfg --precheck --debug
# pkispawn -s CA -f rootca_inst.cfg --debug

完全な例は、pkispawn シングルステップ方式を使用してルート CA をインストールする」 を参照してください。

7.2.2.2. ツーステップインストール

ツーステップインストールでは、管理者は最初に pkispawn 設定ファイルを作成し、次に同じ pkispawn 設定ファイルに対して pkispawn を 2 回実行します。pkispawn ユーティリティーの実行間に、管理者は登録プロファイル、cs.cfg などのさまざまな設定ファイルを手動で更新できます。この方法により、より優れたカスタマイズが可能になります。

ツーステップインストールを構成する 2 段階の概要は次のとおりです。

  • 最初のステップ (インストール)

    • pkispawn 設定ファイルを作成します。
    • pkispawn (インストール) を実行します。
  • 2 番目のステップ (設定)

    • 設定をカスタマイズします。
    • pkispawn (設定) を実行します。

最初のステップ (インストール)

このステップでは、pkispawn を実行すると /usr/share/pki/ ディレクトリーからインスタンス固有の /etc/pki/instance_name/ ディレクトリーに設定ファイルがコピーされます。さらに pkispawn は、デプロイメント設定ファイルで定義されている値に基づき設定を行います。

インストールのこの部分では、管理者が次の 2 つのサブステップを実行する必要があります。

  1. pkispawn 設定ファイルを作成します。pkispawn 設定ファイルの作成」を参照してください。
  2. 次のように pkispawn を実行します。

    # pkispawn -s [CA, OCSP, KRA, TKS, TPS] -f cs_inst.cfg --skip-configuration –debug
    注記

    インストールを開始する前に、まず --precheck オプションを指定して pkispawn コマンドを実行し、設定ファイルを検証することが推奨されます。

    CA の場合の例を以下に示します。

    # pkispawn -s CA -f rootca_inst.cfg --skip-configuration --precheck --debug
    # pkispawn -s CA -f rootca_inst.cfg --skip-configuration --debug

2 番目のステップ (設定)

2 番目のステップでは、pkispawn インスタンス固有の /etc/pki/instance_name/ ディレクトリーの設定ファイルに基づきインストールを続行します。

インストールのこの部分では、管理者が次の 2 つのサブステップを実行する必要があります。

  1. カスタマイズ: ここでは、次のサブステップに進む前に、インスタンス固有の設定ファイルの一部を手動で更新できます。通常、pkispawn 設定ファイルでは設定できないがシステムの結果や動作に影響を与えるパラメーターをこの時点でカスタマイズします。たとえば、/var/lib/pki/<CA instance name>/ca/conf/ のシステム証明書登録プロファイル (*.profile) を変更します (15章証明書プロファイルの設定 参照)。以下に例を示します。

    1. 対応するシステム証明書プロファイルを編集して、システム証明書に (デフォルトプロファイルにはない) 証明書拡張を追加します。
    2. 対応するシステム証明書プロファイルを編集してシステム証明書の有効期間を変更します。
  2. 次のように、最初のステップと同じ pkispawn ファイルに対して pkispawn を異なる方法で実行します。

    # pkispawn -s [CA, OCSP, KRA, TKS, TPS] -f cs_inst.cfg --skip-installation –debug
注記

インストールを開始する前に、まず設定ファイルを使用して事前チェックを実行することが推奨されます。

CA の場合の例を以下に示します。

# pkispawn -s CA -f rootca_inst.cfg --skip-installation --precheck --debug
# pkispawn -s CA -f rootca_inst.cfg --skip-installation --debug

完全な例は、pkispawn ツーステップ方式を使用してルート CA をインストールする」 を参照してください。

7.3. ルート認証局の設定 (例)

注記

pkispawn について十分に理解している場合は、「PKI サブシステムのインストール」 に進んでください。

このセクションでは、ルート CA をインストールする方法について 2 つの例を示します。

  • pkispawn シングルステップ方式を使用してルート CA をインストールします。
  • pkispawn ツーステップ方式を使用してルート CA をインストールします。

7.3.1. pkispawn シングルステップ方式を使用してルート CA をインストールする

シングルステップ方式を使用して RootCA インスタンスを設定するには、設定ファイルを作成し、pkispawn ツールを 1 回実行する必要があります。

この例では、RootCA は rhcs10.example.com (および他のインスタンス) にインストールされ、その内部ディレクトリーサーバーは rhds11.example.com にあります。

前提条件

手順

  1. RHCS インスタンス (rhcs10.example.com) をホストするマシンで、選択した場所 (例: /root/pki_rsa) に CA インストールファイルを作成します。

    # cd /root/pki_rsa
    # vi rootca_inst.cfg
    注記

    明示的に指定されていない限り、システム証明書のニックネームは、pki_instance_name に指定された値を使用して自動的に名前が付けられます。共有 HSM での証明書のニックネームの競合を回避するには、インスタンスを作成するたびに一意のインスタンス名を使用します。

    以下のインストールファイルでは、例となる値を指定しています。HSM パスワードの変更に加えて、たとえばポート、ディレクトリー、ニックネーム、ドメインなどの値を適宜変更します。

    [DEFAULT]
    pki_instance_name=rhcs10-RSA-RootCA
    pki_https_port=8443
    pki_http_port=8080
    
    # Crypto Token pki_hsm_enable=True pki_hsm_libfile=/opt/nfast/toolkits/pkcs11/libcknfast.so pki_hsm_modulename=nfast pki_token_name=NHSM-CONN-XC pki_token_password=<YourHSMpassword> pki_audit_signing_token=NHSM-CONN-XC pki_audit_signing_key_algorithm=SHA256withRSA pki_audit_signing_key_size=2048 pki_audit_signing_key_type=rsa pki_audit_signing_signing_algorithm=SHA256withRSA pki_subsystem_token=NHSM-CONN-XC pki_subsystem_key_algorithm=SHA256withRSA pki_subsystem_signing_algorithm=SHA256withRSA pki_subsystem_key_size=2048 pki_subsystem_key_type=rsa pki_sslserver_token=NHSM-CONN-XC pki_sslserver_key_algorithm=SHA256withRSA pki_sslserver_signing_algorithm=SHA256withRSA pki_sslserver_key_size=2048 pki_sslserver_key_type=rsa # Bootstrap Admin
    pki_admin_password=SECret.123
    pki_admin_key_type=rsa
    pki_admin_key_size=2048
    pki_admin_key_algorithm=SHA256withRSA
    
    # Bootstrap Admin client dir # by default, if pki_client_dir, pki_client_database_dir,
    # and pki_client_admin_cert_p12 are not specified, items will be placed # under some default directories in /root/.dogtag
    pki_client_admin_cert_p12=/opt/pki_rsa/rhcs10-RSA-RootCA/ca_admin_cert.p12
    pki_client_database_dir=/opt/pki_rsa/rhcs10-RSA-RootCA/certs_db
    pki_client_database_password=SECret.123
    pki_client_dir=/opt/pki_rsa/rhcs10-RSA-RootCA
    pki_client_pkcs12_password=SECret.123
    
    # Internal LDAP pki_ds_bind_dn=cn=Directory Manager pki_ds_ldap_port=389 pki_ds_ldaps_port=636 pki_ds_password=SECret.123 pki_ds_remove_data=True pki_ds_secure_connection=True pki_ds_secure_connection_ca_pem_file=/opt/pki_rsa/temp-dirsrv-rootca-cert.pem pki_ds_secure_connection_ca_nickname=DS temp CA certificate # Security Domain
    pki_security_domain_hostname=rhcs10.example.com
    pki_security_domain_name=Example-rhcs10-RSA-RootCA
    pki_security_domain_password=SECret.123
    
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    
    [CA]
    pki_import_admin_cert=False
    pki_admin_nickname=PKI Bootstrap Administrator for RSA-RootCA
    pki_admin_name=caadmin
    pki_admin_uid=caadmin
    pki_admin_email=caadmin@example.com
    
    pki_ca_signing_token=NHSM-CONN-XC
    pki_ca_signing_key_algorithm=SHA256withRSA
    pki_ca_signing_key_size=3072
    pki_ca_signing_key_type=rsa
    pki_ca_signing_nickname=CA Signing Cert - %(pki_instance_name)s
    pki_ca_signing_signing_algorithm=SHA256withRSA
    
    pki_ocsp_signing_token=NHSM-CONN-XC
    pki_ocsp_signing_key_algorithm=SHA256withRSA
    pki_ocsp_signing_key_size=3072
    pki_ocsp_signing_key_type=rsa
    pki_ocsp_signing_signing_algorithm=SHA256withRSA
    
    pki_ds_hostname=rhds11.example.com
    pki_ds_base_dn=dc=RSA-RootCA
    pki_ds_database=CC-RSA-RootCA-LDAP
    pki_share_db=False
  2. pkispawn ツールを実行して、RHCS CA インスタンスをインストールします。

    pkispawn -s CA -f rootca_inst.cfg --debug

検証手順

  1. インストールされている CA のステータスを表示します。

    pki-server status rhcs10-RSA-RootCA
  2. 次のコマンドを実行して、CA の正常性を確認します。証明書が表示されるはずです。

    pki -p 8443 -h rhcs10.example.com ca-cert-find
    注記

    次のように、pki コマンドを使用して RootCA に初めて接続すると、信頼されていない CA 署名証明書の発行者として警告が表示されます。

    WARNING: UNTRUSTED ISSUER encountered on 'CN=rhcs10.example.com,OU=rhcs10-RSA-RootCA,O=Example-rhcs10-RSA-RootCA' indicates a non-trusted CA cert 'CN=CA Signing Certificate,OU=rhcs10-RSA-RootCA,O=Example-rhcs10-RSA-RootCA'
    Trust this certificate (y/N)?

    サブジェクト DN が想定したホスト名と一致する場合は、y を選択して CA 署名証明書を信頼します。警告は再度表示されなくなります。

7.3.2. pkispawn ツーステップ方式を使用してルート CA をインストールする

ツーステップ方式を使用して RootCA インスタンスを設定するには、設定ファイルを作成し、pkispawn ツールを 2 回実行する必要があります。

この例では、RootCA は rhcs10.example.com にインストールされます。

前提条件

  • root ユーザーとして rhcs10.example.com にログインしている。
  • セクション 6.3.2 「DS インスタンスのセットアップ」 [NEEDS UPDATING] の手順を実行した。この例では、CC-RSA-RootCA-LDAP は RootCA の内部データベースです。
7.3.2.1. RootCA インストールのステップ 1
  1. RHCS インスタンス (rhcs10.example.com) をホストするマシンで、選択した場所 (例: /root/pki_rsa) に CA インストールファイルを作成します。

    cd /root/pki_rsa
    
    vi rootca_inst.cfg
    [DEFAULT]
    pki_instance_name=rhcs10-RSA-RootCA
    pki_https_port=8443
    pki_http_port=8080
    
    # Crypto Token pki_hsm_enable=True pki_hsm_libfile=/opt/nfast/toolkits/pkcs11/libcknfast.so pki_hsm_modulename=nfast pki_token_name=NHSM-CONN-XC pki_token_password=<YourHSMpassword> pki_audit_signing_token=NHSM-CONN-XC pki_audit_signing_key_algorithm=SHA256withRSA pki_audit_signing_key_size=2048 pki_audit_signing_key_type=rsa pki_audit_signing_signing_algorithm=SHA256withRSA pki_subsystem_token=NHSM-CONN-XC pki_subsystem_key_algorithm=SHA256withRSA pki_subsystem_signing_algorithm=SHA256withRSA pki_subsystem_key_size=2048 pki_subsystem_key_type=rsa pki_sslserver_token=NHSM-CONN-XC pki_sslserver_key_algorithm=SHA256withRSA pki_sslserver_signing_algorithm=SHA256withRSA pki_sslserver_key_size=2048 pki_sslserver_key_type=rsa # Bootstrap Admin
    pki_admin_password=SECret.123
    pki_admin_key_type=rsa
    pki_admin_key_size=2048
    pki_admin_key_algorithm=SHA256withRSA
    
    # Bootstrap Admin client dir # by default, if pki_client_dir, pki_client_database_dir,
    # and pki_client_admin_cert_p12 are not specified, items will be placed # under some default directories in /root/.dogtag
    pki_client_dir=/opt/pki_rsa/rhcs10-RSA-RootCA
    pki_client_admin_cert_p12=/opt/pki_rsa/rhcs10-RSA-RootCA/ca_admin_cert.p12
    pki_client_database_dir=/opt/pki_rsa/rhcs10-RSA-RootCA/certs_db
    pki_client_database_password=SECret.123
    pki_client_pkcs12_password=SECret.123
    
    # Internal LDAP pki_ds_bind_dn=cn=Directory Manager pki_ds_ldap_port=389 pki_ds_ldaps_port=636 pki_ds_password=SECret.123 pki_ds_remove_data=True pki_ds_secure_connection=True pki_ds_secure_connection_ca_pem_file=/opt/pki_rsa/temp-dirsrv-rootca-cert.pem pki_ds_secure_connection_ca_nickname=DS temp CA certificate # Security Domain
    pki_security_domain_hostname=rhcs10.example.com
    pki_security_domain_name=Example-rhcs10-RSA-RootCA
    pki_security_domain_password=SECret.123
    
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    
    [CA]
    pki_import_admin_cert=False
    pki_admin_nickname=PKI Bootstrap Administrator for RSA-RootCA
    pki_admin_name=caadmin
    pki_admin_uid=caadmin
    pki_admin_email=caadmin@example.com
    
    pki_ca_signing_token=NHSM-CONN-XC
    pki_ca_signing_key_algorithm=SHA256withRSA
    pki_ca_signing_key_size=3072
    pki_ca_signing_key_type=rsa
    pki_ca_signing_nickname=CA Signing Cert - %(pki_instance_name)s
    pki_ca_signing_signing_algorithm=SHA256withRSA
    
    pki_ocsp_signing_token=NHSM-CONN-XC
    pki_ocsp_signing_key_algorithm=SHA256withRSA
    pki_ocsp_signing_key_size=3072
    pki_ocsp_signing_key_type=rsa
    pki_ocsp_signing_signing_algorithm=SHA256withRSA
    
    pki_ds_hostname=rhds11.example.com
    pki_ds_base_dn=dc=RSA-RootCA
    pki_ds_database=CC-RSA-RootCA-LDAP
    pki_share_db=False
    注記

    明示的に指定されていない限り、システム証明書のニックネームは、pki_instance_name に指定された値を使用して自動的に名前が付けられます。共有 HSM での証明書のニックネームの競合を回避するには、インスタンスを作成するたびに一意のインスタンス名を使用します。ただし、ツーステップインストールでは、両方のファイルの pki_instance_name 値が一致する必要があります。以下の値は例として使用しています。

  2. pkispawn ツールを初回実行し、RHCS CA インスタンスをインストールします。

    pkispawn -s CA -f rootca_inst.cfg --skip-configuration --debug
7.3.2.2. RootCA 設定の 2 番目のステップ

「インストール方法 (シングルステップまたはツーステップ)」 で説明したとおり、ツーステップインストール方式の 2 番目のステップには 2 つのサブステップがあります。

カスタマイズ

このサブステップでは、システム証明書の証明書プロファイルなど、特定の項目をカスタマイズできます。

  • CA 署名証明書のサブジェクトキー識別子拡張メッセージダイジェストアルゴリズムを設定します。

    1. この CA の署名証明書の登録プロファイルを開きます。

      # vi /var/lib/pki/rhcs10-RSA-RootCA/ca/conf/caCert.profile
    2. 次のパラメーターを追加します。

      7.default.params.messageDigest=SHA-256
    3. ファイルを保存します。
  • 同様に、この CA が今後発行する CA 署名証明書に対しても同じ操作を行います。

    1. CA 署名証明書の登録プロファイルを開きます。

      # vi /var/lib/pki/rhcs10-RSA-RootCA/ca/profiles/ca/caInstallCACert.cfg
      
      # vi /var/lib/pki/rhcs10-RSA-RootCA/ca/profiles/ca/caCMCcaCert.cfg
    2. 次のパラメーターを追加します。

      policyset.caCertSet.8.default.params.messageDigest=SHA-256
    3. ファイルを保存します。
  • その他のカスタマイズの変更もここで実行できます。たとえば、このサブシステムの監査署名証明書の有効期間を延長する場合は、以下を実行します。

    1. 対応する設定ファイルを開きます。

      # vi /var/lib/pki/rhcs10-RSA-RootCA/ca/profiles/ca/caInternalAuthAuditSigningCert.cfg
    2. 次の範囲パラメーターを目的の値に変更します。

      policyset.auditSigningCertSet.2.constraint.params.range=720
      policyset.auditSigningCertSet.2.default.params.range=720
    3. ファイルを保存します。次のセクションに示す pkispawn のステップ 2 を実行すると、このサブシステムの監査署名証明書の有効性が、変更した値と一致するはずです。

pkispawn の 2 回目の実行 (設定)

この場合の pkispawn のステップ 2 では、同じファイルに対して別の方法でツールを実行し、RHCS CA インスタンスを設定します。

  • CA を設定するには、pkispawn ツールを実行します。

    # pkispawn -s CA -f rootca_inst.cfg --skip-installation --debug

検証手順

  1. インストールされている CA のステータスを表示します。

    # pki-server status rhcs10-RSA-RootCA

    Unsecure EE、Secure EE、Agent、Admin、および pkiconsole の URL を書き留めます。

  2. 次のコマンドを実行して、CA の正常性を確認します。証明書が表示されるはずです。

    # pki -p 8443 -h rhcs10.example.com ca-cert-find
    注記

    次のように、pki コマンドを使用して RootCA に初めて接続すると、信頼されていない CA 署名証明書の発行者として警告が表示されます。

    WARNING: UNTRUSTED ISSUER encountered on 'CN=rhcs10.example.com,OU=rhcs10-RSA-RootCA,O=Example-rhcs10-RSA-RootCA' indicates a non-trusted CA cert 'CN=CA Signing Certificate,OU=rhcs10-RSA-RootCA,O=Example-rhcs10-RSA-RootCA'
    Trust this certificate (y/N)?

    サブジェクト DN が想定したホスト名と一致する場合は、y を選択して CA 署名証明書を信頼します。警告は再度表示されなくなります。

7.4. PKI サブシステムのインストール

Red Hat Certificate System は、個別にインストールできるさまざまなサブシステムを提供します。たとえば、複数のサブシステムインスタンスを 1 つのサーバーにインストールすることも、異なるホストで個別に実行することもできます。これにより、インストールを環境に合わせて適応させることができ、より高い可用性、スケーラビリティー、フェイルオーバーのサポートを提供することができます。

インストールのガイダンスについては、以下の必要な RHCS サブシステムガイドを参照してください。

pkispawn についての理解が十分ではない場合は、各サブシステムのインストールで提示される選択肢をよりよく理解するために pkispawn ユーティリティーを使用して RHCS をインストールする」 を参照してください。

重要

完了したら 「インストール後のタスク」 を参照し、インストールするサブシステムに関連するセクションの内容に従ってください。

7.4.1. CA サブシステムのインストール

7.4.1.1. CA のインストール

自己署名 CA 署名証明書を使用して CA サブシステムインスタンスをインストールするには、次のプロセスに従います。これは "ルート CA" とも呼ばれます。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.1.1.1. CA サブシステムのインストール

CA サブシステムをデプロイするには、ca.cfg などのデプロイメント設定を準備します。デフォルトで、サブシステムは pki-tomcat と呼ばれる Tomcat インスタンスにデプロイされます。

サンプルのデプロイメント設定は、/usr/share/pki/server/examples/installation/ca.cfg にあります。

インストールを開始するには、次のコマンドを実行します。

$ pkispawn -f ca.cfg -s CA
7.4.1.1.2. CA システム証明書

インストール後、CA システム証明書とキーはサーバーの NSS データベース (/var/lib/pki/pki-tomcat/conf/alias) に保存されます。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ca_signing                                                   CTu,Cu,Cu
ca_ocsp_signing                                              u,u,u
subsystem                                                    u,u,u
ca_audit_signing                                             u,u,Pu
sslserver                                                    u,u,u

必要に応じて、次のコマンドを使用して証明書を PEM ファイルにエクスポートできます。

$ pki-server cert-export <cert ID> --cert-file <filename>

CA の有効な証明書 ID は次のとおりです。

  • ca_signing
  • ca_ocsp_signing
  • ca_audit_signing
  • subsystem
  • sslserver

pki-server cert-export コマンドはニックネームではなく証明書 ID を使用することに注意してください。わかりやすくするため、この例のニックネームは証明書 ID と同じになるように設定されています。

7.4.1.1.3. 管理者証明書

インストールした後に、管理者証明書とキーは ~/.dogtag/pki-tomcat/ca_admin_cert.p12 に保存されます。

PKCS #12 パスワードは、pki_client_pkcs12_password パラメーターで指定されます。

管理者証明書を使用するには、次の手順を実行します。

  1. サーバーの NSS データベースから CA 署名証明書をエクスポートします。

    $ pki-server cert-export ca_signing --cert-file ca_signing.crt
  2. CA 署名証明書をクライアント NSS データベースにインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  3. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki pkcs12-import \
        --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  4. 次のコマンドを実行して、管理者証明書を使用して CA サブシステムにアクセスできることを確認します。

    $ pki -n caadmin ca-user-show caadmin
    --------------
    User "caadmin"
    --------------
      User ID: caadmin
      Full name: caadmin
      Email: caadmin@example.com
      Type: adminType
      State: 1
7.4.1.2. CA クローンのインストール

既存の CA サブシステムのクローンとして CA サブシステムをインストールするには、次のプロセスを実行します。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

その他の役に立つヒント:

  • マスター上のファイアウォールが、クローンから LDAP への外部アクセスを許可していることを確認します。
  • クローン上のファイアウォールが、マスターから LDAP への外部アクセスを許可していることを確認します。
  • LDAP に dc=pki,dc=example,dc=com エントリーがない場合、LDAP サーバーに接続できない場合と同じエラーが発生します。
7.4.1.2.1. 既存 CA システム証明書のエクスポート

既存システムで、次のコマンドを使用して CA システム証明書をエクスポートします。

$ pki-server ca-clone-prepare \
    --pkcs12-file ca-certs.p12 \
    --pkcs12-password Secret.123

このコマンドは、次の証明書 (証明書チェーンを含む) とそのキーを PKCS #12 ファイルにエクスポートします。

  • CA 署名証明書
  • OCSP 署名証明書
  • 監査署名証明書
  • サブシステム証明書

既存の SSL サーバー証明書はエクスポートされないことに注意してください。

必要に応じて、次のコマンドを使用して、トラストアンカーなどのサードパーティーの証明書を同じ PKCS #12 ファイルに追加できます。

$ pki -d /var/lib/pki/pki-tomcat/conf/alias -f /var/lib/pki/pki-tomcat/conf/password.conf \
    pkcs12-cert-import <nickname> \
    --pkcs12-file ca-certs.p12 \
    --pkcs12-password Secret.123 \
    --append

オプションとして、次のコマンドを使用して、上記の証明書の CSR もエクスポートできます。

$ pki-server cert-export ca_signing \
    --csr-file ca_signing.csr

$ pki-server cert-export ca_ocsp_signing \
    --csr-file ca_ocsp_signing.csr

$ pki-server cert-export ca_audit_signing \
    --csr-file ca_audit_signing.csr

$ pki-server cert-export subsystem \
    --csr-file subsystem.csr
7.4.1.2.2. SELinux 権限

ca-certs.p12 をクローンマシンにコピーした後、適切な SELinux ルールが追加されていることを確認します。

$ semanage fcontext -a -t pki_tomcat_cert_t ca-certs.p12
$ restorecon -R -v ca-certs.p12

ca-certs.p12 ファイルが pkiuser によって所有されていることを確認します。

$ chown pkiuser:pkiuser ca-certs.p12
7.4.1.2.3. CA サブシステムのインストール

CA サブシステムのクローンをデプロイするには、ca-clone.cfg などのデプロイメント設定を準備します。デフォルトで、サブシステムは pki-tomcat と呼ばれる Tomcat インスタンスにデプロイされます。

デプロイメント設定のサンプルは、/usr/share/pki/server/examples/installation/ca.cfg にあります。

これは、次のことを前提としています。

  • プライマリー CA サブシステムは https://primary.example.com:8443 で実行されている。
  • CA 署名証明書が ca_signing.crt にエクスポートされている。
  • 管理者証明書とキーが ca_admin_cert.p12 にエクスポートされている。
  • PKCS #12 パスワードが、pki_client_pkcs12_password パラメーターで指定されている。

詳細は、CA のインストール を参照してください。

CSR が利用可能な場合は、次のパラメーターを使用して指定できます。

pki_ca_signing_csr_path=ca_signing.csr
pki_ocsp_signing_csr_path=ca_ocsp_signing.csr
pki_audit_signing_csr_path=ca_audit_signing.csr
pki_subsystem_csr_path=subsystem.csr

インストールを開始するには、次のコマンドを実行します。

$ pkispawn -f ca-clone.cfg -s CA
7.4.1.2.4. CA システム証明書

インストール後、既存の CA システム証明書 (証明書チェーンを含む) とそのキーがサーバーの NSS データベース (つまり /var/lib/pki/pki-tomcat/conf/alias) に保存され、新しいインスタンス用に新しい SSL サーバー証明書が作成されます。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ca_signing                                                   CTu,Cu,Cu
ca_ocsp_signing                                              u,u,u
subsystem                                                    u,u,u
ca_audit_signing                                             u,u,Pu
sslserver                                                    u,u,u

必要に応じて、次のコマンドを使用して証明書を PEM ファイルにエクスポートできます。

$ pki-server cert-export <cert ID> --cert-file <filename>

CA の有効な証明書 ID は次のとおりです。

  • ca_signing
  • ca_ocsp_signing
  • ca_audit_signing
  • subsystem
  • sslserver

pki-server cert-export コマンドはニックネームではなく証明書 ID を使用することに注意してください。わかりやすくするため、この例のニックネームは証明書 ID と同じになるように設定されています。

7.4.1.2.5. 管理者証明書

管理者証明書を使用するには、次の手順を実行します。

  1. CA 署名証明書をクライアント NSS データベースにインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 管理者証明書を使用して CA サブシステムクローンにアクセスできることを確認するには、次のコマンドを実行します。

    $ pki -n caadmin ca-user-show caadmin
    --------------
    User "caadmin"
    --------------
      User ID: caadmin
      Full name: caadmin
      Email: caadmin@example.com
      Type: adminType
      State: 1
7.4.1.3. HSM を使用した CA クローンのインストール

システム証明書とそのキーが HSM に保存されている既存 CA サブシステムのクローンとして CA サブシステムをインストールするには、このプロセスを実行します。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.1.3.1. 既存システム証明書のエクスポート

システム証明書とキーはすでに HSM 上にあるため、クローンを作成するためにそれらを PKCS #12 ファイルにエクスポートする必要はありません。

ただし、システム証明書の CSR は HSM ではなく CS.cfg に保存されます。

オプションで、次のコマンドを使用してエクスポートできます。

$ pki-server cert-export ca_signing \
    --csr-file ca_signing.csr

$ pki-server cert-export ca_ocsp_signing \
    --csr-file ca_ocsp_signing.csr

$ pki-server cert-export ca_audit_signing \
    --csr-file ca_audit_signing.csr

$ pki-server cert-export subsystem \
    --csr-file subsystem.csr
7.4.1.3.2. CA サブシステムのインストール

注記: CA 署名証明書が ca_signing.crt にエクスポートされていることを前提としています。

  1. デプロイメント設定を含むファイル (例: ca.cfg) を準備します。

    [DEFAULT]
    pki_instance_name=pki-tomcat
    pki_https_port=8443
    pki_http_port=8080
    
    pki_server_database_password=Secret.123
    
    pki_hsm_enable=True
    pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so
    pki_hsm_modulename=softhsm
    pki_token_name=HSM
    pki_token_password=Secret.HSM
    
    pki_cert_chain_path=ca_signing.crt
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    [CA]
    pki_admin_email=caadmin@example.com
    pki_admin_name=caadmin
    pki_admin_nickname=caadmin
    pki_admin_password=Secret.123
    pki_admin_uid=caadmin
    
    pki_client_pkcs12_password=Secret.123
    
    pki_ds_url=ldap://localhost.localdomain:389
    pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com
    pki_ds_database=ca
    pki_ds_password=Secret.123
    
    pki_security_domain_hostname=pki.example.com
    pki_security_domain_https_port=8443
    pki_security_domain_user=caadmin
    pki_security_domain_password=Secret.123
    
    pki_ca_signing_nickname=ca_signing
    pki_ocsp_signing_nickname=ca_ocsp_signing
    pki_audit_signing_nickname=ca_audit_signing
    pki_sslserver_nickname=sslserver/replica.example.com
    pki_subsystem_nickname=subsystem
    
    pki_ca_signing_token=HSM
    pki_ocsp_signing_token=HSM
    pki_audit_signing_token=HSM
    pki_sslserver_token=HSM
    pki_subsystem_token=HSM
    
    pki_clone=True
    pki_clone_replicate_schema=True
    pki_clone_uri=https://pki.example.com:8443
  2. CSR が利用可能な場合は、次のパラメーターを使用して指定できます。

    pki_ca_signing_csr_path=ca_signing.csr
    pki_ocsp_signing_csr_path=ca_ocsp_signing.csr
    pki_audit_signing_csr_path=ca_audit_signing.csr
    pki_subsystem_csr_path=subsystem.csr
  3. 以下のコマンドを実行します。

    $ pkispawn -f ca.cfg -s CA

Tomcat インスタンス (デフォルトは pki-tomcat) に CA サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/ca/alias
7.4.1.3.3. システム証明書の確認
  1. 内部トークンに次の証明書が含まれていることを確認します。

    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
    
    Certificate Nickname                                         Trust Attributes
                                                                 SSL,S/MIME,JAR/XPI
    
    ca_signing                                                   CT,C,C
    sslserver/replica.example.com                                ,,
    ca_audit_signing                                             ,,P
  2. HSM に次の証明書が含まれていることを確認します。

    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd
    
    Certificate Nickname                                         Trust Attributes
                                                                 SSL,S/MIME,JAR/XPI
    
    HSM:ca_signing                                               CTu,Cu,Cu
    HSM:ca_ocsp_signing                                          u,u,u
    HSM:subsystem                                                u,u,u
    HSM:ca_audit_signing                                         u,u,Pu
    HSM:sslserver/replica.example.com                            u,u,u
7.4.1.3.4. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. マスターの管理者キーと証明書をインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して CA クローンにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin ca-user-show caadmin
    --------------
    User "caadmin"
    --------------
      User ID: caadmin
      Full name: caadmin
      Email: caadmin@example.com
      Type: adminType
      State: 1
7.4.1.4. LDAPS 接続を使用した CA クローンのインストール

セキュアなデータベース接続を備えた既存 CA サブシステムのクローンとして CA サブシステムをインストールするには、次のプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.1.4.1. DS 設定

クローンシステムで上記の前提条件を完了した後、DS との SSL 接続を有効にする の手順に従って、CA クローンの DS が、CA によって発行された実際のサーバー証明書を使用して SSL が有効になった状態で実行されるようにします。

役に立つヒント:

  • マスター上のファイアウォールが、クローンから LDAP への外部アクセスを許可していることを確認します。
  • クローン上のファイアウォールが、マスターから LDAP への外部アクセスを許可していることを確認します。
  • LDAP に dc=pki,dc=example,dc=com エントリーがない場合、LDAP サーバーに接続できない場合と同じエラーが発生します。
7.4.1.4.2. 既存 CA システム証明書のエクスポート

既存のシステムで、次のコマンドを使用して CA システム証明書をエクスポートし、クローンシステムにコピーします。

$ pki-server ca-clone-prepare --pkcs12-file ca-certs.p12 --pkcs12-password Secret.123
$ pki-server cert-export ca_signing --cert-file ca_signing.crt

次の証明書 (証明書チェーンを含む) とそのキーが、PKCS #12 ファイルにエクスポートされます。

  • CA 署名証明書
  • OCSP 署名証明書
  • 監査署名証明書
  • サブシステム証明書

既存の SSL サーバー証明書はエクスポートされないことに注意してください。

必要に応じて、次のコマンドを使用して、トラストアンカーなどのサードパーティーの証明書を同じ PKCS #12 ファイルに追加できます。

$ pki -d /var/lib/pki/pki-tomcat/conf/alias -f /var/lib/pki/pki-tomcat/conf/password.conf \
    pkcs12-cert-import <nickname> \
    --pkcs12-file ca-certs.p12 \
    --pkcs12-password Secret.123 \
    --append
7.4.1.4.3. SELinux 権限

ca-certs.p12 をクローンマシンにコピーした後、適切な SELinux ルールが追加されていることを確認します。

$ semanage fcontext -a -t pki_tomcat_cert_t ca-certs.p12
$ restorecon -R -v ca-certs.p12

ca-certs.p12 ファイルが pkiuser によって所有されていることを確認します。

$ chown pkiuser:pkiuser ca-certs.p12
7.4.1.4.4. CA サブシステムのインストール

CA サブシステムのクローンをデプロイするには、ca-secure-ds-secondary.cfg などのデプロイメント設定を準備します。デフォルトで、サブシステムは pki-tomcat と呼ばれる Tomcat インスタンスにデプロイされます。

注記

以下で参照されるサンプル pkispawn 設定ファイルでは、ds_signing.crt という名前のファイルに DS サーバー証明書の署名証明書があると想定されています。既存の CA が署名証明書として使用されているため、CA の署名証明書を ds_signing.crt にコピーします。

$ cp ca_signing.crt ds_signing.crt

サンプルのデプロイメント設定は、/usr/share/pki/server/examples/installation/ca-secure-ds-secondary.cfg にあります。

これは、以下を前提としています。

  • 既存の CA および DS インスタンスは primary.example.com で実行されている。
  • 新しい CA および DS クローンが secondary.example.com にインストールされた。
  • CA 署名証明書が ca_signing.crt にエクスポートされた。
  • 管理者証明書とキーが ca_admin_cert.p12 にエクスポートされた。
  • PKCS #12 パスワードは、pki_client_pkcs12_password パラメーターで指定されます。

インストールを開始するには、次のコマンドを実行します。

$ pkispawn -f ca-secure-ds-secondary.cfg -s CA
7.4.1.4.5. CA システム証明書

インストール後、既存の CA システム証明書 (証明書チェーンを含む) とそのキーがサーバーの NSS データベース (つまり /var/lib/pki/pki-tomcat/conf/alias) に保存され、新しいインスタンス用に新しい SSL サーバー証明書が作成されます。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

subsystem                                                    u,u,u
ca_signing                                                   CTu,Cu,Cu
ca_ocsp_signing                                              u,u,u
ca_audit_signing                                             u,u,Pu
ds_signing                                                   CT,C,C
sslserver                                                    u,u,u

必要に応じて、次のコマンドを使用して、クローン CA システム証明書を PEM ファイルにエクスポートできます。

$ pki-server cert-export <cert ID> --cert-file <filename>

CA の有効な証明書 ID は次のとおりです。

  • ca_signing
  • ca_ocsp_signing
  • ca_audit_signing
  • subsystem
  • sslserver

pki-server cert-export コマンドはニックネームではなく証明書 ID を使用することに注意してください。わかりやすくするため、この例のニックネームは証明書 ID と同じになるように設定されています。

7.4.1.4.6. 管理者証明書

管理者証明書を使用するには、次の手順を実行します。

  1. CA 署名証明書をクライアント NSS データベースにインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して CA サブシステムクローンにアクセスできることを確認します。

    $ pki -n caadmin ca-user-show caadmin
    --------------
    User "caadmin"
    --------------
      User ID: caadmin
      Full name: caadmin
      Email: caadmin@example.com
      Type: adminType
      State: 1
7.4.1.5. ブートストラップ DS 証明書を使用した LDAPS による CA クローンのインストール

ブートストラップ SSL サーバー証明書を使用して実行される既存の CA サブシステムのクローンとして CA サブシステムをインストールするには、次のプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.1.5.1. DS 設定
  1. クローンシステムで上記の前提条件を完了したら、既存システムに移動して DS 署名証明書を ds_signing.p12 にエクスポートし、次のコマンドを使用して証明書をクローンシステムにコピーします。

    $ pki -d /etc/dirsrv/slapd-localhost \
    -C /etc/dirsrv/slapd-localhost/pwdfile.txt \
    pkcs12-export --pkcs12-file ds_signing.p12 \
    --pkcs12-password Secret.123 Self-Signed-CA
  2. 次のコマンドを使用して、ds_signing.p12 をクローン DS インスタンスにインポートします。

    $ pki -d /etc/dirsrv/slapd-localhost \
    -C /etc/dirsrv/slapd-localhost/pwdfile.txt \
    pkcs12-import --pkcs12-file ds_signing.p12 \
    --pkcs12-password Secret.123
  3. DS クローン上で、DS サーバー証明書の作成 の説明に従って、ブートストラップ DS サーバー証明書を作成します。

    証明書のサブジェクト DN はクローンのホスト名 (--subject "CN=secondary.example.com") と一致する必要があることに注意してください。

  4. SSL 接続の有効化 の説明に従って SSL 接続を有効にします。
  5. DS の再起動が正常に完了したら、次のように DS 署名証明書を 'ds_signing.crt' にエクスポートします。

    $ certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt

役に立つヒント:

  • DS ファイアウォールが PKI サーバーおよびその他の DS インスタンスからのアクセスを許可していることを確認します。
  • LDAP に dc=pki,dc=example,dc=com エントリーがない場合、LDAP サーバーに接続できない場合と同じエラーが発生します。
7.4.1.5.2. 既存 CA システム証明書のエクスポート
  1. 既存のシステムで、次のコマンドを使用して CA システム証明書をエクスポートし、クローンシステムにコピーします。

    $ pki-server ca-clone-prepare --pkcs12-file ca-certs.p12 --pkcs12-password Secret.123
    $ pki-server cert-export ca_signing --cert-file ca_signing.crt

    次の証明書 (証明書チェーンを含む) とそのキーが、PKCS #12 ファイルにエクスポートされます。

    • CA 署名証明書
    • OCSP 署名証明書
    • 監査署名証明書
    • サブシステム証明書

    既存の SSL サーバー証明書はエクスポートされないことに注意してください。

  2. 必要に応じて、次のコマンドを使用して、トラストアンカーなどのサードパーティーの証明書を同じ PKCS #12 ファイルに追加できます。

    $ pki -d /var/lib/pki/pki-tomcat/conf/alias -f /var/lib/pki/pki-tomcat/conf/password.conf \
        pkcs12-cert-import <nickname> \
        --pkcs12-file ca-certs.p12 \
        --pkcs12-password Secret.123 \
        --append
7.4.1.5.3. SELinux 権限
  1. ca-certs.p12 をクローンマシンにコピーした後、適切な SELinux ルールが追加されていることを確認します。

    $ semanage fcontext -a -t pki_tomcat_cert_t ca-certs.p12
    $ restorecon -R -v ca-certs.p12
  2. ca-certs.p12 ファイルが pkiuser によって所有されていることを確認します。

    $ chown pkiuser:pkiuser ca-certs.p12
7.4.1.5.4. CA サブシステムのインストール

CA サブシステムのクローンをデプロイするには、ca-secure-ds-secondary.cfg などのデプロイメント設定を準備します。デフォルトで、サブシステムは pki-tomcat と呼ばれる Tomcat インスタンスにデプロイされます。

サンプルのデプロイメント設定は、/usr/share/pki/server/examples/installation/ca-secure-ds-secondary.cfg にあります。

これは、以下を前提としています。

  • 既存の CA および DS インスタンスは primary.example.com で実行されている。
  • 新しい CA および DS クローンが secondary.example.com にインストールされた。
  • CA 署名証明書が ca_signing.crt にエクスポートされた。
  • 管理者証明書とキーが ca_admin_cert.p12 にエクスポートされた。
  • PKCS #12 パスワードは、pki_client_pkcs12_password パラメーターで指定されます。

インストールを開始するには、次のコマンドを実行します。

$ pkispawn -f ca-secure-ds-secondary.cfg -s CA
7.4.1.5.5. CA システム証明書

インストール後、既存の CA システム証明書 (証明書チェーンを含む) とそのキーがサーバーの NSS データベース (/var/lib/pki/pki-tomcat/conf/alias) に保存され、新しいインスタンス用に新しい SSL サーバー証明書が作成されます。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

subsystem                                                    u,u,u
ca_signing                                                   CTu,Cu,Cu
ca_ocsp_signing                                              u,u,u
ca_audit_signing                                             u,u,Pu
ds_signing                                                   CT,C,C
sslserver                                                    u,u,u

必要に応じて、次のコマンドを使用して、クローン CA システム証明書を PEM ファイルにエクスポートできます。

$ pki-server cert-export <cert ID> --cert-file <filename>

CA の有効な証明書 ID は次のとおりです。

  • ca_signing
  • ca_ocsp_signing
  • ca_audit_signing
  • subsystem
  • sslserver

pki-server cert-export コマンドはニックネームではなく証明書 ID を使用することに注意してください。わかりやすくするため、この例のニックネームは証明書 ID と同じになるように設定されています。

7.4.1.5.6. 管理者証明書

管理者証明書を使用するには、次の手順を実行します。

  1. CA 署名証明書をクライアント NSS データベースにインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して CA サブシステムクローンにアクセスできることを確認します。

    $ pki -n caadmin ca-user-show caadmin
    --------------
    User "caadmin"
    --------------
      User ID: caadmin
      Full name: caadmin
      Email: caadmin@example.com
      Type: adminType
      State: 1
7.4.1.6. カスタム CA 署名鍵を使用した CA のインストール

カスタム CA 署名鍵、CSR、証明書を使用して CA サブシステムをインストールするには、次のプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.1.6.1. CA サブシステムのインストールを開始する
  1. ステップ 1 のデプロイメント設定が含まれるファイル (例: ca-step1.cfg) を準備します。

    [DEFAULT]
    pki_instance_name=pki-tomcat
    pki_https_port=8443
    pki_http_port=8080
    pki_server_database_password=Secret.123
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    [CA]
    pki_admin_email=caadmin@example.com
    pki_admin_name=caadmin
    pki_admin_nickname=caadmin
    pki_admin_password=Secret.123
    pki_admin_uid=caadmin
    
    pki_client_pkcs12_password=Secret.123
    
    pki_ds_url=ldap://localhost.localdomain:389
    pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com
    pki_ds_database=ca
    pki_ds_password=Secret.123
    
    pki_security_domain_name=EXAMPLE
    
    pki_ca_signing_nickname=ca_signing
    pki_ocsp_signing_nickname=ca_ocsp_signing
    pki_audit_signing_nickname=ca_audit_signing
    pki_sslserver_nickname=sslserver
    pki_subsystem_nickname=subsystem
    
    pki_external=True
    pki_external_step_two=False
  2. 以下のコマンドを実行します。

    $ pkispawn -f ca-step1.cfg -s CA

Tomcat インスタンス (デフォルトは pki-tomcat) に CA サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/ca/alias

CSR パスパラメーターが指定されていないため、デフォルトでは CA 署名鍵は生成されません。

7.4.1.6.2. CA 署名鍵、CSR、証明書の生成

server NSS データベースにカスタム CA 署名鍵を生成し、CSR を生成して、ファイル (例: ca_signing.csr) に保存します。

CSR を使用して CA 署名証明書を発行します。

  • ルート CA をインストールする場合は、自己署名 CA 署名証明書を生成します。
  • 下位 CA をインストールする場合は、CSR を外部 CA に送信して CA 署名証明書を発行します。

CA 署名証明書を ca_signing.crt などのファイルに保存します。CA 署名証明書は、単一の証明書または PEM 形式の PKCS #7 証明書チェーンとして指定できます。

CA 署名証明書が外部 CA によって発行されている場合は、外部 CA 証明書チェーンを external.crt などのファイルに保存します。証明書チェーンは、単一の証明書または PEM 形式の PKCS #7 証明書チェーンとして指定できます。証明書チェーンには、ルート CA から CA 署名証明書を発行した外部 CA までのすべての CA 証明書が含まれている必要がありますが、CA 署名証明書自体は除外してください。

7.4.1.6.3. CA サブシステムのインストールを完了する

ステップ 2 のデプロイメント設定が含まれる別のファイル (例: ca-step2.cfg) を準備します。このファイルはステップ 1 の ca-step1.cfg からコピーでき、以下の変更を追加できます。

  1. 次のパラメーターを使用してステップ 2 を指定します。

    pki_external_step_two=True
  2. 次のパラメーターを使用してカスタム CA 署名 CSR を指定します。

    pki_ca_signing_csr_path=ca_signing.csr
  3. 次のパラメーターを使用してカスタム CA 署名証明書を指定します。

    pki_ca_signing_cert_path=ca_signing.crt
  4. CA 署名証明書が外部 CA によって発行されている場合は、次のパラメーターを使用して外部 CA 証明書チェーンを指定します。

    pki_cert_chain_nickname=external
    pki_cert_chain_path=external.crt
  5. 以下のコマンドを実行します。

    $ pkispawn -f ca-step2.cfg -s CA
7.4.1.6.4. システム証明書の検証

サーバー NSS データベースに次の証明書が含まれていることを確認します。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

external                                                     CT,C,C
ca_signing                                                   CTu,Cu,Cu
ca_ocsp_signing                                              u,u,u
subsystem                                                    u,u,u
ca_audit_signing                                             u,u,Pu
sslserver                                                    u,u,u
7.4.1.6.5. 管理者証明書の検証
  1. 外部 CA 証明書チェーンをインポートします。

    $ pki -c Secret.123 client-cert-import --ca-cert external.crt
  2. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  3. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  4. 次のコマンドを実行して、管理者証明書を使用して CA サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin ca-user-show caadmin
    --------------
    User "caadmin"
    --------------
      User ID: caadmin
      Full name: caadmin
      Email: caadmin@example.com
      Type: adminType
      State: 1
7.4.1.7. ECC を使用する CA のインストール

ECC 自己署名 CA 署名証明書を使用して CA サブシステムをインストールするには、このプロセスに従います。

サポートされている ECC 曲線:

  • nistp256
  • nistp384
  • nistp521

サポートされている ECC キーアルゴリズム:

  • SHA256withEC
  • SHA384withEC
  • SHA512withEC

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.1.7.1. CA サブシステムのインストール

CA サブシステムをデプロイするには、ca-ecc.cfg などのデプロイメント設定を準備します。デフォルトで、サブシステムは pki-tomcat と呼ばれる Tomcat インスタンスにデプロイされます。

サンプルのデプロイメント設定は、/usr/share/pki/server/examples/installation/ca-ecc.cfg にあります。

インストールを開始するには、次のコマンドを実行します。

$ pkispawn -f ca-ecc.cfg -s CA
7.4.1.7.2. CA システム証明書

インストール後、CA システム証明書とキーはサーバーの NSS データベース (/var/lib/pki/pki-tomcat/conf/alias) に保存されます。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ca_signing                                                   CTu,Cu,Cu
ca_ocsp_signing                                              u,u,u
subsystem                                                    u,u,u
ca_audit_signing                                             u,u,Pu
sslserver                                                    u,u,u

必要に応じて、次のコマンドを使用して証明書を PEM ファイルにエクスポートできます。

$ pki-server cert-export <cert ID> --cert-file <filename>

CA の有効な証明書 ID は次のとおりです。

  • ca_signing
  • ca_ocsp_signing
  • ca_audit_signing
  • subsystem
  • sslserver

pki-server cert-export コマンドはニックネームではなく証明書 ID を使用することに注意してください。わかりやすくするため、この例のニックネームは証明書 ID と同じになるように設定されています。

7.4.1.7.3. 管理者証明書

インストールした後に、管理者証明書とキーは ~/.dogtag/pki-tomcat/ca_admin_cert.p12 に保存されます。PKCS #12 パスワードは、pki_client_pkcs12_password パラメーターで指定されます。

管理者証明書を使用するには、次の手順を実行します。

  1. サーバーの NSS データベースから CA 署名証明書をエクスポートします。

    $ pki-server cert-export ca_signing --cert-file ca_signing.crt
  2. CA 署名証明書をクライアント NSS データベースにインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  3. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki pkcs12-import \
        --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  4. 管理者証明書を使用して CA サブシステムにアクセスできることを確認するには、次のコマンドを実行します。

    $ pki -n caadmin ca-user-show caadmin
    --------------
    User "caadmin"
    --------------
      User ID: caadmin
      Full name: caadmin
      Email: caadmin@example.com
      Type: adminType
      State: 1
7.4.1.8. HSM 内の既存キーを使用した CA のインストール

このプロセスに従って、HSM にキーが保存されている既存 CA からのシステムキー、CSR、証明書を使用して CA サブシステムをインストールします。

既存の CA サブシステムとの競合を避けるため、新しい CA サブシステムは新しい SSL サーバー証明書とサブシステム証明書を使用するため、それらはインストールプロセスには含まれません。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.1.8.1. CA サブシステムの起動
  1. ステップ 1 のデプロイメント設定が含まれるファイル (例: ca-step1.cfg) を準備します。

    [DEFAULT]
    pki_instance_name=pki-tomcat
    pki_https_port=8443
    pki_http_port=8080
    pki_server_database_password=Secret.123
    
    pki_hsm_enable=True
    pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so
    pki_hsm_modulename=softhsm
    pki_token_name=HSM
    pki_token_password=Secret.123
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    [CA]
    pki_admin_email=caadmin@example.com
    pki_admin_name=caadmin
    pki_admin_nickname=caadmin
    pki_admin_password=Secret.123
    pki_admin_uid=caadmin
    
    pki_client_pkcs12_password=Secret.123
    
    pki_ds_url=ldap://localhost.localdomain:389
    pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com
    pki_ds_database=ca
    pki_ds_password=Secret.123
    
    pki_security_domain_name=EXAMPLE
    
    pki_ca_signing_nickname=ca_signing
    pki_ocsp_signing_nickname=ca_ocsp_signing
    pki_audit_signing_nickname=ca_audit_signing
    pki_sslserver_nickname=sslserver/pki.example.com
    pki_subsystem_nickname=subsystem/pki.example.com
    
    pki_external=True
    pki_external_step_two=False
  2. 以下のコマンドを実行します。

    $ pkispawn -f ca-step1.cfg -s CA

Tomcat インスタンス (デフォルトは pki-tomcat) に CA サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/ca/alias

CSR パスパラメーターが指定されていないため、CA システムキーと管理者キーは生成されません。

7.4.1.8.2. 既存のシステム証明書と CSR のエクスポート
  1. 次のコマンドを使用して、既存の CA からシステム証明書をエクスポートします。

    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd -n "HSM:ca_signing" -a > ca_signing.crt
    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd -n "HSM:ca_ocsp_signing" -a > ca_ocsp_signing.crt
    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd -n "HSM:ca_audit_signing" -a > ca_audit_signing.crt
  2. 次のコマンドを使用して、既存の CA から CSR をエクスポートします。

    $ echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_signing.csr
    $ sed -n "/^ca.signing.certreq=/ s/^=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_signing.csr $ echo "-----END CERTIFICATE REQUEST-----" >> ca_signing.csr $ echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_ocsp_signing.csr $ sed -n "/^ca.ocsp_signing.certreq=/ s/[=]=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_ocsp_signing.csr
    $ echo "-----END CERTIFICATE REQUEST-----" >> ca_ocsp_signing.csr
    
    $ echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_audit_signing.csr
    $ sed -n "/^ca.audit_signing.certreq=/ s/[=]*=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_audit_signing.csr
    $ echo "-----END CERTIFICATE REQUEST-----" >> ca_audit_signing.csr
7.4.1.8.3. CA サブシステムのインストールを完了する

ステップ 2 のデプロイメント設定が含まれる別のファイル (例: ca-step2.cfg) を準備します。このファイルはステップ 1 の ca-step1.cfg からコピーでき、以下の変更を追加できます。

  1. 次のパラメーターを使用してステップ 2 を指定します。

    pki_external_step_two=True
  2. 次のパラメーターを使用して既存の証明書を指定します。

    pki_ca_signing_cert_path=ca_signing.crt
    pki_ocsp_signing_cert_path=ca_ocsp_signing.crt
    pki_audit_signing_cert_path=ca_audit_signing.crt
  3. 次のパラメーターを使用して既存の CSR を指定します。

    pki_ca_signing_csr_path=ca_signing.csr
    pki_ocsp_signing_csr_path=ca_ocsp_signing.csr
    pki_audit_signing_csr_path=ca_audit_signing.csr
  4. 以下のコマンドを実行します。

    $ pkispawn -f ca-step2.cfg -s CA
7.4.1.8.4. システム証明書の確認
  1. 内部トークンに次の証明書が含まれていることを確認します。

    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
    
    Certificate Nickname                                         Trust Attributes
                                                                 SSL,S/MIME,JAR/XPI
    
    ca_signing                                                   CT,C,C
    ca_audit_signing                                             ,,P
  2. HSM に次の証明書が含まれていることを確認します。

    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd
    
    Certificate Nickname                                         Trust Attributes
                                                                 SSL,S/MIME,JAR/XPI
    
    HSM:ca_signing                                               CTu,Cu,Cu
    HSM:ca_ocsp_signing                                          u,u,u
    HSM:subsystem/pki.example.com                                u,u,u
    HSM:ca_audit_signing                                         u,u,Pu
    HSM:sslserver/pki.example.com                                u,u,u
7.4.1.8.5. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して CA サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin ca-user-show caadmin
    --------------
    User "caadmin"
    --------------
      User ID: caadmin
      Full name: caadmin
      Email: caadmin@example.com
      Type: adminType
      State: 1
7.4.1.9. 内部トークン内の既存キーを使用した CA のインストール

このプロセスに従って、内部トークンにキーが保存されている既存 CA からのシステムキー、CSR、証明書を使用して CA サブシステムをインストールします。

既存の CA サブシステムとの競合を避けるため、新しい CA サブシステムは新しい SSL サーバー証明書とサブシステム証明書を使用するため、それらはインストールプロセスには含まれません。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.1.9.1. CA サブシステムのインストールを開始する

最初のデプロイメント設定が含まれるファイル (例: ca-existing-certs-step1.cfg) を準備します。

デプロイメント設定のサンプルは、/usr/share/pki/server/examples/installation/ca-existing-certs-step1.cfg にあります。

以下のコマンドを実行します。

$ pkispawn -f ca-existing-certs-step1.cfg -s CA

Tomcat インスタンス (デフォルトは pki-tomcat) に CA サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/ca/alias

CSR パスパラメーターが指定されていないため、CA システムキーと管理者キーは生成されません。

7.4.1.9.2. 既存のシステムキー、CSR、証明書のエクスポート
  1. 次のコマンドを使用して、既存の CA からシステムキーと証明書を PKCS #12 ファイルにエクスポートします。

    $ pki -d /var/lib/pki/pki-tomcat/conf/alias -c Secret.123 pkcs12-export \
      --pkcs12 ca-certs.p12 \
      --password Secret.123
    $ pki pkcs12-cert-del --pkcs12-file ca-certs.p12 --pkcs12-password Secret.123 sslserver
    $ pki pkcs12-cert-del --pkcs12-file ca-certs.p12 --pkcs12-password Secret.123 subsystem
  2. 次のコマンドを使用して、既存の CA から CSR をエクスポートします。

    $ echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_signing.csr
    $ sed -n "/^ca.signing.certreq=/ s/^=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_signing.csr $ echo "-----END CERTIFICATE REQUEST-----" >> ca_signing.csr $ echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_ocsp_signing.csr $ sed -n "/^ca.ocsp_signing.certreq=/ s/[=]=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_ocsp_signing.csr
    $ echo "-----END CERTIFICATE REQUEST-----" >> ca_ocsp_signing.csr
    
    $ echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_audit_signing.csr
    $ sed -n "/^ca.audit_signing.certreq=/ s/[=]*=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_audit_signing.csr
    $ echo "-----END CERTIFICATE REQUEST-----" >> ca_audit_signing.csr
7.4.1.9.3. CA サブシステムのインストールを完了する
  1. 2 つ目のデプロイメント設定が含まれる別のファイル (例: ca-existing-certs-step2.cfg) を準備します。

    このファイルは、最初のファイル (ca-existing-certs-step1.cfg) に次の変更を加えて作成できます。

    pki_external_step_two=True
  2. 次のパラメーターを使用して、PKCS #12 ファイル内の既存のキーと証明書を指定します。

    pki_pkcs12_path=ca-certs.p12
    pki_pkcs12_password=Secret.123
  3. 次のパラメーターを使用して既存の CSR を指定します。

    pki_ca_signing_csr_path=ca_signing.csr
    pki_ocsp_signing_csr_path=ca_ocsp_signing.csr
    pki_audit_signing_csr_path=ca_audit_signing.csr

    デプロイメント設定のサンプルは、/usr/share/pki/server/examples/installation/ca-existing-certs-step2.cfg にあります。

  4. 以下のコマンドを実行します。

    $ pkispawn -f ca-existing-certs-step2.cfg -s CA
7.4.1.9.4. システム証明書の確認

サーバー NSS データベースに次の証明書が含まれていることを確認します。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ca_signing                                                   CTu,Cu,Cu
ca_ocsp_signing                                              u,u,u
subsystem                                                    u,u,u
ca_audit_signing                                             u,u,Pu
sslserver                                                    u,u,u
7.4.1.9.5. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して CA サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin ca-user-show caadmin
    --------------
    User "caadmin"
    --------------
      User ID: caadmin
      Full name: caadmin
      Email: caadmin@example.com
      Type: adminType
      State: 1
7.4.1.10. 外部 CA 署名証明書を使用した CA のインストール

外部 CA とは、インストールされる PKI サブシステムと同じセキュリティードメインに存在しない CA です。

外部 CA 署名証明書を使用して CA サブシステムをインストールするには、次のプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.1.10.1. CA サブシステムのインストールを開始する

最初のデプロイメント設定が含まれるファイル (例: ca-external-cert-step1.cfg) を準備します。

デプロイメント設定のサンプルは、/usr/share/pki/server/examples/installation/ca-external-cert-step1.cfg にあります。

以下のコマンドを実行します。

$ pkispawn -f ca-external-cert-step1.cfg -s CA

Tomcat インスタンス (デフォルトは pki-tomcat) に CA サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/ca/alias

また、サーバー NSS データベースに CA 署名鍵を生成し、指定されたパスに CSR を生成します。

7.4.1.10.2. CA 署名証明書の生成

CSR を使用して CA 署名証明書を発行します。

  • ルート CA をインストールする場合は、自己署名 CA 署名証明書を生成します。
  • 下位 CA をインストールする場合は、CSR を外部 CA に送信して CA 署名証明書を発行します。

CA 署名証明書を ca_signing.crt などのファイルに保存します。CA 署名証明書は、単一の証明書または PEM 形式の PKCS #7 証明書チェーンとして指定できます。

CA 署名証明書が外部 CA によって発行されている場合は、外部 CA 証明書チェーンを root-ca_signing.crt などのファイルに保存します。

証明書チェーンは、単一の証明書または PEM 形式の PKCS #7 証明書チェーンとして指定できます。

証明書チェーンには、ルート CA から CA 署名証明書を発行した外部 CA までのすべての CA 証明書が含まれている必要がありますが、CA 署名証明書自体は除外してください。

7.4.1.10.3. CA サブシステムのインストールを完了する
  1. 2 つ目のデプロイメント設定が含まれる別のファイル (例: ca-external-cert-step2.cfg) を準備します。このファイルは、最初のファイル (ca-external-cert-step1.cfg) に次の変更を加えて作成できます。

    pki_external_step_two=True
  2. 次のパラメーターを使用してカスタム CA 署名証明書を指定します。

    pki_ca_signing_cert_path=ca_signing.crt
  3. CA 署名証明書が外部 CA によって発行されている場合は、次のパラメーターを使用して外部 CA 証明書チェーンを指定します。

    pki_cert_chain_nickname=root-ca_signing
    pki_cert_chain_path=root-ca_signing.crt

    デプロイメント設定のサンプルは、/usr/share/pki/server/examples/installation/ca-external-cert-step2.cfg にあります。

  4. 以下のコマンドを実行します。

    $ pkispawn -f ca-external-cert-step2.cfg -s CA
7.4.1.10.4. システム証明書の確認

サーバー NSS データベースに次の証明書が含まれていることを確認します。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

root-ca_signing                                              CT,C,C
ca_signing                                                   CTu,Cu,Cu
ca_ocsp_signing                                              u,u,u
subsystem                                                    u,u,u
ca_audit_signing                                             u,u,Pu
sslserver                                                    u,u,u
7.4.1.10.5. 管理者証明書の検証
  1. 外部 CA 証明書チェーンをインポートします。

    $ pki -c Secret.123 client-cert-import --ca-cert root-ca_signing.crt
  2. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  3. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  4. 次のコマンドを実行して、管理者証明書を使用して CA サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin ca-user-show caadmin
    --------------
    User "caadmin"
    --------------
      User ID: caadmin
      Full name: caadmin
      Email: caadmin@example.com
      Type: adminType
      State: 1
7.4.1.11. HSM を使用した CA のインストール

システム証明書とそのキーが HSM に保存されている自己署名 CA 署名証明書を使用して CA サブシステムをインストールするには、このプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.1.11.1. CA サブシステムのインストール
  1. デプロイメント設定を含むファイル (例: ca.cfg) を準備します。

    [DEFAULT]
    pki_instance_name=pki-tomcat
    pki_https_port=8443
    pki_http_port=8080
    pki_server_database_password=Secret.123
    
    pki_hsm_enable=True
    pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so
    pki_hsm_modulename=softhsm
    pki_token_name=HSM
    pki_token_password=Secret.HSM
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    [CA]
    pki_admin_email=caadmin@example.com
    pki_admin_name=caadmin
    pki_admin_nickname=caadmin
    pki_admin_password=Secret.123
    pki_admin_uid=caadmin
    
    pki_client_pkcs12_password=Secret.123
    
    pki_ds_url=ldap://localhost.localdomain:389
    pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com
    pki_ds_database=ca
    pki_ds_password=Secret.123
    
    pki_security_domain_name=EXAMPLE
    
    pki_ca_signing_nickname=ca_signing
    pki_ocsp_signing_nickname=ca_ocsp_signing
    pki_audit_signing_nickname=ca_audit_signing
    pki_sslserver_nickname=sslserver/pki.example.com
    pki_subsystem_nickname=subsystem
  2. 以下のコマンドを実行します。

    $ pkispawn -f ca.cfg -s CA

Tomcat インスタンス (デフォルトは pki-tomcat) に CA サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/ca/alias
7.4.1.11.2. システム証明書の検証
  1. 内部トークンに次の証明書が含まれていることを確認します。

    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
    
    Certificate Nickname                                         Trust Attributes
                                                                 SSL,S/MIME,JAR/XPI
    
    ca_signing                                                   CT,C,C
    ca_audit_signing                                             ,,P
  2. HSM に次の証明書が含まれていることを確認します。

    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd
    
    Certificate Nickname                                         Trust Attributes
                                                                 SSL,S/MIME,JAR/XPI
    
    HSM:ca_signing                                               CTu,Cu,Cu
    HSM:ca_ocsp_signing                                          u,u,u
    HSM:subsystem                                                u,u,u
    HSM:ca_audit_signing                                         u,u,Pu
    HSM:sslserver/pki.example.com                                u,u,u
7.4.1.11.3. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して CA サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin ca-user-show caadmin
    --------------
    User "caadmin"
    --------------
      User ID: caadmin
      Full name: caadmin
      Email: caadmin@example.com
      Type: adminType
      State: 1
7.4.1.12. LDAPS 接続を使用した CA のインストール

セキュアなデータベース接続を備えた CA サブシステムをインストールするには、次のプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.1.12.1. DS 設定

DS インスタンスの作成時に DS ブートストラップ証明書を使用することを選択した場合は、上記の前提条件を完了した後、次のようにブートストラップ自己署名証明書を ds_signing.crt にエクスポートします。

$ certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt
7.4.1.12.2. CA サブシステムのインストール

CA サブシステムをデプロイするには、ca-secure-ds.cfg などのデプロイメント設定を準備します。デフォルトで、サブシステムは pki-tomcat と呼ばれる Tomcat インスタンスにデプロイされます。

デプロイメント設定のサンプルは、/usr/share/pki/server/examples/installation/ca-secure-ds.cfg にあります。

インストールを開始するには、次のコマンドを実行します。

$ pkispawn -f ca-secure-ds.cfg -s CA
7.4.1.12.3. CA システム証明書

インストール後、CA システム証明書とそのキーが生成され、サーバー NSS データベース (/var/lib/pki/pki-tomcat/conf/alias) に保存され、DS 署名証明書が同じ NSS データベースにインポートされます。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ds_signing                                                   CT,C,C
ca_signing                                                   CTu,Cu,Cu
ca_ocsp_signing                                              u,u,u
subsystem                                                    u,u,u
ca_audit_signing                                             u,u,Pu
sslserver                                                    u,u,u

必要に応じて、次のコマンドを使用して CA システム証明書を PEM ファイルにエクスポートできます。

$ pki-server cert-export <cert ID> --cert-file <filename>

CA システム証明書の有効な ID は次のとおりです。

  • ca_signing
  • ca_ocsp_signing
  • ca_audit_signing
  • subsystem
  • sslserver

pki-server cert-export コマンドはニックネームではなく証明書 ID を使用することに注意してください。わかりやすくするため、この例のニックネームは証明書 ID と同じになるように設定されています。

7.4.1.12.4. CA データベースの設定

CA データベース設定は、次のコマンドで表示できます。

$ pki-server ca-db-config-show
  Hostname: pki.example.com
  Port: 636
  Secure: true
  Authentication: BasicAuth
  Bind DN: cn=Directory Manager
  Bind Password Prompt: internaldb
  Database: ca
  Base DN: dc=ca,dc=pki,dc=example,dc=com
  Multiple suffix: false
  Maximum connections: 15
  Minimum connections: 3
7.4.1.12.5. 管理者証明書

インストールした後に、管理者証明書とキーは ~/.dogtag/pki-tomcat/ca_admin_cert.p12 に保存されます。PKCS #12 パスワードは、pki_client_pkcs12_password パラメーターで指定されます。

管理者証明書を使用するには、次の手順を実行します。

  1. サーバーの NSS データベースから CA 署名証明書をエクスポートします。

    $ pki-server cert-export ca_signing --cert-file ca_signing.crt
  2. CA 署名証明書をクライアント NSS データベースにインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  3. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki pkcs12-import \
        --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  4. 管理者証明書を使用して CA サブシステムにアクセスできることを確認するには、次のコマンドを実行します。

    $ pki -n caadmin ca-user-show caadmin
    --------------
    User "caadmin"
    --------------
      User ID: caadmin
      Full name: caadmin
      Email: caadmin@example.com
      Type: adminType
      State: 1
7.4.1.12.6. CA から実際の DS 証明書を取得する

必要に応じて、この手順 に従って、CA が発行した実際の DS 証明書を取得します。

7.4.1.13. 下位 CA のインストール

ルート CA が発行した署名証明書を使用して下位 CA サブシステムをインストールするには、次のプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.1.13.1. 下位 CA サブシステムのインストール
  1. デプロイメント設定が含まれるファイル (例: subca.cfg) を準備します。

    デプロイメント設定のサンプルは、/usr/share/pki/server/examples/installation/subca.cfg にあります。

    ルート CA が https://root.example.com:8443 ですでに実行されており、ルート CA 署名証明書が root-ca_signing.crt にエクスポートされていることを前提としています。

  2. 以下のコマンドを実行します。

    $ pkispawn -f subca.cfg -s CA

Tomcat インスタンス (デフォルトは pki-tomcat) に CA サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/ca/alias
7.4.1.13.2. システム証明書の確認

サーバー NSS データベースに次の証明書が含まれていることを確認します。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ca_signing                                                   CTu,Cu,Cu
ca_ocsp_signing                                              u,u,u
subsystem                                                    u,u,u
ca_audit_signing                                             u,u,Pu
sslserver                                                    u,u,u
7.4.1.13.3. 管理者証明書の検証
  1. ルート CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki pkcs12-import \
        --pkcs12 /root/.dogtag/pki-tomcat/ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して下位 CA サブシステムにアクセスできることを確認します。

    $ pki -n caadmin ca-user-show caadmin
    --------------
    User "caadmin"
    --------------
      User ID: caadmin
      Full name: caadmin
      Email: caadmin@example.com
      Type: adminType
      State: 1

7.4.2. KRA サブシステムのインストール

7.4.2.1. KRA のインストール

KRA サブシステムをインストールするには、次のプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.2.1.1. KRA サブシステムのインストール
  1. デプロイメント設定が含まれるファイル (例: kra.cfg) を準備します。デプロイメント設定のサンプルは、/usr/share/pki/server/examples/installation/kra.cfg にあります。
  2. 以下のコマンドを実行します。

    $ pkispawn -f kra.cfg -s KRA

Tomcat インスタンス (デフォルトは pki-tomcat) に KRA サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/kra/alias
注記

KRA が新しいシステムにインストールされており、他のサブシステムがない場合は、CA のルート証明書を提供する必要があります。pki_cert_chain_path に CA PKCS#7 PEM ファイルへのパスを指定します。そうすることで、サーバーはセキュリティードメインに接続するときに CA の SSL サーバー証明書を検証できます。KRA をインストールする前に CA ルート証明書 (公開鍵のみ) をシステムに安全に転送するのは管理者の責任です。

7.4.2.1.2. システム証明書の確認

サーバー NSS データベースに次の証明書が含まれていることを確認します。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ca_signing                                                   CT,C,C
kra_transport                                                u,u,u
kra_storage                                                  u,u,u
subsystem                                                    u,u,u
kra_audit_signing                                            u,u,Pu
sslserver                                                    u,u,u
7.4.2.1.3. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して KRA サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin kra-user-show kraadmin
    ---------------
    User "kraadmin"
    ---------------
      User ID: kraadmin
      Full name: kraadmin
      Email: kraadmin@example.com
      Type: adminType
      State: 1
7.4.2.1.4. KRA コネクターの検証

CA サブシステムで KRA コネクターが設定されていることを確認します。

$ pki -c Secret.123 -n caadmin ca-kraconnector-show

Host: pki.example.com:8443
Enabled: true
Local: false
Timeout: 30
URI: /kra/agent/kra/connector
Transport Cert:

<base-64 certificate>
7.4.2.2. KRA クローンのインストール

既存 KRA サブシステムのクローンとして KRA サブシステムをインストールするには、このプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.2.2.1. 既存の KRA システム証明書のエクスポート

既存システムで、次のコマンドを使用して KRA システム証明書をエクスポートします。

$ pki-server kra-clone-prepare \
    --pkcs12-file kra-certs.p12 \
    --pkcs12-password Secret.123

このコマンドは、次の証明書 (証明書チェーンを含む) とそのキーを PKCS #12 ファイルにエクスポートします。

  • KRA ストレージ証明書
  • KRA トランスポート証明書
  • 監査署名証明書
  • サブシステム証明書

既存の SSL サーバー証明書はエクスポートされないことに注意してください。

必要に応じて、次のコマンドを使用して、トラストアンカーなどのサードパーティーの証明書を同じ PKCS #12 ファイルに追加できます。

$ pki -d /var/lib/pki/pki-tomcat/conf/alias -f /var/lib/pki/pki-tomcat/conf/password.conf \
    pkcs12-cert-import <nickname> \
    --pkcs12-file kra-certs.p12 \
    --pkcs12-password Secret.123 \
    --append
7.4.2.2.2. KRA サブシステムのインストール

KRA サブシステムのクローンをデプロイするには、kra-clone.cfg などのデプロイメント設定を準備します。デフォルトで、サブシステムは pki-tomcat と呼ばれる Tomcat インスタンスにデプロイされます。

デプロイメント設定のサンプルは、/usr/share/pki/server/examples/installation/kra-clone.cfg にあります。

これは、次のことを前提としています。

  • プライマリー CA および KRA サブシステムが https://primary.example.com:8443 で実行されている。
  • CA 署名証明書が ca_signing.crt にエクスポートされた。
  • 管理者証明書とキーが ca_admin_cert.p12 にエクスポートされた。
  • PKCS #12 パスワードが、pki_client_pkcs12_password パラメーターで指定された。

詳細は、CA のインストール を参照してください。

インストールを開始するには、次のコマンドを実行します。

$ pkispawn -f kra-clone.cfg -s KRA
7.4.2.2.3. CA システム証明書

インストール後、既存の KRA システム証明書 (証明書チェーンを含む) とそのキーがサーバーの NSS データベース (つまり /var/lib/pki/pki-tomcat/conf/alias) に保存され、新しいインスタンス用に新しい SSL サーバー証明書が作成されます。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ca_signing                                                   CT,C,C
kra_storage                                                  u,u,u
sslserver                                                    u,u,u
subsystem                                                    u,u,u
kra_audit_signing                                            u,u,Pu
kra_transport                                                u,u,u

必要に応じて、次のコマンドを使用して証明書を PEM ファイルにエクスポートできます。

$ pki-server cert-export <cert ID> --cert-file <filename>

KRA の有効な証明書 ID は次のとおりです。

  • kra_storage_signing
  • kra_transport_signing
  • kra_audit_signing
  • subsystem
  • sslserver

pki-server cert-export コマンドはニックネームではなく証明書 ID を使用することに注意してください。わかりやすくするため、この例のニックネームは証明書 ID と同じになるように設定されています。

7.4.2.2.4. 管理者証明書

管理者証明書を使用するには、次の手順を実行します。

  1. CA 署名証明書をクライアント NSS データベースにインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 管理者証明書を使用して KRA サブシステムクローンにアクセスできることを確認するには、次のコマンドを実行します。

    $ pki -n caadmin kra-user-show kraadmin
    ---------------
    User "kraadmin"
    ---------------
      User ID: kraadmin
      Full name: kraadmin
      Email: kraadmin@example.com
      Type: adminType
      State: 1
7.4.2.3. HSM を使用した KRA クローンのインストール

システム証明書とそのキーが HSM に保存されている既存 KRA サブシステムのクローンとして KRA サブシステムをインストールするには、このプロセスを実行します。

証明書とキーはすでに HSM 上にあるため、クローンを作成するためにそれらを PKCS #12 ファイルにエクスポートする必要はありません。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.2.3.1. KRA サブシステムのインストール

注記: CA 署名証明書が ca_signing.crt にエクスポートされていることを前提としています。

  1. デプロイメント設定が含まれるファイル (例: kra.cfg) を準備します。

    [DEFAULT]
    pki_instance_name=pki-tomcat
    pki_https_port=8443
    pki_http_port=8080
    pki_server_database_password=Secret.123
    
    pki_hsm_enable=True
    pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so
    pki_hsm_modulename=softhsm
    pki_token_name=HSM
    pki_token_password=Secret.HSM
    
    pki_cert_chain_path=ca_signing.crt
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    [KRA]
    pki_admin_email=kraadmin@example.com
    pki_admin_name=kraadmin
    pki_admin_nickname=kraadmin
    pki_admin_password=Secret.123
    pki_admin_uid=kraadmin
    
    pki_client_pkcs12_password=Secret.123
    
    pki_ds_url=ldap://localhost.localdomain:389
    pki_ds_base_dn=dc=kra,dc=pki,dc=example,dc=com
    pki_ds_database=kra
    pki_ds_password=Secret.123
    
    pki_security_domain_hostname=pki.example.com
    pki_security_domain_https_port=8443
    pki_security_domain_user=caadmin
    pki_security_domain_password=Secret.123
    
    pki_storage_nickname=kra_storage
    pki_transport_nickname=kra_transport
    pki_audit_signing_nickname=kra_audit_signing
    pki_sslserver_nickname=sslserver/replica.example.com
    pki_subsystem_nickname=subsystem
    
    pki_storage_token=HSM
    pki_transport_token=HSM
    pki_audit_signing_token=HSM
    pki_sslserver_token=HSM
    pki_subsystem_token=HSM
    
    pki_clone=True
    pki_clone_replicate_schema=True
    pki_clone_uri=https://pki.example.com:8443
  2. 以下のコマンドを実行します。

    $ pkispawn -f kra.cfg -s KRA

Tomcat インスタンス (デフォルトは pki-tomcat) に KRA サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/kra/alias
7.4.2.3.2. システム証明書の確認
  1. 内部トークンに次の証明書が含まれていることを確認します。

    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
    
    Certificate Nickname                                         Trust Attributes
                                                                 SSL,S/MIME,JAR/XPI
    
    ca_signing                                                   CT,C,C
    sslserver/replica.example.com                                ,,
    kra_audit_signing                                            ,,P
  2. HSM に次の証明書が含まれていることを確認します。

    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd
    
    Certificate Nickname                                         Trust Attributes
                                                                 SSL,S/MIME,JAR/XPI
    
    HSM:kra_transport                                            u,u,u
    HSM:kra_storage                                              u,u,u
    HSM:subsystem                                                u,u,u
    HSM:kra_audit_signing                                        u,u,Pu
    HSM:sslserver/replica.example.com                            u,u,u
7.4.2.3.3. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して KRA サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin kra-user-show kraadmin
    ---------------
    User "kraadmin"
    ---------------
      User ID: kraadmin
      Full name: kraadmin
      Email: kraadmin@example.com
      Type: adminType
      State: 1
7.4.2.3.4. KRA コネクターの検証

CA サブシステムで KRA コネクターが設定されていることを確認します。

$ pki -c Secret.123 -n caadmin ca-kraconnector-show

Host: pki.example.com:8443
Enabled: true
Local: false
Timeout: 30
URI: /kra/agent/kra/connector
Transport Cert:

<base-64 certificate>
7.4.2.4. ECC を使用した KRA のインストール

ECC を使用して KRA サブシステムをインストールするには、このプロセスに従います。

サポートされている ECC 曲線:

  • nistp256
  • nistp384
  • nistp521

サポートされている ECC キーアルゴリズム:

  • SHA256withEC
  • SHA384withEC
  • SHA512withEC

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.2.4.1. KRA サブシステムのインストール
  1. デプロイメント設定が含まれるファイル (例: kra.cfg) を準備します。

    [DEFAULT]
    pki_instance_name=pki-tomcat
    pki_https_port=8443
    pki_http_port=8080
    pki_server_database_password=Secret.123
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    [KRA]
    pki_admin_cert_file=ca_admin.cert
    pki_admin_email=kraadmin@example.com
    pki_admin_name=kraadmin
    pki_admin_nickname=kraadmin
    pki_admin_password=Secret.123
    pki_admin_uid=kraadmin
    
    pki_client_pkcs12_password=Secret.123
    
    pki_ds_url=ldap://localhost.localdomain:389
    pki_ds_base_dn=dc=kra,dc=pki,dc=example,dc=com
    pki_ds_database=kra
    pki_ds_password=Secret.123
    
    pki_security_domain_name=EXAMPLE
    pki_security_domain_user=caadmin
    pki_security_domain_password=Secret.123
    
    pki_storage_nickname=kra_storage
    pki_storage_key_type=rsa
    pki_storage_key_algorithm=SHA512withRSA
    pki_storage_key_size=2048
    pki_storage_signing_algorithm=SHA512withRSA
    
    pki_transport_nickname=kra_transport
    pki_transport_key_type=rsa
    pki_transport_key_algorithm=SHA512withRSA
    pki_transport_key_size=2048
    pki_transport_signing_algorithm=SHA512withRSA
    
    pki_audit_signing_nickname=kra_audit_signing
    pki_audit_signing_key_type=ecc
    pki_audit_signing_key_algorithm=SHA512withEC
    pki_audit_signing_key_size=nistp521
    pki_audit_signing_signing_algorithm=SHA512withEC
    
    pki_sslserver_nickname=sslserver
    pki_sslserver_key_type=ecc
    pki_sslserver_key_algorithm=SHA512withEC
    pki_sslserver_key_size=nistp521
    
    pki_subsystem_nickname=subsystem
    pki_subsystem_key_type=ecc
    pki_subsystem_key_algorithm=SHA512withEC
    pki_subsystem_key_size=nistp521
  2. 以下のコマンドを実行します。

    $ pkispawn -f kra.cfg -s KRA

Tomcat インスタンス (デフォルトは pki-tomcat) に KRA サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/kra/alias
7.4.2.4.2. システム証明書の確認

サーバー NSS データベースに次の証明書が含まれていることを確認します。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ca_signing                                                   CT,C,C
kra_transport                                                u,u,u
kra_storage                                                  u,u,u
subsystem                                                    u,u,u
kra_audit_signing                                            u,u,Pu
sslserver                                                    u,u,u
7.4.2.4.3. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して KRA サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin kra-user-show kraadmin
    --------------
    User "kraadmin"
    --------------
      User ID: kraadmin
      Full name: kraadmin
      Email: kraadmin@example.com
      Type: adminType
      State: 1
7.4.2.5. HSM を使用した KRA のインストール

システム証明書とそのキーが HSM に保存されている KRA サブシステムをインストールするには、このプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.2.5.1. KRA サブシステムのインストール
  1. デプロイメント設定が含まれるファイル (例: kra.cfg) を準備します。

    [DEFAULT]
    pki_instance_name=pki-tomcat
    pki_https_port=8443
    pki_http_port=8080
    pki_server_database_password=Secret.123
    
    pki_hsm_enable=True
    pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so
    pki_hsm_modulename=softhsm
    pki_token_name=HSM
    pki_token_password=Secret.HSM
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    [KRA]
    pki_admin_cert_file=ca_admin.cert
    pki_admin_email=kraadmin@example.com
    pki_admin_name=kraadmin
    pki_admin_nickname=kraadmin
    pki_admin_password=Secret.123
    pki_admin_uid=kraadmin
    
    pki_client_pkcs12_password=Secret.123
    
    pki_ds_url=ldap://localhost.localdomain:389
    pki_ds_base_dn=dc=kra,dc=pki,dc=example,dc=com
    pki_ds_database=kra
    pki_ds_password=Secret.123
    
    pki_security_domain_name=EXAMPLE
    pki_security_domain_user=caadmin
    pki_security_domain_password=Secret.123
    
    pki_storage_nickname=kra_storage
    pki_transport_nickname=kra_transport
    pki_audit_signing_nickname=kra_audit_signing
    pki_sslserver_nickname=sslserver/pki.example.com
    pki_subsystem_nickname=subsystem
  2. 以下のコマンドを実行します。

    $ pkispawn -f kra.cfg -s KRA

Tomcat インスタンス (デフォルトは pki-tomcat) に KRA サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/kra/alias
7.4.2.5.2. システム証明書の確認
  1. 内部トークンに次の証明書が含まれていることを確認します。

    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
    
    Certificate Nickname                                         Trust Attributes
                                                                 SSL,S/MIME,JAR/XPI
    
    ca_signing                                                   CT,C,C
    kra_audit_signing                                            ,,P
  2. HSM に次の証明書が含まれていることを確認します。

    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd
    
    Certificate Nickname                                         Trust Attributes
                                                                 SSL,S/MIME,JAR/XPI
    
    HSM:kra_transport                                            u,u,u
    HSM:kra_storage                                              u,u,u
    HSM:subsystem                                                u,u,u
    HSM:kra_audit_signing                                        u,u,Pu
    HSM:sslserver/pki.example.com                                u,u,u
7.4.2.5.3. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して KRA サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin kra-user-show kraadmin
    ---------------
    User "kraadmin"
    ---------------
      User ID: kraadmin
      Full name: kraadmin
      Email: kraadmin@example.com
      Type: adminType
      State: 1
7.4.2.5.4. KRA コネクターの検証

CA サブシステムで KRA コネクターが設定されていることを確認します。

$ pki -c Secret.123 -n caadmin ca-kraconnector-show

Host: pki.example.com:8443
Enabled: true
Local: false
Timeout: 30
URI: /kra/agent/kra/connector
Transport Cert:

<base-64 certificate>
7.4.2.6. LDAPS 接続を使用した KRA のインストール

セキュアなデータベース接続を使用して KRA サブシステムをインストールするには、次のプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.2.6.1. DS 設定

DS インスタンスの作成時に DS ブートストラップ証明書を使用することを選択した場合は、上記の前提条件を設定した後、次のようにブートストラップ自己署名証明書を ds_signing.crt にエクスポートします。

$ certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt
7.4.2.6.2. KRA サブシステムのインストール
  1. デプロイメント設定が含まれるファイル (例: kra.cfg) を準備します。

    [DEFAULT]
    pki_server_database_password=Secret.123
    
    [KRA]
    pki_admin_cert_file=ca_admin.cert
    pki_admin_email=kraadmin@example.com
    pki_admin_name=kraadmin
    pki_admin_nickname=kraadmin
    pki_admin_password=Secret.123
    pki_admin_uid=kraadmin
    
    pki_client_pkcs12_password=Secret.123
    
    pki_ds_url=ldaps://localhost.localdomain:636
    pki_ds_secure_connection_ca_nickname=ds_signing
    pki_ds_secure_connection_ca_pem_file=ds_signing.crt
    
    pki_ds_base_dn=dc=kra,dc=pki,dc=example,dc=com
    pki_ds_database=kra
    pki_ds_password=Secret.123
    
    pki_security_domain_name=EXAMPLE
    pki_security_domain_user=caadmin
    pki_security_domain_password=Secret.123
    
    pki_storage_nickname=kra_storage
    pki_transport_nickname=kra_transport
    pki_audit_signing_nickname=kra_audit_signing
    pki_sslserver_nickname=sslserver
    pki_subsystem_nickname=subsystem
  2. 以下のコマンドを実行します。

    $ pkispawn -f kra.cfg -s KRA

Tomcat インスタンス (デフォルトは pki-tomcat) に KRA サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/kra/alias
7.4.2.6.3. システム証明書の確認

サーバー NSS データベースに次の証明書が含まれていることを確認します。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ds_signing                                                   CT,C,C
ca_signing                                                   CT,C,C
kra_transport                                                u,u,u
kra_storage                                                  u,u,u
subsystem                                                    u,u,u
kra_audit_signing                                            u,u,Pu
sslserver                                                    u,u,u
7.4.2.6.4. データベース設定の検証

KRA データベースがセキュアな接続で設定されていることを確認します。

$ pki-server kra-db-config-show
  Hostname: pki.example.com
  Port: 636
  Secure: true
  Authentication: BasicAuth
  Bind DN: cn=Directory Manager
  Bind Password Prompt: internaldb
  Database: kra
  Base DN: dc=kra,dc=pki,dc=example,dc=com
  Multiple suffix: false
  Maximum connections: 15
  Minimum connections: 3
7.4.2.6.5. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して KRA サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin kra-user-show kraadmin
    ---------------
    User "kraadmin"
    ---------------
      User ID: kraadmin
      Full name: kraadmin
      Email: kraadmin@example.com
      Type: adminType
      State: 1
7.4.2.6.6. KRA コネクターの検証

CA サブシステムで KRA コネクターが設定されていることを確認します。

$ pki -c Secret.123 -n caadmin ca-kraconnector-show

Host: pki.example.com:8443
Enabled: true
Local: false
Timeout: 30
URI: /kra/agent/kra/connector
Transport Cert:

<base-64 certificate>
7.4.2.6.7. CA から実際の DS 証明書を取得する

必要に応じて、この手順 に従って、CA が発行した実際の DS 証明書を取得します。

7.4.2.7. スタンドアロン KRA のインストール

スタンドアロン KRA サブシステムをインストールするには、次のプロセスに従います。

通常の KRA インストール では、KRA 証明書は CA によって自動的に発行され、KRA は CA のセキュリティードメインに参加します。

スタンドアロン KRA のインストールでは、KRA 証明書は手動で発行され、KRA には独自のセキュリティードメインがあります。

インストールプロセスには複数のステップが含まれます。

  • 証明書要求を生成する
  • 証明書を発行する
  • 証明書を使用してインストールを完了する
7.4.2.7.1. 証明書要求を生成する
  1. 最初のデプロイメント設定が含まれるファイル (例: kra-standalone-step1.cfg) を準備します。

    デプロイメント設定のサンプルは、/usr/share/pki/server/examples/installation/kra-standalone-step1.cfg にあります。

  2. 以下のコマンドを実行します。

    $ pkispawn -f kra-standalone-step1.cfg -s KRA

/var/lib/pki/pki-tomcat/alias に NSS データベースが作成され、指定されたパスに CSR が生成されます。

7.4.2.7.2. 証明書の発行

CSR を使用して KRA 証明書を取得するには、CSR を外部 CA に送信して KRA システム証明書を発行します。次のセクションでは、KRA システム証明書が次のファイルに保存されていることを前提としています。

  • kra_storage.crt
  • kra_transport.crt
  • subsystem.crt
  • sslserver.crt
  • kra_audit_signing.crt
  • kra_admin.crt
7.4.2.7.3. インストールの完了
  1. 2 つ目のデプロイメント設定が含まれる別のファイル (例: kra-standalone-step2.cfg) を準備します。このファイルは、最初のファイル (kra-standalone-step1.cfg) に次の変更を加えて作成できます。

    pki_external_step_two=True
  2. 次のパラメーターを使用して証明書ファイルを指定します。

    pki_storage_cert_path=kra_storage.crt
    pki_transport_cert_path=kra_transport.crt
    pki_subsystem_cert_path=subsystem.crt
    pki_sslserver_cert_path=sslserver.crt
    pki_audit_signing_cert_path=kra_audit_signing.crt
    pki_admin_cert_path=kra_admin.crt

    各証明書ファイルには、単一の PEM 証明書または PKCS #7 証明書チェーンのいずれかを含めることができます。

  3. 次のパラメーターを使用して CA 証明書チェーンを指定します。

    pki_cert_chain_nickname=ca_signing
    pki_cert_chain_path=ca_signing.crt

    CA 証明書チェーンファイルには、単一の PEM 証明書または PKCS #7 証明書チェーンのいずれかを含めることができます。

    デプロイメント設定のサンプルは、/usr/share/pki/server/examples/installation/kra-standalone-step2.cfg にあります。

  4. 以下のコマンドを実行します。

    $ pkispawn -f kra-standalone-step2.cfg -s KRA
7.4.2.7.4. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki pkcs12-import \
        --pkcs12 kra_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して KRA サブシステムにアクセスできることを確認します。

    $ pki -n kraadmin kra-user-show kraadmin
    ---------------
    User "kraadmin"
    ---------------
      User ID: kraadmin
      Full name: kraadmin
      Email: kraadmin@example.com
      Type: adminType
      State: 1

7.4.3. OCSP サブシステムのインストール

7.4.3.1. OCSP のインストール

OCSP サブシステムをインストールするには、次のプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.3.1.1. OCSP サブシステムのインストール
  1. デプロイメント設定が含まれるファイル (例: ocsp.cfg) を準備します。デプロイメント設定のサンプルは、/usr/share/pki/server/examples/installation/ocsp.cfg にあります。
  2. 以下のコマンドを実行します。

    $ pkispawn -f ocsp.cfg -s OCSP

Tomcat インスタンス (デフォルトは pki-tomcat) に OCSP サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/ocsp/alias
注記

OCSP が新しいシステムにインストールされており、他のサブシステムがない場合は、CA のルート証明書を提供する必要があります。pki_cert_chain_path に CA PKCS#7 PEM ファイルへのパスを指定します。そうすることで、サーバーはセキュリティードメインに接続するときに CA の SSL サーバー証明書を検証できます。OCSP をインストールする前に CA ルート証明書 (公開鍵のみ) をシステムに安全に転送するのは管理者の責任です。

7.4.3.1.2. システム証明書の確認

サーバー NSS データベースに次の証明書が含まれていることを確認します。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ca_signing                                                   CT,C,C
ocsp_signing                                                 u,u,u
subsystem                                                    u,u,u
ocsp_audit_signing                                           u,u,Pu
sslserver                                                    u,u,u
7.4.3.1.3. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して OCSP サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin ocsp-user-show ocspadmin
    ----------------
    User "ocspadmin"
    ----------------
      User ID: ocspadmin
      Full name: ocspadmin
      Email: ocspadmin@example.com
      Type: adminType
      State: 1
7.4.3.1.4. OCSP クライアントの検証
  1. 以下を実行して、CA の CRL を Directory Server に公開します。

    1. CA Agent UI (https://pki.example.com:8443/ca/agent/ca/) に移動します。
    2. Update Directory Server をクリックします。
    3. Update the certificate revocation list to the directory を選択します。
    4. Update Directory をクリックします。
  2. OCSPClient を使用して証明書を検証できることを確認します。

    $ OCSPClient \
     -d /var/lib/pki/pki-tomcat/conf/alias \
     -h pki.example.com \
     -p 8080 \
     -t /ocsp/ee/ocsp \
     -c ca_signing \
     --serial 1
    CertID.serialNumber=1
    CertStatus=Good
7.4.3.2. ECC を使用した OCSP のインストール

ECC を使用して OCSP サブシステムをインストールするには、次のプロセスに従います。

サポートされている ECC 曲線:

  • nistp256
  • nistp384
  • nistp521

サポートされている ECC キーアルゴリズム:

  • SHA256withEC
  • SHA384withEC
  • SHA512withEC

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.3.2.1. OCSP サブシステムのインストール
  1. デプロイメント設定が含まれるファイル (例: ocsp.cfg) を準備します。

    [DEFAULT]
    pki_instance_name=pki-tomcat
    pki_https_port=8443
    pki_http_port=8080
    pki_server_database_password=Secret.123
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    [OCSP]
    pki_admin_cert_file=ca_admin.cert
    pki_admin_email=ocspadmin@example.com
    pki_admin_name=ocspadmin
    pki_admin_nickname=ocspadmin
    pki_admin_password=Secret.123
    pki_admin_uid=ocspadmin
    
    pki_client_pkcs12_password=Secret.123
    
    pki_ds_url=ldap://localhost.localdomain:389
    pki_ds_base_dn=dc=ocsp,dc=pki,dc=example,dc=com
    pki_ds_database=ocsp
    pki_ds_password=Secret.123
    
    pki_security_domain_name=EXAMPLE
    pki_security_domain_user=caadmin
    pki_security_domain_password=Secret.123
    
    pki_ocsp_signing_nickname=ocsp_signing
    pki_ocsp_signing_key_type=ecc
    pki_ocsp_signing_key_algorithm=SHA512withEC
    pki_ocsp_signing_key_size=nistp521
    
    pki_audit_signing_nickname=ocsp_audit_signing
    pki_audit_signing_key_type=ecc
    pki_audit_signing_key_algorithm=SHA512withEC
    pki_audit_signing_key_size=nistp521
    pki_audit_signing_signing_algorithm=SHA512withEC
    
    pki_sslserver_nickname=sslserver
    pki_sslserver_key_type=ecc
    pki_sslserver_key_algorithm=SHA512withEC
    pki_sslserver_key_size=nistp521
    
    pki_subsystem_nickname=subsystem
    pki_subsystem_key_type=ecc
    pki_subsystem_key_algorithm=SHA512withEC
    pki_subsystem_key_size=nistp521
  2. 以下のコマンドを実行します。

    $ pkispawn -f ocsp.cfg -s OCSP

Tomcat インスタンス (デフォルトは pki-tomcat) に OCSP サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/kra/alias
7.4.3.2.2. システム証明書の確認

サーバー NSS データベースに次の証明書が含まれていることを確認します。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ca_signing                                                   CT,C,C
subsystem                                                    u,u,u
ocsp_audit_signing                                           u,u,Pu
ocsp_signing                                                 u,u,u
sslserver                                                    u,u,u
7.4.3.2.3. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して OCSP サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin ocsp-user-show ocspadmin
    --------------
    User "ocspadmin"
    --------------
      User ID: ocspadmin
      Full name: ocspadmin
      Email: ocspadmin@example.com
      Type: adminType
      State: 1
7.4.3.3. HSM を使用した OCSP のインストール

システム証明書とそのキーが HSM に保存されている OCSP サブシステムをインストールするには、このプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.3.3.1. OCSP サブシステムのインストール
  1. デプロイメント設定が含まれるファイル (例: ocsp.cfg) を準備します。

    [DEFAULT]
    pki_instance_name=pki-tomcat
    pki_https_port=8443
    pki_http_port=8080
    pki_server_database_password=Secret.123
    
    pki_hsm_enable=True
    pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so
    pki_hsm_modulename=softhsm
    pki_token_name=HSM
    pki_token_password=Secret.HSM
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    [OCSP]
    pki_admin_cert_file=ca_admin.cert
    pki_admin_email=ocspadmin@example.com
    pki_admin_name=ocspadmin
    pki_admin_nickname=ocspadmin
    pki_admin_password=Secret.123
    pki_admin_uid=ocspadmin
    
    pki_client_pkcs12_password=Secret.123
    
    pki_ds_url=ldap://localhost.localdomain:389
    pki_ds_base_dn=dc=ocsp,dc=pki,dc=example,dc=com
    pki_ds_database=ocsp
    pki_ds_password=Secret.123
    
    pki_security_domain_name=EXAMPLE
    pki_security_domain_user=caadmin
    pki_security_domain_password=Secret.123
    
    pki_ocsp_signing_nickname=ocsp_signing
    pki_audit_signing_nickname=ocsp_audit_signing
    pki_sslserver_nickname=sslserver/pki.example.com
    pki_subsystem_nickname=subsystem
  2. 以下のコマンドを実行します。

    $ pkispawn -f ocsp.cfg -s OCSP

Tomcat インスタンス (デフォルトは pki-tomcat) に OCSP サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/ocsp/alias
7.4.3.3.2. システム証明書の確認
  1. 内部トークンに次の証明書が含まれていることを確認します。

    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
    
    Certificate Nickname                                         Trust Attributes
                                                                 SSL,S/MIME,JAR/XPI
    
    ca_signing                                                   CT,C,C
    ocsp_audit_signing                                           ,,P
  2. HSM に次の証明書が含まれていることを確認します。

    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd
    
    Certificate Nickname                                         Trust Attributes
                                                                 SSL,S/MIME,JAR/XPI
    
    HSM:ocsp_signing                                             u,u,u
    HSM:subsystem                                                u,u,u
    HSM:ocsp_audit_signing                                       u,u,Pu
    HSM:sslserver/pki.example.com                                u,u,u
7.4.3.3.3. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して OCSP サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin ocsp-user-show ocspadmin
    ----------------
    User "ocspadmin"
    ----------------
      User ID: ocspadmin
      Full name: ocspadmin
      Email: ocspadmin@example.com
      Type: adminType
      State: 1
7.4.3.3.4. OCSP クライアントの検証
  1. 以下を実行して、CA の CRL を Directory Server に公開します。

    1. CA Agent UI (https://pki.example.com:8443/ca/agent/ca/) に移動します。
    2. Update Directory Server をクリックします。
    3. Update the certificate revocation list to the directory を選択します。
    4. Update Directory をクリックします。
  2. OCSPClient を使用して証明書を検証できることを確認します。

    $ OCSPClient \
     -d /var/lib/pki/pki-tomcat/conf/alias \
     -h pki.example.com \
     -p 8080 \
     -t /ocsp/ee/ocsp \
     -c ca_signing \
     --serial 1
    CertID.serialNumber=1
    CertStatus=Good
7.4.3.4. LDAPS 接続を使用した OCSP のインストール

セキュアなデータベース接続を使用して OCSP サブシステムをインストールするには、次のプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.3.4.1. DS 設定

DS インスタンスの作成時に DS ブートストラップ証明書を使用することを選択した場合は、上記の前提条件を完了した後、次のようにブートストラップ自己署名証明書を ds_signing.crt にエクスポートします。

$ certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt
7.4.3.4.2. OCSP サブシステムのインストール
  1. デプロイメント設定が含まれるファイル (例: ocsp.cfg) を準備します。

    [DEFAULT]
    pki_instance_name=pki-tomcat
    pki_https_port=8443
    pki_http_port=8080
    pki_server_database_password=Secret.123
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    [OCSP]
    pki_admin_cert_file=ca_admin.cert
    pki_admin_email=ocspadmin@example.com
    pki_admin_name=ocspadmin
    pki_admin_nickname=ocspadmin
    pki_admin_password=Secret.123
    pki_admin_uid=ocspadmin
    
    pki_client_pkcs12_password=Secret.123
    
    pki_ds_url=ldaps://localhost.localdomain:636
    pki_ds_secure_connection_ca_nickname=ds_signing
    pki_ds_secure_connection_ca_pem_file=ds_signing.crt
    
    pki_ds_base_dn=dc=ocsp,dc=pki,dc=example,dc=com
    pki_ds_database=ocsp
    pki_ds_password=Secret.123
    
    pki_security_domain_name=EXAMPLE
    pki_security_domain_user=caadmin
    pki_security_domain_password=Secret.123
    
    pki_ocsp_signing_nickname=ocsp_signing
    pki_audit_signing_nickname=ocsp_audit_signing
    pki_sslserver_nickname=sslserver
    pki_subsystem_nickname=subsystem
  2. 以下のコマンドを実行します。

    $ pkispawn -f ocsp.cfg -s OCSP

Tomcat インスタンス (デフォルトは pki-tomcat) に OCSP サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/ocsp/alias
7.4.3.4.3. システム証明書の確認

サーバー NSS データベースに次の証明書が含まれていることを確認します。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ds_signing                                                   CT,C,C
ca_signing                                                   CT,C,C
ocsp_signing                                                 u,u,u
subsystem                                                    u,u,u
ocsp_audit_signing                                           u,u,Pu
sslserver                                                    u,u,u
7.4.3.4.4. データベース設定の検証

OCSP データベースがセキュアな接続で設定されていることを確認します。

$ pki-server ocsp-db-config-show
  Hostname: pki.example.com
  Port: 636
  Secure: true
  Authentication: BasicAuth
  Bind DN: cn=Directory Manager
  Bind Password Prompt: internaldb
  Database: ocsp
  Base DN: dc=ocsp,dc=pki,dc=example,dc=com
  Multiple suffix: false
  Maximum connections: 15
  Minimum connections: 3
7.4.3.4.5. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して OCSP サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin ocsp-user-show ocspadmin
    ----------------
    User "ocspadmin"
    ----------------
      User ID: ocspadmin
      Full name: ocspadmin
      Email: ocspadmin@example.com
      Type: adminType
      State: 1
7.4.3.4.6. OCSP クライアントの検証
  1. 以下を実行して、CA の CRL を Directory Server に公開します。

    1. CA Agent UI (https://pki.example.com:8443/ca/agent/ca/) に移動します。
    2. Update Directory Server をクリックします。
    3. Update the certificate revocation list to the directory を選択します。
    4. Update Directory をクリックします。
  2. OCSPClient を使用して証明書を検証できることを確認します。

    $ OCSPClient \
     -d /var/lib/pki/pki-tomcat/conf/alias \
     -h pki.example.com \
     -p 8080 \
     -t /ocsp/ee/ocsp \
     -c ca_signing \
     --serial 1
    CertID.serialNumber=1
    CertStatus=Good
7.4.3.4.7. CA から実際の DS 証明書を取得する

必要に応じて、この手順 に従って、CA が発行した実際の DS 証明書を取得します。

7.4.3.5. スタンドアロン OCSP のインストール

スタンドアロン OCSP サブシステムをインストールするには、次のプロセスに従います。

通常の OCSP インストール では、OCSP 証明書は CA によって自動的に発行され、OCSP は CA のセキュリティードメインに参加します。

スタンドアロン OCSP のインストールでは、OCSP 証明書は手動で発行され、OCSP には独自のセキュリティードメインがあります。

インストールプロセスには複数のステップが含まれます。

  • 証明書要求を生成する
  • 証明書を発行する
  • 証明書を使用してインストールを完了する
7.4.3.5.1. 証明書要求を生成する
  1. 最初のデプロイメント設定が含まれるファイル (例: ocsp-standalone-step1.cfg) を準備します。

    デプロイメント設定のサンプルは、/usr/share/pki/server/examples/installation/ocsp-standalone-step1.cfg にあります。

  2. 以下のコマンドを実行します。

    $ pkispawn -f ocsp-standalone-step1.cfg -s OCSP

/var/lib/pki/pki-tomcat/alias に NSS データベースが作成され、指定されたパスに CSR が生成されます。

7.4.3.5.2. 証明書の発行

CSR を使用して OCSP 証明書を取得するには、CSR を外部 CA に送信して KRA システム証明書を発行します。次のセクションでは、KRA システム証明書が次のファイルに保存されていることを前提としています。

  • ocsp_signing.crt
  • subsystem.crt
  • sslserver.crt
  • ocsp_audit_signing.crt
  • ocsp_admin.crt
7.4.3.5.3. インストールの完了
  1. 2 つ目のデプロイメント設定が含まれる別のファイル (例: ocsp-standalone-step2.cfg) を準備します。このファイルは、最初のファイル (ocsp-standalone-step1.cfg) に次の変更を加えて作成できます。

    pki_external_step_two=True
  2. 次のパラメーターを使用して証明書ファイルを指定します。

    pki_ocsp_signing_cert_path=ocsp_signing.crt
    pki_subsystem_cert_path=subsystem.crt
    pki_sslserver_cert_path=sslserver.crt
    pki_audit_signing_cert_path=ocsp_audit_signing.crt
    pki_admin_cert_path=ocsp_admin.crt

    各証明書ファイルには、単一の PEM 証明書または PKCS #7 証明書チェーンのいずれかを含めることができます。

  3. 次のパラメーターを使用して CA 証明書チェーンを指定します。

    pki_cert_chain_nickname=ca_signing
    pki_cert_chain_path=ca_signing.crt

    CA 証明書チェーンファイルには、単一の PEM 証明書または PKCS #7 証明書チェーンのいずれかを含めることができます。

    デプロイメント設定のサンプルは、/usr/share/pki/server/examples/installation/ocsp-standalone-step2.cfg にあります。

  4. 以下のコマンドを実行します。

    $ pkispawn -f ocsp-standalone-step2.cfg -s OCSP
7.4.3.5.4. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki pkcs12-import \
        --pkcs12 ocsp_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して OCSP サブシステムにアクセスできることを確認します。

    $ pki -n ocspadmin ocsp-user-show ocspadmin
    ----------------
    User "ocspadmin"
    ----------------
      User ID: ocspadmin
      Full name: ocspadmin
      Email: ocspadmin@example.com
      Type: adminType
      State: 1

7.4.4. TKS サブシステムのインストール

7.4.4.1. TKS のインストール

TKS サブシステムをインストールするには、次のプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.4.1.1. TKS サブシステムのインストール
  1. デプロイメント設定が含まれるファイル (例: tks.cfg) を準備します。デプロイメント設定のサンプルは、/usr/share/pki/server/examples/installation/tks.cfg にあります。
  2. 以下のコマンドを実行します。

    $ pkispawn -f tks.cfg -s TKS

Tomcat インスタンス (デフォルトは pki-tomcat) に TKS サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/tks/alias
注記

TKS が新しいシステムにインストールされており、他のサブシステムがない場合は、CA のルート証明書を提供する必要があります。pki_cert_chain_path に CA PKCS#7 PEM ファイルへのパスを指定します。そうすることで、サーバーはセキュリティードメインに接続するときに CA の SSL サーバー証明書を検証できます。TKS をインストールする前に CA ルート証明書 (公開鍵のみ) をシステムに安全に転送するのは管理者の責任です。

7.4.4.1.2. システム証明書の確認

サーバー NSS データベースに次の証明書が含まれていることを確認します。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ca_signing                                                   CT,C,C
subsystem                                                    u,u,u
tks_audit_signing                                            u,u,Pu
sslserver                                                    u,u,u
7.4.4.1.3. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して TKS サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin tks-user-show tksadmin
    ---------------
    User "tksadmin"
    ---------------
      User ID: tksadmin
      Full name: tksadmin
      Email: tksadmin@example.com
      Type: adminType
      State: 1
7.4.4.2. HSM を使用した TKS のインストール

システム証明書とそのキーが HSM に保存されている TKS サブシステムをインストールするには、このプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.4.2.1. TKS サブシステムのインストール
  1. デプロイメント設定が含まれるファイル (例: tks.cfg) を準備します。

    [DEFAULT]
    pki_instance_name=pki-tomcat
    pki_https_port=8443
    pki_http_port=8080
    pki_server_database_password=Secret.123
    
    pki_hsm_enable=True
    pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so
    pki_hsm_modulename=softhsm
    pki_token_name=HSM
    pki_token_password=Secret.HSM
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    [TKS]
    pki_admin_cert_file=ca_admin.cert
    pki_admin_email=tksadmin@example.com
    pki_admin_name=tksadmin
    pki_admin_nickname=tksadmin
    pki_admin_password=Secret.123
    pki_admin_uid=tksadmin
    
    pki_client_pkcs12_password=Secret.123
    
    pki_ds_url=ldap://localhost.localdomain:389
    pki_ds_base_dn=dc=tks,dc=pki,dc=example,dc=com
    pki_ds_database=tks
    pki_ds_password=Secret.123
    
    pki_security_domain_name=EXAMPLE
    pki_security_domain_user=caadmin
    pki_security_domain_password=Secret.123
    
    pki_audit_signing_nickname=tks_audit_signing
    pki_sslserver_nickname=sslserver
    pki_subsystem_nickname=subsystem
  2. 以下のコマンドを実行します。

    $ pkispawn -f tks.cfg -s TKS

Tomcat インスタンス (デフォルトは pki-tomcat) に TKS サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/tks/alias
7.4.4.2.2. システム証明書の確認
  1. 内部トークンに次の証明書が含まれていることを確認します。

    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
    
    Certificate Nickname                                         Trust Attributes
                                                                 SSL,S/MIME,JAR/XPI
    
    ca_signing                                                   CT,C,C
    tks_audit_signing                                            ,,P
  2. HSM に次の証明書が含まれていることを確認します。

    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd
    
    Certificate Nickname                                         Trust Attributes
                                                                 SSL,S/MIME,JAR/XPI
    
    HSM:subsystem                                                u,u,u
    HSM:tks_audit_signing                                        u,u,Pu
    HSM:sslserver                                                u,u,u
7.4.4.2.3. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して TKS サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin tks-user-show tksadmin
    ---------------
    User "tksadmin"
    ---------------
      User ID: tksadmin
      Full name: tksadmin
      Email: tksadmin@example.com
      Type: adminType
      State: 1
7.4.4.3. LDAPS 接続を使用した TKS のインストール

セキュアなデータベース接続を使用して TKS サブシステムをインストールするには、次のプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.4.3.1. DS 設定

DS インスタンスの作成時に DS ブートストラップ証明書を使用することを選択した場合は、上記の前提条件を完了した後、次のようにブートストラップ自己署名証明書を ds_signing.crt にエクスポートします。

$ certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt
7.4.4.3.2. TKS サブシステムのインストール
  1. デプロイメント設定が含まれるファイル (例: tks.cfg) を準備します。

    [DEFAULT]
    pki_instance_name=pki-tomcat
    pki_https_port=8443
    pki_http_port=8080
    pki_server_database_password=Secret.123
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    [TKS]
    pki_admin_cert_file=ca_admin.cert
    pki_admin_email=tksadmin@example.com
    pki_admin_name=tksadmin
    pki_admin_nickname=tksadmin
    pki_admin_password=Secret.123
    pki_admin_uid=tksadmin
    
    pki_client_pkcs12_password=Secret.123
    
    pki_ds_url=ldaps://localhost.localdomain:636
    pki_ds_secure_connection_ca_nickname=ds_signing
    pki_ds_secure_connection_ca_pem_file=ds_signing.crt
    
    pki_ds_base_dn=dc=tks,dc=pki,dc=example,dc=com
    pki_ds_database=tks
    pki_ds_password=Secret.123
    
    pki_security_domain_name=EXAMPLE
    pki_security_domain_user=caadmin
    pki_security_domain_password=Secret.123
    
    pki_audit_signing_nickname=tks_audit_signing
    pki_sslserver_nickname=sslserver
    pki_subsystem_nickname=subsystem
  2. 以下のコマンドを実行します。

    $ pkispawn -f tks.cfg -s TKS

Tomcat インスタンス (デフォルトは pki-tomcat) に TKS サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/tks/alias
7.4.4.3.3. システム証明書の確認

サーバー NSS データベースに次の証明書が含まれていることを確認します。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ds_signing                                                   CT,C,C
ca_signing                                                   CT,C,C
subsystem                                                    u,u,u
tks_audit_signing                                            u,u,Pu
sslserver                                                    u,u,u
7.4.4.3.4. データベース設定の検証

TKS データベースがセキュアな接続で設定されていることを確認します。

$ pki-server tks-db-config-show
  Hostname: pki.example.com
  Port: 636
  Secure: true
  Authentication: BasicAuth
  Bind DN: cn=Directory Manager
  Bind Password Prompt: internaldb
  Database: tks
  Base DN: dc=tks,dc=pki,dc=example,dc=com
  Multiple suffix: false
  Maximum connections: 15
  Minimum connections: 3
7.4.4.3.5. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して TKS サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin tks-user-show tksadmin
    ---------------
    User "tksadmin"
    ---------------
      User ID: tksadmin
      Full name: tksadmin
      Email: tksadmin@example.com
      Type: adminType
      State: 1
7.4.4.3.6. CA から実際の DS 証明書を取得する

必要に応じて、この手順 に従って、CA が発行した実際の DS 証明書を取得します。

7.4.5. TPS サブシステムのインストール

7.4.5.1. TPS のインストール

TPS サブシステムをインストールするには、次のプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.5.1.1. TPS サブシステムのインストール
  1. デプロイメント設定が含まれるファイル (例: tps.cfg) を準備します。デプロイメント設定のサンプルは、/usr/share/pki/server/examples/installation/tps.cfg にあります。
  2. 以下のコマンドを実行します。

    $ pkispawn -f tps.cfg -s TPS

Tomcat インスタンス (デフォルトは pki-tomcat) に TPS サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/tps/alias
注記

TPS が新しいシステムにインストールされており、他のサブシステムがない場合は、CA のルート証明書を提供する必要があります。pki_cert_chain_path に CA PKCS#7 PEM ファイルへのパスを指定します。そうすることで、サーバーはセキュリティードメインに接続するときに CA の SSL サーバー証明書を検証できます。TPS をインストールする前に CA ルート証明書 (公開鍵のみ) をシステムに安全に転送するのは管理者の責任です。

7.4.5.1.2. システム証明書の確認

サーバー NSS データベースに次の証明書が含まれていることを確認します。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ca_signing                                                   CT,C,C
subsystem                                                    u,u,u
tps_audit_signing                                            u,u,Pu
sslserver                                                    u,u,u
7.4.5.1.3. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して TPS サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin tps-user-show tpsadmin
    ---------------
    User "tpsadmin"
    ---------------
      User ID: tpsadmin
      Full name: tpsadmin
      Email: tpsadmin@example.com
      Type: adminType
      State: 1
      TPS Profiles:
        All Profiles
7.4.5.2. HSM を使用した TPS のインストール

システム証明書とそのキーが HSM に保存されている TPS サブシステムをインストールするには、このプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.5.2.1. TPS サブシステムのインストール
  1. デプロイメント設定が含まれるファイル (例: tps.cfg) を準備します。

    [DEFAULT]
    pki_instance_name=pki-tomcat
    pki_https_port=8443
    pki_http_port=8080
    pki_server_database_password=Secret.123
    
    pki_hsm_enable=True
    pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so
    pki_hsm_modulename=softhsm
    pki_token_name=HSM
    pki_token_password=Secret.HSM
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    [TPS]
    pki_admin_cert_file=ca_admin.cert
    pki_admin_email=tpsadmin@example.com
    pki_admin_name=tpsadmin
    pki_admin_nickname=tpsadmin
    pki_admin_password=Secret.123
    pki_admin_uid=tpsadmin
    
    pki_client_pkcs12_password=Secret.123
    
    pki_ds_url=ldap://localhost.localdomain:389
    pki_ds_base_dn=dc=tps,dc=pki,dc=example,dc=com
    pki_ds_database=tps
    pki_ds_password=Secret.123
    
    pki_security_domain_name=EXAMPLE
    pki_security_domain_user=caadmin
    pki_security_domain_password=Secret.123
    
    pki_audit_signing_nickname=tps_audit_signing
    pki_sslserver_nickname=sslserver
    pki_subsystem_nickname=subsystem
  2. 以下のコマンドを実行します。

    $ pkispawn -f tps.cfg -s TPS

Tomcat インスタンス (デフォルトは pki-tomcat) に TPS サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/tps/alias
7.4.5.2.2. システム証明書の確認
  1. 内部トークンに次の証明書が含まれていることを確認します。

    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
    
    Certificate Nickname                                         Trust Attributes
                                                                 SSL,S/MIME,JAR/XPI
    
    ca_signing                                                   CT,C,C
    tps_audit_signing                                            ,,P
  2. HSM に次の証明書が含まれていることを確認します。

    $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd
    
    Certificate Nickname                                         Trust Attributes
                                                                 SSL,S/MIME,JAR/XPI
    
    HSM:subsystem                                                u,u,u
    HSM:tps_audit_signing                                        u,u,Pu
    HSM:sslserver                                                u,u,u
7.4.5.2.3. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して TPS サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin tps-user-show tpsadmin
    ---------------
    User "tpsadmin"
    ---------------
      User ID: tpsadmin
      Full name: tpsadmin
      Email: tpsadmin@example.com
      Type: adminType
      State: 1
      TPS Profiles:
        All Profiles
7.4.5.3. LDAPS 接続を使用した TPS のインストール

セキュアなデータベース接続を使用して TPS サブシステムをインストールするには、次のプロセスに従います。

インストールの前に、インストールの前提条件 が設定されていることを確認してください。

7.4.5.3.1. DS 設定

DS インスタンスの作成時に DS ブートストラップ証明書を使用することを選択した場合は、上記の前提条件を完了した後、次のようにブートストラップ自己署名証明書を ds_signing.crt にエクスポートします。

$ certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt
7.4.5.3.2. TPS サブシステムのインストール
  1. デプロイメント設定が含まれるファイル (例: tps.cfg) を準備します。

    [DEFAULT]
    pki_instance_name=pki-tomcat
    pki_https_port=8443
    pki_http_port=8080
    pki_server_database_password=Secret.123
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    [TPS]
    pki_admin_cert_file=ca_admin.cert
    pki_admin_email=tpsadmin@example.com
    pki_admin_name=tpsadmin
    pki_admin_nickname=tpsadmin
    pki_admin_password=Secret.123
    pki_admin_uid=tpsadmin
    
    pki_client_pkcs12_password=Secret.123
    
    pki_ds_url=ldaps://localhost.localdomain:636
    pki_ds_secure_connection_ca_nickname=ds_signing
    pki_ds_secure_connection_ca_pem_file=ds_signing.crt
    
    pki_ds_base_dn=dc=tps,dc=pki,dc=example,dc=com
    pki_ds_database=tps
    pki_ds_password=Secret.123
    
    pki_security_domain_name=EXAMPLE
    pki_security_domain_user=caadmin
    pki_security_domain_password=Secret.123
    
    pki_audit_signing_nickname=tps_audit_signing
    pki_sslserver_nickname=sslserver
    pki_subsystem_nickname=subsystem
  2. 以下のコマンドを実行します。

    $ pkispawn -f tps.cfg -s TPS

Tomcat インスタンス (デフォルトは pki-tomcat) に TPS サブシステムがインストールされ、次の NSS データベースが作成されます。

  • サーバー NSS データベース: /var/lib/pki/pki-tomcat/conf/alias
  • 管理者 NSS データベース: ~/.dogtag/pki-tomcat/tps/alias
7.4.5.3.3. システム証明書の確認

サーバー NSS データベースに次の証明書が含まれていることを確認します。

$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

ds_signing                                                   CT,C,C
ca_signing                                                   CT,C,C
subsystem                                                    u,u,u
tps_audit_signing                                            u,u,Pu
sslserver                                                    u,u,u
7.4.5.3.4. データベース設定の検証

TPS データベースがセキュアな接続で設定されていることを確認します。

$ pki-server tps-db-config-show
  Hostname: pki.example.com
  Port: 636
  Secure: true
  Authentication: BasicAuth
  Bind DN: cn=Directory Manager
  Bind Password Prompt: internaldb
  Database: tps
  Base DN: dc=tps,dc=pki,dc=example,dc=com
  Multiple suffix: false
  Maximum connections: 15
  Minimum connections: 3
7.4.5.3.5. 管理者証明書の検証
  1. CA 署名証明書をインポートします。

    $ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
  2. 次のコマンドを使用して、管理者証明書とキーをクライアント NSS データベース (デフォルトでは ~/.dogtag/nssdb) にインポートします。

    $ pki -c Secret.123 pkcs12-import \
        --pkcs12 ca_admin_cert.p12 \
        --pkcs12-password Secret.123
  3. 次のコマンドを実行して、管理者証明書を使用して TPS サブシステムにアクセスできることを確認します。

    $ pki -c Secret.123 -n caadmin tps-user-show tpsadmin
    ---------------
    User "tpsadmin"
    ---------------
      User ID: tpsadmin
      Full name: tpsadmin
      Email: tpsadmin@example.com
      Type: adminType
      State: 1
      TPS Profiles:
        All Profiles
7.4.5.3.6. CA から実際の DS 証明書を取得する

必要に応じて、この手順 に従って、CA が発行した実際の DS 証明書を取得します。

7.4.6. EST サブシステムのインストール

7.4.6.1. EST のインストール

EST サブシステム をインストールするには、次のプロセスに従います。

EST サブシステム には、インスタンスが実行されるサーバーに dogtag-pki-est パッケージがインストールされている必要があります。

# dnf install dogtag-pki-est
7.4.6.1.1. 前提条件

CA 上に、EST RA アカウント (EST RA Agents) のユーザーグループと、EST RA アカウント (est-ra-1) を作成する。EST サブシステムはこのアカウントを使用して CA サブシステムに対して認証し、EST クライアントに代わって証明書を発行します。

注記: 以下のコマンドは、CA がデフォルトポートを使用して同じホスト上で実行されており、nssdb が ~/.dogtag/nssdb にあることを前提としています。別のホストまたは別のポートの CA を指定するには、-h <hostname>-p <port_number>、または -U <CA_uri のオプションを使用します。別の nssdb を使用するには、-d <nssdb_path> オプションを使用します。

# pki -n caadmin ca-group-add "EST RA Agents"
---------------------------
Added group "EST RA Agents"
---------------------------
  Group ID: EST RA Agents

# pki -n caadmin ca-user-add \
      est-ra-1 --fullName "EST RA 1" --password password4ESTUser
---------------------
Added user "est-ra-1"
---------------------
  User ID: est-ra-1
  Full name: EST RA 1
# pki -n caadmin ca-group-member-add "EST RA Agents" est-ra-1
-----------------------------
  Added group member "est-ra-1"
-----------------------------
  User: est-ra-1

EST 登録プロファイル estServiceCert.cfg を追加して有効にします。これは、dogtag-pki-ca パッケージがインストールされていれば /usr/share/pki/ca/プロファイル/ca にあります。

# pki -n caadmin ca-profile-add --raw /usr/share/pki/ca/profiles/ca/estServiceCert.cfg
----------------------------
Added profile estServiceCert
----------------------------
# pki -n caadmin ca-profile-enable estServiceCert
--------------------------------
Enabled profile "estServiceCert"
--------------------------------

注記: プロファイルを有効にする前に、オプションがデプロイメント要件を満たしているか確認してください。

EST サブシステムには、別のユーザー DB を持つ独自のレルム認証があります。LDAPPostreSQL、ファイルベースの DB がサポートされています。認証が機能するには、事前に DB を準備する必要があります。ユーザー DB の設定手順については、EST レルム DB の設定 を参照してください。

7.4.6.1.2. EST サブシステムのインストール

インストールには 2 つのオプションがあります。

  • pkispawn を使用した基本的なインストール。EST pkispawn のインストール を参照してください。
  • pki-server を使用した高度なインストール。EST pki-server のインストール を参照してください。より多くの手動設定が必要になりますが、各ステップを検証し、後でカスタマイズして繰り返すことができるため、インストールプロセスをより細かく制御できます。
7.4.6.1.3. EST の検証

証明書を登録する前に、EST ユーザーをユーザーデータベースに追加する必要があります。ユーザー管理は EST コマンドに含まれていないため、EST 外で実行する必要があります。各データベースプラットフォームにユーザーを追加する方法については、管理ガイドを参照してください。

curl を使用して、EST サブシステム がデプロイされ、CA サブシステム と通信できることを確認します。

次のコマンドは、サーバーから取得した CA 署名証明書を出力します。

$ curl --cacert ./ca_signing.crt  https://<EST_HOSTNAME>:<EST_PORT>/.well-known/est/cacerts | openssl base64 -d | openssl pkcs7 -inform der -print_certs | openssl x509 -text -noout

$EST_HOSTNAME$EST_PORT は、それぞれ EST サブシステム のホスト名とポートに置き換えます。

成功すると、サーバーの CA 証明書チェーンが標準出力に出力され、コマンドはステータス 0 (成功) で終了します。

curl を使用して登録をテストするには、CSR を生成し、レルムに関連付けられた EST ユーザー DB のユーザーを使用して送信します。次のコマンドは、登録を実行し、最終証明書を出力します。

$ pki nss-cert-request --csr testServer.csr \
    --ext /usr/share/pki/server/certs/sslserver.conf --subject 'CN=test.example.com'
$ openssl req -in testServer.csr -outform der | openssl base64 -out testServer.p10

$ curl --cacert ./ca_signing.crt --anyauth -u est-test-user:Secret.123 \
    --data-binary @testServer.p10 -H "Content-Type: application/pkcs10" \
    -o newCert.p7 https://<EST_HOSTNAME>:<EST_PORT>/.well-known/est/simpleenroll

$ openssl base64 -d -in newCert.p7 | openssl pkcs7 -inform der -print_certs | openssl x509 -text -noout

注記: testServer.p10 ファイルは、base64 でエンコードされた、ヘッダー/フッターがない pkcs10 DER です。

上記の curl コマンドで相互 TLS 認証を使用して登録する場合は、次のように認証情報を証明書と関連するキーに置き換える必要があります。

$ curl --cacert ./ca_signing.crt --cert cert.pem --key key-x-x.pem \
    --data-binary @testServer.p10 -H "Content-Type: application/pkcs10"
    -o newCert.p7 https://<EST_HOSTNAME>:<EST_PORT>/.well-known/est/simpleenroll

相互 TLS 認証を実行する場合、認可されるためには、CSR のサブジェクトと SAN が、認証に使用される証明書のサブジェクトと SAN と一致している必要があります。一方、Basic 認証を使用すると、CSR のサブジェクトと SAN はユーザーのフルネームまたはユーザー ID で検証されます。simpleenroll 操作では、このチェックを無効にできます。このチェックを無効にするには、/etc/pki/<instance_name>/est/authorizer.conf ファイルに次のオプションを追加します。

enrollMatchTLSSubjSAN=false
7.4.6.2. pkispawn を使用した EST のインストール

EST のインストール の前提条件が設定されると、EST をインストールできるようになります。

7.4.6.2.1. インストール

次の内容の pkispawn インストール設定サンプルが /usr/share/pki/server/examples/installation/est.cfg にあります。

[DEFAULT]
pki_server_database_password=Secret.123
pki_admin_setup=False

[EST]
est_realm_type=ds
est_realm_url=ldap://localhost.localdomain:389
est_realm_bind_password=Secret.123
est_ca_user_name=est-ra-1
est_ca_user_password=Secret.est
pki_sslserver_nickname=sslserver

次のコマンドは、CA サブシステムがすでに含まれている PKI サーバーインスタンスに EST サブシステムをインストールします。デフォルトでは、PKI サーバーインスタンスは pki-tomcat と呼ばれ、HTTP ポート 8080 と HTTPS ポート 8443 を使用します。別のインスタンス名やポート番号を使用する場合は、コマンドの man ページを参照してください。

CA の同じインスタンスと DS レルムに EST をインストールするには、次のコマンドを実行します。

# pkispawn \
    -f /usr/share/pki/server/examples/installation/est.cfg \
    -s EST \
    -D est_realm_url=ldap://estds.example.com:389 \
    -v

est_realm_url は、ユーザー DB を指していることに注意してください。デプロイメントに応じて変更できるその他の設定は次のとおりです。

est_ca_profile=estServiceCert
est_ca_user_name=
est_ca_user_password=
est_ca_user_password_file=
est_ca_user_certificate=
est_realm_type=
est_realm_custom=
est_realm_url=
est_realm_auth_type=BasicAuth
est_realm_bind_dn=cn=Directory Manager
est_realm_bind_password=
est_realm_nickname=
est_realm_user=
est_realm_username=
est_realm_password=
est_realm_users_dn=ou=people,dc=est,dc=pki,dc=example,dc=com
est_realm_groups_dn=ou=groups,dc=est,dc=pki,dc=example,dc=com
est_realm_statements=/usr/share/pki/est/conf/realm/postgresql/statements.conf
est_authorizer_exec_path=/usr/share/pki/est/bin/estauthz

est_ca_* は、EST サブシステムの CA で設定されたユーザーとプロファイルに関連する情報を提供します。

est_authorizer_exec_path は、認可を検証する実行可能ファイルへのパスです。デフォルトスクリプトの estauthz は、ユーザーが estclient ロールを持っているかどうかのみをチェックする単純な認可例です。

est_realm_* オプションを使用すると、レルムをカスタマイズできます。使用可能なタイプは、ds、postgresql、in-memory です。

たとえば、PostgreSQL で EST をインストールするコマンドは次のようになります。

# pkispawn \
    -f /usr/share/pki/server/examples/installation/est.cfg \
    -s EST \
    -D est_realm_url="jdbc:postgresql://postgresql.example.com:5432/est?ssl=true&sslmode=require" \
    -D est_realm_type=postgresql \
    -D est_realm_user=est \
    -D est_realm_password=mysecretpassword \
    -v

est_realm_custom は Tomcat のカスタムレルム設定へのパスで、これを指定すると他のすべてのレルム関連の設定が上書きされます。

7.4.6.2.1.1. 証明書を使用した別のインスタンスへのインストール

EST は、CA とは別の Tomcat インスタンスにインストールすることもできます。

別のインスタンスに EST をインストールするには、上記の設定に加えて、証明書を設定するための追加の手順がいくつか必要です。

注記: 以下のコマンドは、CA がデフォルトポートを使用して同じホスト上で実行されており、nssdb が ~/.dogtag/nssdb にあることを前提としています。別のホストまたは別のポートの CA を指定するには、-h <hostname>-p <port_number>、または -U <CA_uri のオプションを使用します。別の nssdb を使用するには、-d <nssdb_path> オプションを使用します。

以下に示すとおり、EST サーバー証明書 (および CA に接続するためのサブシステム証明書) を事前に発行し、pkispawn コマンドラインの pki_server_pkcs12_* パラメーターで提供される PKCS#12 バンドル内の完全なチェーンと併せて pkispawn に提供する必要があります。

PKCS#12 内の証明書エイリアスが、EST で使用されるニックネームと一致することが重要です。SSL 証明書の場合、est.cfg で設定されるニックネームは sslserver です。ただし、これは変更できます。

証明書を使用して PKCS12 を作成するには、CA から EST のサーバー証明書 (および後で RA ユーザー証明書) を要求し、次のようにエクスポートします。

# pki nss-cert-request --csr estSSLServer.csr \
    --ext /usr/share/pki/server/certs/sslserver.conf --subject 'CN=est.example.com'

# pki -n caadmin \
    ca-cert-issue \
    --csr-file estSSLServer.csr \
    --profile caServerCert \
    --output-file estSSLServer.crt

# pki nss-cert-import --cert estSSLServer.crt sslserver

# pki pkcs12-cert-import sslserver --pkcs12-file $SHARED/est_server.p12 --pkcs12-password Secret.123

同様に、EST のサブシステム証明書を生成するには、CA で以前に設定した EST RA ユーザー (est-ra-1) に関連付け、SSL サーバー証明書と同じ PKCS12 に追加します。

# pki nss-cert-request --csr est-ra-1.csr \
    --ext /usr/share/pki/server/certs/admin.conf \
    --subject 'CN=EST Subsystem Certificate,OU=pki-tomcat,O=EXAMPLE'

# pki -n caadmin -cert-issue \
    --csr-file est-ra-1.csr \
    --profile caSubsystemCert \
    --output-file est-ra-1.crt

# pki nss-cert-import --cert est-ra-1.crt "est-ra-1"

# pki -n caadmin ca-user-cert-add est-ra-1 --input est-ra-1.crt

# pki pkcs12-cert-import "est-ra-1" --pkcs12-file $SHARED/est_server.p12 --pkcs12-password Secret.123 --append

生成された PKCS#12 バンドルを使用して EST をデプロイするコマンドは次のとおりです。

# pkispawn \
    -f /usr/share/pki/server/examples/installation/est.cfg \
    -s EST \
    -D est_realm_url=ldap://estds.example.com:389 \
    -D pki_ca_uri=https://ca.example.com:8443 \
    -D est_ca_user_password= \
    -D est_ca_user_certificate=est-ra-1 \
    -D pki_server_pkcs12_path=est_server.p12 \
    -D pki_server_pkcs12_password=Secret.123 \
    -v
7.4.6.2.1.2. 証明書なしで別のインスタンスにインストールする

インストール中に PKCS#12 バンドル証明書が pkispawn に提供されない場合、EST 用に設定されたプロファイルを使用して EST サーバー証明書が自動的に発行されます。CA との接続には、設定ファイルで提供される認証情報 (ユーザー名/パスワード) が使用されます。このような場合、CA 署名証明書が必要になります。証明書の取得は、CA サーバーで次のコマンドを使用して実行できます。

# pki-server cert-export ca_signing --cert-file ca_signing.crt

次のコマンドで EST をインストールできます。

# pkispawn \
    -f /usr/share/pki/server/examples/installation/est.cfg \
    -s EST \
    -D est_realm_url=ldap://estds.example.com:389 \
    -D pki_ca_uri=https://ca.example.com:8443 \
    -D pki_cert_chain_path=ca_signing.crt \
    -D pki_cert_chain_nickname=caSigning \
    -v

EST でリリースされた証明書がサーバー用でない場合は、インストール後、別のプロファイルを使用して EST サーバー証明書を新しい証明書に更新できます。さらに、TLS 認証用の証明書を EST nssdb に追加し、/var/lib/pki/pki-tomcat/conf/est/backend.conf ファイルで設定することもできます。

7.4.6.2.2. EST の削除

EST サブシステムを削除するには、次のように pkidestroy コマンドを使用できます。

# pkidestroy -s EST -v

注記: 設定フォルダーとログフォルダーは削除されません。すべてを削除するには、--remove-conf --remove-logs オプションを追加します。

7.4.6.3. pki-server を使用した EST のインストール

EST のインストール の前提条件が設定されると、EST をインストールできるようになります。

PKI Tomcat インスタンスがすでに利用可能になっている必要があります。存在しない場合は、pki-server create を使用して新しいインスタンスを作成できます (詳細は、こちら を参照してください)。

pki サーバーインスタンス内に EST サブシステム を作成します。

# pki-server est-create

発行バックエンドを設定します。クラス org.dogtagpki.est.DogtagRABackend は、EST インスタンスが CA と通信するために使用されます。これには以下の要件があります。

  • CA サブシステムを指す url パラメーター。
  • 設定された登録プロファイルを使用して証明書の発行を要求するアカウントを認可する、次のいずれかの方法を使用した EST RA アカウントの認証情報。

    • EST RA アカウントの場合は ユーザー名パスワード
    • EST RA アカウントに属する TLS クライアント証明書
  • 登録 プロファイル
# cat >/var/lib/pki/pki-tomcat/conf/est/backend.conf <<EOF
class=org.dogtagpki.est.DogtagRABackend
url=https://$(hostname):8443
profile=estServiceCert
username=est-ra-1
password=password4ESTUser
EOF

注記: ユーザー名/パスワード の代わりに TLS 相互認証を使用するには、以下を実行する必要があります。

  • EST インスタンスの暗号トークンを使用してインスタンスエイリアスディレクトリーにキーと CSR を生成し、CA から TLS クライアント証明書の発行を取得します。
  • 証明書を EST インスタンスの暗号トークンにインポートします。
  • nickname パラメーターにニックネームを割り当てます (usernamepassword は省略します)。
  • 証明書を、CA の EST RA ユーザーアカウントに追加します。

証明書を取得して TLS 相互設定を使用して EST を設定する方法の例は、こちらpkispawn インストールガイドに記載されています。

要求の認可を設定します。クラス org.dogtagpki.est.ExternalProcessRequestAuthorizer を使用すると、executable パラメーターで設定された外部プロセスに認可を移譲できます。

# cat >/var/lib/pki/pki-tomcat/conf/est/authorizer.conf <<EOF
class=org.dogtagpki.est.ExternalProcessRequestAuthorizer
executable=/usr/share/pki/est/bin/estauthz
EOF

この例の実行可能スクリプトは、/usr/share/pki/est/bin/estauthz にあり、ユーザーロールの簡単なチェックを実行します。より高度な認可フレームワークを導入する必要がある場合は、これを置き換えることができます。

EST アプリケーションをデプロイします。

# pki-server est-deploy

認証を設定します。認証により、Tomcat からのレルム、または dogtag 用に開発されたレルムを使用できるようになります。例として、メモリー内のレルムを使用します。

# cat >/var/lib/pki/pki-tomcat/conf/est/realm.conf <<EOF
class=com.netscape.cms.realm.PKIInMemoryRealm
username=alice
password=4me2Test
roles=estclient
EOF

最後に、サーバーを再起動します。

# pki-server restart --wait
7.4.6.4. EST レルム DB の設定
7.4.6.4.1. DS DB の準備

ユーザー管理に LDAP インスタンスを使用することを選択した場合は、ユーザーを追加する前に、必ず Directory Server を設定して基本のエントリーを追加する必要があります。Directory Server のセットアップ手順については、インストールの前提条件 を参照してください。

ユーザー DB には、ユーザー用のグループノードとグループ用のグループノードが必要です。シンプルな ldif ファイルは /usr/share/pki/est/conf/realm/ds/create.ldif にあります。この場合のベース DN は dc=pki,dc=example,dc=com ですが、次の EST インストール時に変更して新しい値を指定できます。ファイルは次のコマンドでインポートできます。

ldapadd -x -H ldap://<ds_server_hostname>:<ds_server_port> \
    -D "cn=Directory Manager"  -w Secret.123 \
    -f /usr/share/pki/est/conf/realm/ds/create.ldif

このコマンドを実行すると、ユーザーが EST にアクセスするためのデフォルトグループとして使用される EST Users グループも作成されます。別のグループを使用するには、認可スクリプト /usr/share/pki/est/bin/estauthz を変更する必要があります。

7.4.6.4.2. PostgreSQL DB の準備

ユーザー管理に PostgreSQL を使用することを選択した場合は、まずデータベースにアクセスするためのデータベース (たとえば est) を準備する必要があります。インストール手順については、こちら を参照してください。

インストール後、次のコマンドでデータベース接続を確認します。

$ psql -U est -d est

PostreSQL DB を使用するには、/usr/share/pki/est/conf/realm/postgresql/create.sql にある sql ファイルを使用してユーザーテーブルを作成し、ユーザー情報を入力する必要があります。テーブルは次のコマンドで作成できます。

$ psql -U est -t -A -f /usr/share/pki/est/conf/realm/postgresql/create.sql

このコマンドを実行すると、ユーザーが EST にアクセスするためのデフォルトグループとして使用される EST Users グループも作成されます。別のグループを使用するには、認可スクリプト /usr/share/pki/est/bin/estauthz を変更する必要があります。

異なるスキーマを使用することは可能ですが、この場合は DB からユーザー情報を取得するために、カスタムの statement.conf ファイル (同じフォルダーにあります) を提供する必要があります。

さらに、PostgreSQL 用の Java ドライバーを EST サーバーにインストールし、pki のライブラリーフォルダーにリンクする必要があります。

# dnf install -y postgresql-jdbc
# ln -s /usr/share/java/postgresql-jdbc/postgresql.jar /usr/share/pki/server/common/lib
# ln -s /usr/share/java/ongres-scram/client.jar /usr/share/pki/server/common/lib
# ln -s /usr/share/java/ongres-scram/common.jar /usr/share/pki/server/common/lib
# ln -s /usr/share/java/ongres-stringprep/saslprep.jar /usr/share/pki/server/common/lib/
# ln -s /usr/share/java/ongres-stringprep/stringprep.jar /usr/share/pki/server/common/lib/

7.5. インストール後のタスク

pkispawn ユーティリティーを使用したインストールが完了したら、サイトの設定に応じて、さらに設定をカスタマイズすることができます。詳細は、パートIII「Certificate System の設定」で説明してください。

このセクションでは、デプロイメントのセキュリティーを強化するために、パートIII「Certificate System の設定」 からの操作のリストを紹介します。

7.5.1. Red Hat Certificate System の日付/時刻の設定

RHCS を実行するための時間を正しく設定しておくことが重要です。Red Hat Certificate System 管理ガイド日時の設定 セクションを参照してください。

7.5.2. 実際の CA から発行された DS 証明書を取得する

実際の CA によって発行された DS 証明書を取得するには、pki CLI (man pki-client を実行) コマンドを使用してこのプロセスを実行します。

このセクションでは、localhost という名前の DS インスタンスがすでに存在していることを前提としています。

このセクションでは、次の 2 つの条件について説明します。

  • DS インスタンスにはまだ SSL サーバー証明書 (ブートストラップなど) がなく、ここで実際のサーバー証明書を作成する。
  • DS インスタンスにはブートストラップ SSL サーバー証明書があり、それを置き換える必要がある。

証明書を発行するために、実際の信頼済み CA が利用可能であることを前提としています。

7.5.2.1. CA 署名証明書のエクスポート
pki-server cert-export ca_signing --cert-file ca_signing.crt
7.5.2.2. DS サーバー証明書の作成
7.5.2.2.1. DS サーバーの CSR の生成

DS 管理者として、以下を実行します。

$ pki \
    -d /etc/dirsrv/slapd-localhost \
    -C /etc/dirsrv/slapd-localhost/pwdfile.txt \
    nss-cert-request \
    --subject "CN=server.example.com" \
    --subjectAltName "critical, DNS:server.example.com" \
    --csr ds_server.csr

注記: 証明書のサブジェクト DN と SAN が、システムのホスト名と一致していることを確認してください。

7.5.2.2.2. DS サーバー証明書要求の送信:

DS 管理者として、以下を実行します。

$ pki ca-cert-request-submit --profile caServerCert --csr-file ds_server.csr
7.5.2.2.3. 証明書要求の承認:

PKI エージェントとして、以下を実行します。

$ pki -n caadmin ca-cert-request-review <request ID> --action approve
7.5.2.3. 証明書の取得

DS 管理者ユーザーとして証明書を取得します。

$  pki ca-cert-export <certificate ID> --output-file ds_server.crt
7.5.2.4. DS インスタンスの停止

NSS データベースを変更する前に、DS インスタンスを停止します。

$ dsctl localhost stop
7.5.2.5. CA 署名証明書のインポート

DS 管理者として、CA 署名証明書を DS インスタンスの nssdb にインポートします。

# pki \
    -d /etc/dirsrv/slapd-localhost \
    -C /etc/dirsrv/slapd-localhost/pwdfile.txt \
    nss-cert-import \
    --cert ca_signing.crt \
    --trust CT,C,C \
    "CA Signing Cert"
7.5.2.6. DS ブートストラップ証明書の削除

すでに boostrap DS 証明書がある場合は、それを削除します。

$ certutil -F -d /etc/dirsrv/slapd-localhost \
    -f /etc/dirsrv/slapd-localhost/pwdfile.txt \
    -n Server-Cert
$ certutil -F -d /etc/dirsrv/slapd-localhost \
    -f /etc/dirsrv/slapd-localhost/pwdfile.txt \
    -n Self-Signed-CA
7.5.2.7. DS サーバー証明書のインポート:
$ pki \
    -d /etc/dirsrv/slapd-localhost \
    -C /etc/dirsrv/slapd-localhost/pwdfile.txt \
    nss-cert-import \
    --cert ds_server.crt \
    Server-Cert

DS サーバー証明書を検証するには、以下を実行します。

$ certutil -L -d /etc/dirsrv/slapd-localhost -n Server-Cert
...
    Certificate Trust Flags:
        SSL Flags:
            User
        Email Flags:
            User
        Object Signing Flags:
            User
7.5.2.8. SSL 接続の有効化

このセクションは、以前に DS で SSL を有効にしていない場合にのみ適用されます。

  1. DS インスタンスで SSL 接続を有効にするには、以下を実行します。

    $ dsconf localhost config replace nsslapd-security=on
  2. DS インスタンスを起動します。

    $ dsctl localhost start
  3. SSL 接続を確認します。

    $ LDAPTLS_REQCERT=never ldapsearch \
        -H ldaps://$HOSTNAME:636 \
        -x \
        -D "cn=Directory Manager" \
        -w Secret.123 \
        -b "" \
        -s base
7.5.2.9. PKI インスタンスから DS ブートストラップ署名証明書を削除する

DS ブートストラップ証明書を置き換える場合は、PKI 管理者として PKI を停止し、次のように PKI nssdb から DS ブートストラップ署名証明書を削除します。

$ certutil -F -d /var/lib/pki/pki-tomcat/conf/alias \
    -f /var/lib/pki/pki-tomcat/conf/alias/pwdfile.txt \
    -n ds_signing

PKI を起動します。

7.5.2.10. 関連情報

7.5.3. ブートストラップ証明書を使用して DS で SSL 接続を有効にする

すでにアクティブな信頼済み CA があり、DS のサーバー証明書を発行する必要がある場合は、このセクション を参照してください。

pki CLI (man pki-client を実行) コマンドを使用してこのプロセスを実行し、ブートストラップ DS 自己署名証明書とそれによって発行されるブートストラップサーバー証明書を作成して、DS で SSL 接続を有効にします。

このセクションでは、localhost という名前の DS インスタンスがすでに存在し、証明書がなく、SSL 接続が無効になっていることを前提としています。

注記: 新しい DS バージョンでは、証明書が作成され、SSL 接続がデフォルトで有効になっているため、通常はこの手順に従う必要はありません。

7.5.3.1. DS 署名証明書の作成
  1. 次のコマンドで DS 署名 CSR を生成します。

    $ pki \
        -d /etc/dirsrv/slapd-localhost \
        -C /etc/dirsrv/slapd-localhost/pwdfile.txt \
        nss-cert-request \
        --subject "CN=DS Signing Certificate" \
        --ext /usr/share/pki/server/certs/ca_signing.conf \
        --csr ds_signing.csr
  2. DS 署名証明書を発行します。

    $ pki \
        -d /etc/dirsrv/slapd-localhost \
        -C /etc/dirsrv/slapd-localhost/pwdfile.txt \
        nss-cert-issue \
        --csr ds_signing.csr \
        --ext /usr/share/pki/server/certs/ca_signing.conf \
        --cert ds_signing.crt
  3. DS 署名証明書をインポートします。

    $ pki \
        -d /etc/dirsrv/slapd-localhost \
        -C /etc/dirsrv/slapd-localhost/pwdfile.txt \
        nss-cert-import \
        --cert ds_signing.crt \
        --trust CT,C,C \
        Self-Signed-CA
  4. DS 署名証明書を確認します。

    $ certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA
    ...
        Certificate Trust Flags:
            SSL Flags:
                Valid CA
                Trusted CA
                User
                Trusted Client CA
            Email Flags:
                Valid CA
                Trusted CA
                User
            Object Signing Flags:
                Valid CA
                Trusted CA
                User
7.5.3.2. DS サーバー証明書の作成
  1. 次のコマンドで DS サーバーの CSR を生成します。

    $ pki \
        -d /etc/dirsrv/slapd-localhost \
        -C /etc/dirsrv/slapd-localhost/pwdfile.txt \
        nss-cert-request \
        --subject "CN=$HOSTNAME" \
        --subjectAltName "critical, DNS:$HOSTNAME" \
        --ext /usr/share/pki/server/certs/sslserver.conf \
        --csr ds_server.csr
  2. DS サーバー証明書を発行します。

    $ pki \
        -d /etc/dirsrv/slapd-localhost \
        -C /etc/dirsrv/slapd-localhost/pwdfile.txt \
        nss-cert-issue \
        --issuer Self-Signed-CA \
        --csr ds_server.csr \
        --ext /usr/share/pki/server/certs/sslserver.conf \
        --cert ds_server.crt
  3. DS サーバー証明書のインポート:

    $ pki \
        -d /etc/dirsrv/slapd-localhost \
        -C /etc/dirsrv/slapd-localhost/pwdfile.txt \
        nss-cert-import \
        --cert ds_server.crt \
        Server-Cert
  4. DS サーバー証明書を確認します。

    $ certutil -L -d /etc/dirsrv/slapd-localhost -n Server-Cert
    ...
        Certificate Trust Flags:
            SSL Flags:
                User
            Email Flags:
                User
            Object Signing Flags:
                User
7.5.3.3. SSL 接続の有効化
  1. DS インスタンスで SSL 接続を有効にするには、以下を実行します。

    $ dsconf localhost config replace nsslapd-security=on
  2. DS インスタンスを再起動します。

    $ dsctl localhost restart
  3. SSL 接続を確認します。

    $ LDAPTLS_REQCERT=never ldapsearch \
        -H ldaps://$HOSTNAME:636 \
        -x \
        -D "cn=Directory Manager" \
        -w Secret.123 \
        -b "" \
        -s base
7.5.3.4. 関連情報

7.5.4. CS から DS への TLS 相互認証を有効にする

注記

このセクションでは、ルート CA をインストールして実行する必要があります。ブートストラップ自己署名 LDAP サーバー証明書を使用している場合は、最初にそれを 「実際の CA から発行された DS 証明書を取得する」 のとおり置き換えます。以下の手順は、インストールの完了後に実行します。

TLS クライアント認証を有効にすることを選択した場合は、CS サブシステムのインストール時に基本的な TLS サーバー認証を設定して実行すると、逆戻りして、特定のサブシステムから LDAP サーバーへのクライアント認証の有効化を試みることができます。

クライアント認証の設定には 2 つの部分があります。最初の部分は、TLS の相互認証を必要とする LDAP ディレクトリーを設定します。この手順は、Red Hat Directory Server 管理ガイド証明書ベースのクライアント認証の使用 を参照してください。

以下の点に注意してください。

  • pkispawn は、すでに内部 Directory Server 上に pkidbuser を自動的に作成しており、そこにはアウトバウンド TLS クライアント認証に使用される CS "インスタンスのサブシステム証明書" (たとえば subsystemCert cert-pki-ca) がユーザーエントリーに格納されています。したがって、TLS クライアント認証用に別の LDAP ユーザーまたは別の証明書を作成する必要はありません。
  • /etc/dirsrv/slapd-instance_name/certmap.conf のコンテンツを作成する場合は、以下の形式を使用します。

    certmap rhcs <certificate issuer DN>
    		rhcs:CmapLdapAttr seeAlso
    		rhcs:verifyCert on

    以下に例を示します。

    certmap rhcs CN=CA Signing Certificate,OU=pki-tomcat-ca,O=pki-tomcat-ca-SD
    		rhcs:CmapLdapAttr seeAlso
    		rhcs:verifyCert on
  • 設定後に、Directory Server を再起動します。

2 番目の部分は、Red Hat Certificate System インスタンスに設定を追加して、TLS 相互認証を使用して内部 LDAP サーバーと通信するために使用するポートと証明書を認識できるようにすることです。これには、<instance directory>/<subsystem type>/conf/CS.cfg にある RHCS インスタンスの CS.cfg ファイルを編集する必要があります。たとえば、/var/lib/pki/ instance_name/ca/conf/CS.cfg です。

CS.cfg で、RHCS インスタンスのサブシステム証明書のニックネームを internaldb.ldapauth.clientCertNickname に追加し、未使用のエントリーを 2 つ削除します。

internaldb.ldapauth.bindDN
		internaldb.ldapauth.bindPWPrompt

以下に例を示します。

internaldb._000=##
		internaldb._001=## Internal Database
		internaldb._002=##
		internaldb.basedn=o=pki-tomcat-ca-SD
		internaldb.database=pki-tomcat-ca
		internaldb.maxConns=15
		internaldb.minConns=3
		internaldb.ldapauth.authtype=SslClientAuth
		internaldb.ldapauth.clientCertNickname=HSM-A:subsystemCert pki-tomcat-ca
		internaldb.ldapconn.host=example.com
		internaldb.ldapconn.port=11636
		internaldb.ldapconn.secureConn=true

インストール後のステップの最後に CS インスタンスを再起動します。

注記

特定の LDAP インスタンスに合わせて、internaldb.basedn および internaldb.database パラメーターを設定する必要があります。

コンプライアンスのために、internaldb.ldapauth.authtype=SslClientAuth および internaldb.ldapconn.secureConn=true を設定する必要があり、internaldb.ldapauth.clientCertNickname の値は、NSS DB で LDAP に対して認証するには、TLS クライアント証明書のニックネームと一致させる必要があります。

その他の値はすべて、環境または可用性の要件を反映するために必要に応じて変更できます。

7.5.5. セッションタイムアウトの設定

さまざまなタイムアウト設定がシステムに存在し、終了前に TLS セッションがアイドル状態の意地する時間に影響を与える可能性があります。詳細は、「セッションタイムアウト」 を参照してください。

7.5.6. CRL または証明書の公開

CRL 公開は、OCSP サービスを提供する際に重要です。証明書の公開は任意になりますが、多くの場合、サイトで必要になります。詳細は、Red Hat Certificate System 管理ガイド証明書および CRL の公開 セクションを参照してください。

7.5.7. 証明書登録プロファイル (CA) の設定

RHCS には、証明書登録プロファイルのカスタマイズを可能にするリッチプロファイルフレームワークがあります。システムで使用できるデフォルトのプロファイルを有効またはにしたり、既存のプロファイルを変更したり、独自のプロファイルを作成することが非常に一般的です。詳細は、15章証明書プロファイルの設定 を参照してください。

7.5.8. アクセスバナーの有効化

ユーザーインターフェイスバナーを有効にするには、「アクセスバナーの有効化」を参照してください。

7.5.9. Watchdog サービスの有効化

ウォッチドッグ (nuxwdog) サービスは、セキュアなシステムパスワード管理を提供します。詳細は、「Watchdog サービスの有効化」 を参照してください。

7.5.10. CMC 登録および失効の設定 (CA)

証明書の登録と失効は CMC で行うことができます。

7.5.11. Java コンソールの TLS クライアント認証

Certificate System 管理者が Java コンソールにログインするときにユーザー TLS クライアント証明書を提示するように要求するには、「TLS クライアント証明書認証を使用するための pkiconsole 要件の設定」 を参照してください。

注記

pkiconsole は非推奨になりました。

7.5.12. ロールユーザーの作成

ブートストラップユーザーを削除できるように、実際のロールユーザーを作成します。

ユーザーを作成して異なる特権ロールに割り当てて、Certificate System を管理するには、18章ロールユーザーの作成 を参照してください。

7.5.13. Bootstrap ユーザーの削除

実際のロールユーザーが作成されると、インストール時に自動的に作成されたブートストラップユーザーは不要になりました。このアカウントを削除するには、個人個人に割り当てられている新しい管理者アカウントを作成したことを確認してから、19章Bootstrap ユーザーの削除 を参照してください。

7.5.14. マルチロールサポートの無効化

ブートストラップユーザーが削除された後にマルチロールサポートを無効にするには、「マルチロールサポートの無効化」 を参照してください。

7.5.15. KRA の設定

7.5.15.1. キーリカバリー認証局 (KRA) に複数のエージェント承認の要件を追加する

複数の KRA エージェントがキーリカバリーを承認するための要件を設定するには、Red Hat Certificate System 管理ガイドコマンドラインでのエージェント承認キーリカバリーの設定 を参照してください。

7.5.15.2. KRA 暗号化設定の設定

キーの暗号化/ラップアルゴリズムを設定する場合は、「KRA 操作の暗号化」 を参照してください。

7.5.16. ユーザーインターフェイスを使用するようにユーザーを設定する

ユーザーが承認されたユーザーインターフェイスを使用する前に、初期化を行う必要があります。ユーザー (管理ロールなど) は、ユーザーインターフェイスにアクセスするためにクライアントを設定するために必要です。Red Hat Certificate System 管理ガイドクライアント NSS データベースの初期化 セクションを参照してください。

7.5.17. 署名付き監査ログの有効化

デフォルトでは、監査ロギングはインストール時に有効になります。ただし、インストール後に、ログ署名を手動で有効にする必要があります。

現在の監査ロギング設定を表示するには、以下を実行します。

# pki-server subsystem-audit-config-show
  Enabled: True
  Log File: audit_signing_log_file
  Buffer Size (bytes): 512
  Flush Interval (seconds): 5
  Max File Size (bytes): 2000
  Rollover Interval (seconds): 2592000
  Expiration Time (seconds): 0
  Log Signing: False
  Signing Certificate: audit_signing_certificate

署名付き監査ログを有効にするには、以下を実行します。

  1. pki-server ユーティリティーを使用して、--logSigning オプションを true に設定します。

    # pki-server subsystem-audit-config-mod --logSigning True
      ...
      Log Signing: True
      ...
  2. インスタンスを再起動します。

    # systemctl restart pki-tomcatd@instance_name.service

    または (nuxwdog watchdog を使用している場合)

    # systemctl start pki-tomcatd-nuxwdog@instance_name.service

7.5.18. 暗号リストの更新

Red Hat Certificate System では、サーバーまたはクライアントとして機能するときに、受け入れ可能な暗号に制限を設定できます。これらの暗号制御は、さまざまな場所で設定されます。

RHCS インスタンスは、別のエンティティーからの要求を受け入れるときにサーバーとして機能しています。以下に例を示します。

  • RHCS cli が証明書登録のために CA と通信する場合 (この場合の CA はサーバー)
  • RHCS 管理者が pkiconsole を使用して CA と通信する場合 (この場合の CA はサーバーです)
  • CA が鍵のアーカイブのために KRA と対話するとき (この場合、KRA はサーバーで、CA はクライアントです)

RHCS インスタンスは、別のサーバーに接続しようとするときにクライアントとして機能しています。以下に例を示します。

  • CA が鍵のアーカイブのために KRA と対話する場合 (この場合、CA はクライアントであり、KRA はサーバーです)
  • CA が内部 LDAP データベースと通信する場合 (この場合、CA はクライアントであり、Directory Server はサーバーです)

次のセクションでは、これらのさまざまなシナリオで暗号を設定する方法を説明します。

7.5.18.1. サーバーとして機能する CS インスタンスの暗号の設定

特定のインスタンスに必要な暗号のセットは、<CS instance directory>/conf/server.xml ファイルの SSLHostConfig 要素によって定義されます。

各 CS インスタンスを設定するには、以下の手順に従ってください。

重要

編集する前に、元の server.xml ファイルを server.xml.orig などにバックアップします。

  1. server.xml ファイルを編集し、メイン SSL ポートの Connector 宣言に移動して、SSLHostConfig 要素を見つけます。
  2. 次の設定で SSLHostConfig 要素を変更します。

    <SSLHostConfig sslProtocol="TLS" protocols="TLSv1.2" certificateVerification="optional" ciphers="ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384">

上記の暗号リストは、OpenSSL 形式でこの RHCS リリースで要求される暗号のセットを表します。

  • ciphers=" …​ ": 任意の制限付き暗号 (TLS など) を確立します。この形式では、暗号名はコロンで区切られます。
  • protocol = "…": 必要な TLS バージョンを確立します (たとえば、1.2)。
7.5.18.2. クライアントとして機能する CS インスタンスの暗号の設定

CS インスタンスがクライアントとして機能する場合、インスタンスの CS.cfg 設定ファイルに必要な暗号のリストを追加します。すべてのクライアントインスタンスを、そのロールに基づき関連するものとして設定します。

重要

編集する前に、元の CS.cfg ファイルを CS.cfg.orig などにバックアップします。

  • CS インスタンスが内部 LDAP データベースのクライアントとして機能している場合。

    次の行を <instance directory>/<instance type>/conf/CS.cfg ファイルに追加します。

    tcp.clientCiphers=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
    注記

    内部 LDAP データベースで目的の暗号が有効になっていることを確認するには、DS インスタンスの暗号の設定 に従ってください。

  • CA インスタンスが KRA のクライアントとして機能している場合。

    次の行を <instance directory>/ca/conf/CS.cfg ファイルに追加します。

    ca.connector.KRA.clientCiphers=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TPS インスタンスが CA、KRA、または TKS のクライアントとして機能している場合。

    次の行を <instance directory>/tps/conf/CS.cfg ファイルに追加します。

    tps.connector.<ca|kra|tks id>.clientCiphers=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
注記

以下のように、変更を有効にするには、各サーバーインスタンスを再起動する必要があります。

# pki-server restart rhcs10-RSA-RootCA
# pki-server restart rhcs10-RSA-SubCA
# pki-server restart rhcs10-RSA-OCSP-rootca
# pki-server restart rhcs10-RSA-OCSP-subca
# pki-server restart rhcs10-RSA-KRA

Nuxwdog ウォッチドッグを使用している場合は以下を使用します。

# systemctl restart rhcs10-RSA-RootCA
# systemctl restart pki-tomcatd-nuxwdog@rhcs10-RSA-SubCA.service
# systemctl restart pki-tomcatd-nuxwdog@rhcs10-RSA-OCSP-rootca.service
# systemctl restart pki-tomcatd-nuxwdog@rhcs10-RSA-OCSP-subca.service
# systemctl restart pki-tomcatd-nuxwdog@rhcs10-RSA-KRA.service
7.5.18.3. DS インスタンスの暗号の設定

デフォルトでは、Directory Server インスタンスは OS で有効になっている暗号を継承します。暗号リストが Certificate System のものと一致するように設定する場合は、各 DS インスタンスに対して次の手順を実行します。

  • DS ホスト rhds11.example.com で以下を実行します。

    1. 目的の暗号を有効にします (DS インスタンスの SSL 以外のポートを使用します)。

      # dsconf -D "cn=Directory Manager" ldap://rhds11.example.com:7389 security ciphers set "+TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,+TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,+TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,+TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
    2. DS インスタンスを再起動します。

      # dsctl slapd-CC-RSA-SubCA-LDAP stop
      # dsctl slapd-CC-RSA-SubCA-LDAP start
    3. 有効な暗号を一覧表示して確認します。

      # dsconf -D "cn=Directory Manager" ldap://rhds11.example.com:7389 security ciphers list --enabled
      
      Enter password for cn=Directory Manager on ldap://rhds11.example.com:7389:
      TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
      TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
      TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
      TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

7.5.19. KRA、TKS、TPS の OAEP サポートを有効にする

RHCS では、古い PKCS#1 アルゴリズムに代わって、Optimal Asymmetric Encryption Padding (OAEP) キーラッピングアルゴリズムがサポートされるようになりました。新しい HSM デバイスと、それ以降の FIPS 対応バージョンの NSS では、頻繁にこのアルゴリズムを使用する必要があります。主に、KRA との最終的なやり取りがある場合に実行されます。KRA のトランスポート証明書は、AES 対称鍵をはじめとする他の鍵の公開鍵をラップするために使用されます。OAEP を使用する場合、ラッピングシーケンスとアンラッピングシーケンスの終端で OAEP を使用する必要があります。ラッピングはおそらくクライアント側で実行され、アンラッピングは RHCS KRA などのサーバーやその他のサブシステム側で実行されます。

OAEP が最もよく使用されるシナリオは 2 つあります。

  • KRA、TPS、TKS などの RHCS サブシステム内。
  • いずれかの RHCS サブシステムと対話するさまざまなコマンドラインツール経由での使用。

クライアントとサーバーの対話では、両方の終端で OAEP ラッピングを使用するか、まったく使用しない必要があります。たとえば、KRA が OAEP 用に設定されている場合、KRA と対話するコマンドラインツールは、トランスポート証明書を使用してキーをラップする際に OAEP を使用する必要があります。

Red Hat の JSS 暗号バインディングコンポーネントは以前から OAEP をサポートしているため、OAEP を使用するように感嘆にクライアントまたはサーバーを設定できます。Certificate System サブシステムの実際の選択はバイナリーです。つまり、同様のシナリオであっても、OAEP ですべてを実行するか (要求された場合)、OAEP では何も実行しないかを選択する必要があります。サーバーが OAEP 用に設定されているかどうかが明確で、デフォルトが存在する場合、クライアントプログラムのユーザーは、使用されている、または使用されていないコマンドラインパラメーターに基づき、クライアントの操作方法を決定できます。

このセクションでは、OAEP 用のサブシステム設定について説明します。このサブシステムの設定は、pkispawn が RHCS サブシステムインスタンスを正常に作成した後に実行されます。

注記

Thales Luna の限定サポート: Red Hat では、Thales HSM ユニットが OAEP 経由の AES キーラッピング/アンラッピングをサポートしていることを確認できていません。サポートされていない場合、このアルゴリズムのサポートを必要とする機能は機能しないことに注意してください。これらの機能には、KRA: 鍵のアーカイブとリカバリー、登録用の CMC SharedToken 認証メカニズム、インストール中における TKS → TPS 共有秘密の自動転送が含まれます。

注記: OAEP でのコマンドラインインターフェイスの使用例については、管理ガイドを参照してください。

7.5.19.1. KRA

KRA は、OAEP を利用する主要な Certificate System サブシステムの 1 つです。これは、KRA トランスポート証明書が、クライアントプログラムによってキーをラップするために頻繁に使用され、その後 KRA 自体によってアンラップされるためです。

このセクションには、ファームウェア v12.72.1 を搭載した Entrust nShield Connect XC ユニットなど、AES キーのラッピング/アンラッピング操作をサポートする HSM デバイスに対応するための OAEP 以外の設定が含まれています。

サブシステムが含まれるホスト上で、次の操作を (root として) 実行します。

  1. KRA を停止します。

    pki-server stop <subsystem instance name>
  2. /var/lib/pki/<subsystem instance name>/CS.cfg 設定ファイルを編集し、次の 3 行を追加します。

    keyWrap.useOAEP=true
    kra.legacyPKCS12=false
    kra.nonLegacyAlg=AES/None/PKCS5Padding/Kwp/256

    上記の最初の行は OAEP に関連し、最後の 2 つの設定は OAEP シナリオでの適切な KRA 操作を可能にするための補足的な設定です。上記の状況では、AES ベースの “KWP” アルゴリズムが使用されます。

  3. KRA を起動します。

    pki-server start <subsystem instance name>
7.5.19.2. TKS

サブシステムが含まれるホスト上で、次の操作を (root として) 実行します。

  1. TKS を停止します。

    pki-server stop <subsystem instance name>
  2. /var/lib/pki/<subsystem instance name>/CS.cfg 設定ファイルを編集し、次のエントリーを追加します。

    keyWrap.useOAEP=true
  3. TKS を起動します。

    pki-server start <subsystem instance name>
7.5.19.3. TPS

トークン管理システムを使用する場合、TPS と TKS は連携して動作します。正常に動作するには、両方のサブシステムで OAEP を有効にする必要があります。TKS と TPS の通常のインストール順序では、最初に TKS がインストールされ、次に TPS がインストールされます。次の手順は、TKS が OAEP 用に設定されていることが明らかな場合に適用されます。

サブシステムが含まれるホスト上で、次の操作を (root として) 実行します。

  1. TKS を停止します。

    pki-server stop <subsystem instance name>
  2. /var/lib/pki/<subsystem instance name>/CS.cfg 設定ファイルを編集し、次のエントリーを追加します。

    keyWrap.useOAEP=true
  3. TKS を起動します。

    pki-server start <subsystem instance name>

第8章 サブシステムでのハードウェアセキュリティーモジュールの使用

サブシステムインスタンスは、セキュリティーモジュールトークン と呼ばれるキーストアにキー情報を生成し、保存します。内部 NSS トークンを使用するか、別の暗号化デバイス (ハードウェアトークン) を使用してキーを生成および保存するようにサブシステムインスタンスを設定できます。

8.1. サブシステムの HSM エントリーの追加および管理

インストール時に、pkispawn コマンドに渡された設定ファイルに適切な HSM 固有のパラメーターが設定されているデフォルトトークンとして HSM が選択された場合は、以下のパラメーターが、HSM パスワードの /var/lib/pki/ instance_name/conf/password.conf ファイルに追加されます。

hardware-HSM_token_name=HSM_token_password

8.2. HSM を使用したサブシステムのインストール

8.2.1. nCipher nShield HSM を使用したサブシステムのインストール

nCipher nShield HSM を使用するサブシステムインスタンスをインストールするには、以下の手順に従います。

  1. 特定のデプロイメントに対応するオーバーライドファイルを準備します。以下の default`hms.txt ファイルは、このような上書きファイルの例になります。

    注記

    このファイルは、nCipher HSM 上書き設定ファイルのサンプルとしてのみ提供されます。その他の多くの値は、デフォルトのハッシュアルゴリズムを含む上書きできます。また、pkispawn コマンドラインで指定されたサブシステムの呼び出しに応じて、[CA] セクション、[KRA] セクション、[OCSP] セクション、[TKS] セクション、または [TPS] セクションの 1 つだけが使用されます。

    例8.1 nCipher HSM で使用するオーバーライドファイルのサンプル

    ###############################################################################
    ###############################################################################
    ###############################################################################
    ##                                                                           ##
    ## EXAMPLE: Configuration File used to override                              ##
    ##          '/usr/share/pki/server/etc/default.cfg' when using an nCipher    ##
    ##          Hardware Security Module (HSM):                                  ##
    ##                                                                           ##
    ##     # modutil -dbdir . -list                                              ##
    ##                                                                           ##
    ##     Listing of PKCS #11 Modules                                           ##
    ##     -----------------------------------------------------------           ##
    ##       1. NSS Internal PKCS #11 Module                                     ##
    ##              slots: 2 slots attached                                      ##
    ##             status: loaded                                                ##
    ##                                                                           ##
    ##              slot: NSS Internal Cryptographic Services                    ##
    ##             token: NSS Generic Crypto Services                            ##
    ##                                                                           ##
    ##              slot: NSS User Private Key and Certificate Services          ##
    ##             token: NSS Certificate DB                                     ##
    ##                                                                           ##
    ##      2. nfast                                                             ##
    ##            library name: /opt/nfast/toolkits/pkcs11/libcknfast.so         ##
    ##             slots: 2 slots attached                                       ##
    ##            status: loaded                                                 ##
    ##                                                                           ##
    ##             slot: <serial_number> Rt1                                     ##
    ##            token: accelerator                                             ##
    ##                                                                           ##
    ##             slot: <serial_number> Rt1 slot 0                              ##
    ##            token: <HSM_token_name>                                        ##
    ##     -----------------------------------------------------------           ##
    ##                                                                           ##
    ##                                                                           ##
    ##     Based on the example above, substitute all password values,           ##
    ##     as well as the following values:                                      ##
    ##                                                                           ##
    ##         <hsm_libfile>=/opt/nfast/toolkits/pkcs11/libcknfast.so            ##
    ##         <hsm_modulename>=nfast                                            ##
    ##         <hsm_token_name>=NHSM6000                                         ##
    ##                                                                           ##
    ###############################################################################
    ###############################################################################
    ###############################################################################
    
    [DEFAULT]
    ##########################
    # Provide HSM parameters #
    ##########################
    pki_hsm_enable=True
    pki_hsm_libfile=<hsm_libfile>
    pki_hsm_modulename=<hsm_modulename>
    pki_token_name=<hsm_token_name>
    pki_token_password=<pki_token_password>
    
    ########################################
    # Provide PKI-specific HSM token names #
    ########################################
    pki_audit_signing_token=<hsm_token_name>
    pki_ssl_server_token=<hsm_token_name>
    pki_subsystem_token=<hsm_token_name>
    
    ##################################
    # Provide PKI-specific passwords #
    ##################################
    pki_admin_password=<pki_admin_password>
    pki_client_pkcs12_password=<pki_client_pkcs12_password>
    pki_ds_password=<pki_ds_password>
    
    #####################################
    # Provide non-CA-specific passwords #
    #####################################
    pki_client_database_password=<pki_client_database_password>
    
    ###############################################################
    # ONLY required if specifying a non-default PKI instance name #
    ###############################################################
    #pki_instance_name=<pki_instance_name>
    
    ##############################################################
    # ONLY required if specifying non-default PKI instance ports #
    ##############################################################
    #pki_http_port=<pki_http_port>
    #pki_https_port=<pki_https_port>
    
    ######################################################################
    # ONLY required if specifying non-default 389 Directory Server ports #
    ######################################################################
    #pki_ds_ldap_port=<pki_ds_ldap_port>
    #pki_ds_ldaps_port=<pki_ds_ldaps_port>
    
    ######################################################################
    # ONLY required if PKI is using a Security Domain on a remote system #
    ######################################################################
    #pki_ca_hostname=<pki_ca_hostname>
    #pki_issuing_ca_hostname=<pki_issuing_ca_hostname>
    #pki_issuing_ca_https_port=<pki_issuing_ca_https_port>
    #pki_security_domain_hostname=<pki_security_domain_hostname>
    #pki_security_domain_https_port=<pki_security_domain_https_port>
    
    ###########################################################
    # ONLY required for PKI using an existing Security Domain #
    ###########################################################
    # NOTE:  pki_security_domain_password = pki_admin_password
    #        of CA Security Domain Instance
    #pki_security_domain_password=<pki_admin_password>
    
    
    [Tomcat]
    ##############################################################
    # ONLY required if specifying non-default PKI instance ports #
    ##############################################################
    #pki_ajp_port=<pki_ajp_port>
    #pki_tomcat_server_port=<pki_tomcat_server_port>
    
    
    [CA]
    #######################################
    # Provide CA-specific HSM token names #
    #######################################
    pki_ca_signing_token=<hsm_token_name>
    pki_ocsp_signing_token=<hsm_token_name>
    
    ###########################################################################
    # ONLY required if 389 Directory Server for CA resides on a remote system #
    ###########################################################################
    #pki_ds_hostname=<389 hostname>
    
    
    [KRA]
    ########################################
    # Provide KRA-specific HSM token names #
    ########################################
    pki_storage_token=<hsm_token_name>
    pki_transport_token=<hsm_token_name>
    
    ############################################################################
    # ONLY required if 389 Directory Server for KRA resides on a remote system #
    ############################################################################
    #pki_ds_hostname=<389 hostname>
    
    
    [OCSP]
    #########################################
    # Provide OCSP-specific HSM token names #
    #########################################
    pki_ocsp_signing_token=<hsm_token_name>
    
    #############################################################################
    # ONLY required if 389 Directory Server for OCSP resides on a remote system #
    #############################################################################
    #pki_ds_hostname=<389 hostname>
    
    
    [TKS]
    ########################################
    # Provide TKS-specific HSM token names #
    ########################################
    
    ############################################################################
    # ONLY required if 389 Directory Server for TKS resides on a remote system #
    ############################################################################
    #pki_ds_hostname=<389 hostname>
    
    
    [TPS]
    ###################################
    # Provide TPS-specific parameters #
    ###################################
    pki_authdb_basedn=<dnsdomainname where hostname.b.c.d is dc=b,dc=c,dc=d>
    
    ########################################
    # Provide TPS-specific HSM token names #
    ########################################
    
    ############################################################################
    # ONLY required if 389 Directory Server for TPS resides on a remote system #
    ############################################################################
    #pki_ds_hostname=<389 hostname>
    
    ##########################################################
    # ONLY required if TPS requires a CA on a remote machine #
    ##########################################################
    #pki_ca_uri=https://<pki_ca_hostname>:<pki_ca_https_port>
    
    #######################################
    # ONLY required if TPS requires a KRA #
    #######################################
    #pki_enable_server_side_keygen=True
    
    ###########################################################
    # ONLY required if TPS requires a KRA on a remote machine #
    ###########################################################
    #pki_kra_uri=https://<pki_kra_hostname>:<pki_kra_https_port>
    
    ###########################################################
    # ONLY required if TPS requires a TKS on a remote machine #
    ###########################################################
    #pki_tks_uri=https://<pki_tks_hostname>:<pki_tks_https_port>
  2. 「ツーステップインストール」に記載されているように、設定ファイルを使用します。

    • # pkispawn -s CA -f ./default_hsm.txt -vvv
    • # pkispawn -s KRA -f ./default_hsm.txt -vvv
    • # pkispawn -s OCSP -f ./default_hsm.txt -vvv
    • # pkispawn -s TKS -f ./default_hsm.txt -vvv
    • # pkispawn -s TPS -f ./default_hsm.txt -vvv
  3. HSM に次の証明書が含まれていることを確認します。

    $ certutil -L -d /etc/pki/pki-tomcat/alias -h token -f token.pwd
    
    Certificate Nickname                                         Trust Attributes
                                                                 SSL,S/MIME,JAR/XPI
    
    token:ca_signing                                             CTu,Cu,Cu
    token:ca_ocsp_signing                                        u,u,u
    token:subsystem                                              u,u,u
    token:ca_audit_signing                                       u,u,Pu
    token:sslserver/pki.example.com                              u,u,u

8.2.2. Gemalto Safenet LunaSA HSM を使用したサブシステムのインストール

Gemalto Safenet LunaSA HSM を使用するサブシステムインスタンスをインストールするには、「nCipher nShield HSM を使用したサブシステムのインストール」 に記載されている手順に従ってください。オーバーライドファイルは、例8.1「nCipher HSM で使用するオーバーライドファイルのサンプル」 で提供されるサンプルと似ていますが、特定のデプロイメントに関連する値とは異なります。以下の例では、前述の nCipher 例で提供された [DEFAULT]、[Tomcat]、[CA]、[KRA]、[OCSP]、[TKS]、[TPS] の各セクションで使用される nCipher オーバーライドファイルのヘッダーの代わりに使用される LunaSA ヘッダーのサンプルを提供します。

例8.2 LunaSA オーバーライドファイルヘッダーの例

###############################################################################
###############################################################################
###############################################################################
##                                                                           ##
## EXAMPLE: Configuration File used to override                              ##
##          '/usr/share/pki/server/etc/default.cfg' when using a LunaSA      ##
##          Hardware Security Module (HSM):                                  ##
##                                                                           ##
##     # modutil -dbdir . -list                                              ##
##                                                                           ##
##     Listing of PKCS #11 Modules                                           ##
##     -----------------------------------------------------------           ##
##       1. NSS Internal PKCS #11 Module                                     ##
##              slots: 2 slots attached                                      ##
##             status: loaded                                                ##
##                                                                           ##
##              slot: NSS Internal Cryptographic Services                    ##
##             token: NSS Generic Crypto Services                            ##
##                                                                           ##
##              slot: NSS User Private Key and Certificate Services          ##
##             token: NSS Certificate DB                                     ##
##                                                                           ##
##      2. lunasa                                                            ##
##            library name: /usr/safenet/lunaclient/lib/libCryptoki2_64.so   ##
##             slots: 4 slots attached                                       ##
##            status: loaded                                                 ##
##                                                                           ##
##             slot: LunaNet Slot                                            ##
##            token: dev-intca                                               ##
##                                                                           ##
##             slot: Luna UHD Slot                                           ##
##            token:                                                         ##
##                                                                           ##
##             slot: Luna UHD Slot                                           ##
##            token:                                                         ##
##                                                                           ##
##             slot: Luna UHD Slot                                           ##
##            token:                                                         ##
##     -----------------------------------------------------------           ##
##                                                                           ##
##                                                                           ##
##     Based on the example above, substitute all password values,           ##
##     as well as the following values:                                      ##
##                                                                           ##
##         <hsm_libfile>=/usr/safenet/lunaclient/lib/libCryptoki2_64.so      ##
##         <hsm_modulename>=lunasa                                           ##
##         <hsm_token_name>=dev-intca                                        ##
##                                                                           ##
###############################################################################
###############################################################################
###############################################################################

8.3. HSM を使用したクローンサブシステムのインストール

通常、クローンサブシステムは、マスターサブシステムのシステムキーを含む PKCS #12 ファイルを使用して作成されます。このファイルは、インストールに使用する設定ファイルで pki_backup_keysTrue に設定して pki_backup_password オプションの定義値と一緒にインストールするか、PKCS12Export ツールを使用して鍵をエクスポートすることで、マスターサブシステムのインストール中に生成されます。

HSM を使用している場合は、HSM からキーを取得できないため、このツールを使用して PKCS#12 ファイルを生成することはできません。代わりに、クローンサブシステムは、マスターサブシステムが使用する HSM を指すようにして、同じキーにアクセスできるようにする必要があります。別の HSM を使用する場合は、HSM ベンダーが提供するユーティリティーを使用して、この HSM に鍵のクローンを作成します。pkispawn ユーティリティーを実行する前に、master サブシステムのキーへのアクセスを提供する必要があります。

Certificate System は、HSM を使用してインストールする際に PKCS #12 を使用しないため、PKCS #12 ファイルの場所とそのパスワードについて、設定ファイルでパラメーターを設定する必要はありません。以下の例は、CA クローンの生成に必要な各 PKI 設定ファイルの [Tomcat] セクションからオプションを示しています。

非 HSM CA のクローンを生成するには、以下を行います。

  • pki_clone=True
  • pki_clone_pkcs12_password=Secret123
  • pki_clone_pkcs12_path=<path_to_pkcs12_file>
  • pki_clone_replicate_schema=True (デフォルト値)
  • pki_clone_uri=https://<master_ca_host_name>:<master_ca_https_port>

HSM を使用して CA クローンを生成するには、以下を行います。

  • pki_clone=True
  • pki_clone_replicate_schema=True (デフォルト値)
  • pki_clone_uri=https://<master_ca_host_name>:<master_ca_https_port>
注記

マスターサブシステムが同じ証明書と鍵をそのクローンと共有できるようにするには、HSM が共有モードにあり、すべてのサブシステムからアクセスできるネットワーク上にある必要があります。

8.4. トークンの表示

Certificate System インスタンスに現在インストールされているトークンのリストを表示するには、modutil ユーティリティーを使用します。

  1. インスタンスの alias ディレクトリーに移動します。以下に例を示します。

    # cd /var/lib/pki/pki-tomcat/alias
  2. modutil ツールを使用して、インストールされている PKCS #11 モジュールに関する情報と、対応するトークンに関する情報を表示します。

    # modutil -dbdir . -nocertdb -list

8.5. トークンの検出

Certificate System でトークンを検出できるかどうかを確認するには、TokenInfo ユーティリティーを使用し、サブシステムインスタンスの alias ディレクトリーを参照します。これは、Certificate System パッケージのインストール後に利用できる Certificate System ツールです。

以下に例を示します。

# TokenInfo /var/lib/pki/pki-tomcat/alias

このユーティリティーは、Certificate System にインストールされたトークンだけでなく、Certificate System で検出できるすべてのトークンを返します。

8.6. フェイルオーバーと耐障害性

フェイルオーバー とは、複数のユニットを設定し、ユニットに障害が発生した場合に、別のユニットが引き継ぎ、中断することなくサービスを継続します。

耐障害性 により、ユニットへのネットワーク接続が中断されて再接続されると、サービスが妥当な時間内にサービスが中断されないようにします。

HSM (Hardware Security Module) モデルは、さまざまなレベルのフェイルオーバーまたは耐障害性を提供します。正確なメーカーとモデル、およびそれらが提供する機能の詳細については、HSM マニュアルを参照するか、製造元にお問い合わせください。以下のセクションで説明されている HSM は、Red Hat Certificate System でテスト済みです。

8.6.1. nCipher nShield HSM

フェイルオーバー

nShield Connect 6000 では、フェイルオーバーは 2 つの HSM モジュール nShield1 および nShield2 が実行されフェイルオーバー用に実行および設定されているシナリオでテストされています。

nShield ユニットの 1 つがダウンした場合、もう 1 つは、RHCS インスタンスを再起動せずに、既知の問題なしに Certificate System への暗号化サービスの提供を継続する機能を示します。

上記の状況が発生した場合 (1 つの HSM ユニットがダウンした場合)、管理者は、接続されたすべての Certificate System インスタンスのダウンタイムをスケジュールし、ダウンした hsm ユニットを修正して元に戻し、インスタンスを再起動する必要があります。これは、1 つのユニットがダウンしても、Certificate System は引き続き機能することが期待されることを意味します。ただし、インスタンスを再起動せずにダウンした hsm を起動した場合、新しく起動した HSM ユニットは、当初の計画どおりにフェイルオーバースキームの一部になるとは見なされません。

耐障害性

nShield Connect 6000 では、ネットワークケーブルが HSM ユニットからプルされ、最大 90 分以内にホットプラグされた場合に、サービスを継続します。90 分以上経過してもデータはありません。

8.6.2. Gemalto Safenet LunaSA HSM

フェイルオーバー

Gemalto Safenet LunaSA Cloning モデルは、フェイルオーバーを提供します。ただし、このモデルにはデータがありません。

8.7. ハードウェアセキュリティーモジュールでのキーのバックアップ

HSM に保存されている鍵と証明書を、.p12 ファイルにエクスポートすることができません。このようなインスタンスをバックアップする必要がある場合には、HSM の製造元に連絡してサポートしてください。

第9章 サブシステムのクローン作成

新しいサブシステムインスタンスが最初に設定されている場合、Red Hat Certificate System は Certificate System の高可用性のためにサブシステムをクローンするか、または複製できます。クローンが作成されたインスタンスは、単一障害点を回避するために異なるマシンで実行され、それらのデータベースはレプリケーションを通じて同期されます。

マスター CA およびそのクローンは機能的に同一で、シリアル番号の割り当てと CRL 生成でのみ異なります。したがって、この章はマスターまたはそのクローンを 複製 CA として参照します。

9.1. ソフトウェアデータベースからのサブシステムキーのバックアップ

理想的には、インスタンスの初回作成時に、マスターインスタンスの鍵がバックアップされます。キーがバックアップされていない場合や、バックアップファイルが失われた場合は、PKCS12Export ユーティリティーを使用してサブシステムインスタンスの内部ソフトウェアデータベースからキーを抽出することができます。以下に例を示します。

PKCS12Export -debug -d /var/lib/pki/ instance_name/alias -w p12pwd.txt -p internal.txt -o master.p12

次に、クローンインスタンス設定で使用するクローンマシンに PKCS #12 ファイルをコピーします。詳細は、「クローンおよびキーストア」 を参照してください。

注記

キーは HSM からエクスポートできません。ただし、標準的なデプロイメントでは、マスターと同じ HSM を使用してクローンインスタンスがインストールされている限り、HSM はネットワークアクセスをサポートします。両方のインスタンスが同じキーストアを使用する場合、このキーは基本的にクローンで利用可能になります。

HSM からキーをバックアップする必要がある場合は、HSM の製造元に問い合わせてください。

9.2. CA のクローン作成

  1. マスター CA を設定し、キーのバックアップを作成します。
  2. マスター CA の CS.cfg ファイルで、ca.listenToCloneModifications パラメーターを追加して、マスター CA がレプリケーションデータベースの変更を監視できるようにします。

    ca.listenToCloneModifications=true
  3. クローンサブシステムインスタンスを作成します。

    CA サブシステムのクローン作成時に pkispawn で必要な設定ファイルの例は、pkispawn(8) の man ページの Installing a CA clone セクションおよび Installing a CA clone on the same host セクションを参照してください。

  4. クローンが使用する Directory Server インスタンスを再起動します。

    # systemctl restart pki-tomcatd@kra-clone-ds-instance.service
    注記

    Directory Server を再起動すると、更新されたスキーマが再読み込みされます。これは、パフォーマンスを適切に行うために必要です。

  5. クローンインスタンスを再起動します。

    # pki-server restart instance_name

クローンの設定後に、テストを実行して、master-clone 関係が機能していることを確認します。

  1. クローン作成された CA から証明書を要求します。
  2. 要求を承認します。
  3. ブラウザーに証明書をダウンロードします。
  4. 証明書を取り消します。
  5. マスター CA の CRL で取り消された証明書を確認します。マスター Certificate Manager のエージェントサービスページで、Update Certificate Revocation List をクリックします。リストで CRL を検索します。

    CRL には、クローン作成された Certificate Manager が失効した証明書が表示されます。証明書がリストにない場合は、ログを確認して問題を解決します。

9.3. クローン後の CA-KRA コネクター情報の更新

「カスタム設定およびクローン」 で説明されているとおり、クローンの 作成後 に行われる場合には、クローンインスタンスで設定情報が更新されません。同様に、クローンに加えられた変更はマスターインスタンスにはコピーされません。

クローン CA の作成後に新しい KRA をインストールまたはクローンした場合、クローン CA には設定に新しい KRA コネクター情報がありません。つまり、クローン CA はアーカイブされたリクエストを KRA に送信しないことを意味します。

新しい KRA が作成またはクローンされるたびに、そのコネクター情報をデプロイメントで クローン 作成されたすべての CA にコピーします。これには、pki ca-kraconnector-add コマンドを使用します。

手動で行う必要がある場合は、次の手順を実行します。

  1. マスタークローンマシンで、マスター CA の CS.cfg ファイルを開き、新しい KRA コネクターの ca.connector.KRA.* 行をすべてコピーします。

    [root@master ~]# vim /var/lib/pki/ instance_name/ca/conf/CS.cfg
  2. クローン CA インスタンスを停止します。以下に例を示します。

    [root@clone-ca ~]# pki-server stop instance_name
  3. クローン CA の CS.cfg ファイルを開きます。

    [root@clone-ca ~]# vim /var/lib/pki/ instance_name/ca/conf/CS.cfg
  4. 新しい KRA インスタンスまたはクローンのコネクター情報をコピーします。

    ca.connector.KRA.enable=true ca.connector.KRA.host=server-kra.example.com
    ca.connector.KRA.local=false ca.connector.KRA.nickName=subsystemCert cert-pki-ca
    ca.connector.KRA.port=10444 ca.connector.KRA.timeout=30
    ca.connector.KRA.transportCert=MIIDbD...ZR0Y2zA==
    ca.connector.KRA.uri=/kra/agent/kra/connector
  5. クローン CA を起動します。

    [root@clone-ca ~]# pki-server start instance_name

9.4. サブシステムのクローン作成

9.4.1. OCSP サブシステムのクローン作成

  1. マスター OCSP を設定し、キーをバックアップします。
  2. マスター OCSP の CS.cfg ファイルで、OCSP.Responder.store.defStore.refreshInSec パラメーターを 21600 以外の番号に設定します。21600 はクローンの設定になります。

    # vim /etc/ instance_name/CS.cfg
    
    OCSP.Responder.store.defStore.refreshInSec=15000
  3. pkispawn ユーティリティーを使用して、クローンサブシステムインスタンスを作成します。

    OCSP サブシステムのクローン時に pkispawn で必要な設定ファイルの例は、pkispawn(8) の man ページを参照してください。

  4. クローンが使用する Directory Server インスタンスを再起動します。

    # systemctl dirsrv@instance_name.service
    注記

    Directory Server を再起動すると、更新されたスキーマが再読み込みされます。これは、パフォーマンスを適切に行うために必要です。

  5. クローンインスタンスを再起動します。

    # pki-server restart instance_name

クローンの設定後に、テストを実行して、master-clone 関係が機能していることを確認します。

  1. CRL がマスター OCSP に公開されるように、マスター CA で OCSP 公開を設定します。
  2. CRL が正常に公開されたら、エージェントページのマスターおよびクローン作成された OCSP の List Certificate Authorities リンクの両方を確認します。リストは同一でなければなりません。
  3. OCSPClient ツールを使用して、マスターおよびクローン作成された Online Certificate Status Manager に OCSP 要求を送信します。このツールは、両方のマネージャーから同じ OCSP 応答を受け取る必要があります。

9.4.2. KRA サブシステムのクローン作成

  1. master サブシステムを設定し、キーをバックアップします。
  2. pkispawn ユーティリティーを使用して、クローンサブシステムインスタンスを作成します。

    KRA サブシステムのクローン時に pkispawn で必要な設定ファイルの例は、pkispawn(8) の man ページの Installing a KRA or TPS clone セクションを参照してください。

  3. クローンが使用する Directory Server インスタンスを再起動します。

    # systemctl dirsrv@instance_name.service
    注記

    Directory Server を再起動すると、更新されたスキーマが再読み込みされます。これは、パフォーマンスを適切に行うために必要です。

  4. クローンインスタンスを再起動します。

    # pki-server restart instance_name

クローンの設定後に、テストを実行して、マスターとクローンの関係が機能していることを確認します。

  1. KRA エージェントのページに移動します。
  2. List Requests をクリックします。
  3. リクエストタイプおよびステータスの Show all requests の表示を選択します。
  4. Submit をクリックします。
  5. クローン作成された KRA とマスター KRA の結果を比較します。結果は同一であることが見なされます。

9.4.3. TKS サブシステムのクローン作成

  1. master サブシステムを設定し、キーをバックアップします。
  2. pkispawn ユーティリティーを使用して、クローンサブシステムインスタンスを作成します。

    TKS サブシステムのクローン時に pkispawn で必要な設定ファイルの例は、pkispawn(8) の man ページの Installing a KRA or TKS clone セクションを参照してください。

  3. クローンインスタンスを再起動します。

    # pki-server restart instance_name

TKS の場合は、スマートカードを登録してから ldapsearch を実行して、同じキー情報が両方のデータベースに含まれていることを確認します。

9.5. マスターとクローンの変換

CRL を生成する 1 つのアクティブな CA のみが、同じトポロジー内に存在できます。同様に、CRL を受信する OCSP は 1 つだけ同じトポロジー内に存在できます。そのため、クローンはいくつでも存在できますが、CA および OCSP 用に設定されたマスターは 1 つだけです。

KRA と TKS の場合、マスターとクローンの間に設定の違いはありませんが、CA と OCSP にはいくつかの設定の違いがあります。これは、マスターがオフラインになった場合、障害やメンテナンスのため、または PKI 内のサブシステムの機能を変更するために、既存のマスターをクローンに再設定し、クローンの 1 つをマスターに昇格させなければならないことを意味します。

9.5.1. CA クローンおよびマスターの変換

  1. マスター CA が実行中の場合は停止します。
  2. 既存のマスター CA 設定ディレクトリーを開きます。

    # cd /var/lib/pki/ instance_name/ca/conf
  3. マスターの CS.cfg ファイルを編集し、CRL およびメンテナンススレッド設定をクローンとして設定します。

    • データベースメンテナンススレッドの制御を無効にします。

      ca.certStatusUpdateInterval=0
    • データベースのレプリケーション変更の監視を無効にします。

      ca.listenToCloneModifications=false
    • CRL キャッシュのメンテナンスを無効にします。

      ca.crl.IssuingPointId.enableCRLCache=false
    • CRL 生成を無効にします。

      ca.crl.IssuingPointId.enableCRLUpdates=false
    • CRL 要求を新規マスターにリダイレクトするように CA を設定します。

      master.ca.agent.host=new_master_hostname
      master.ca.agent.port=new_master_port
  4. クローン作成された CA サーバーを停止します。

    # pki-server stop instance_name
  5. クローン CA の設定ディレクトリーを開きます。

    # cd /etc/instance_name
  6. CS.cfg ファイルを編集して、クローンを新規マスターとして設定します。

    1. ca.crl. 接頭辞で開始する各行を削除します。
    2. ca.crl. で始まる各行を、以前のマスター CA CS.cfg ファイルから、クローン作成された CA の CS.cfg ファイルにコピーします。
    3. データベースメンテナンススレッドの制御を有効にします。マスター CA のデフォルト値は 600 です。

      ca.certStatusUpdateInterval=600
    4. データベースのレプリケーションのモニタリングを有効にします。

      ca.listenToCloneModifications=true
    5. CRL キャッシュのメンテナンスを有効にします。

      ca.crl.IssuingPointId.enableCRLCache=true
    6. CRL 生成を有効にします。

      ca.crl.IssuingPointId.enableCRLUpdates=true
    7. CRL 生成要求のリダイレクト設定を無効にします。

      master.ca.agent.host=hostname
      master.ca.agent.port=port number
  7. 新規マスター CA サーバーを起動します。

    # pki-server start instance_name

9.5.2. OCSP クローンの変換

  1. OCSP マスターが稼働している場合は停止します。
  2. 既存のマスター OCSP 設定ディレクトリーを開きます。

    # cd /etc/instance_name
  3. CS.cfg を編集し、OCSP.Responder.store.defStore.refreshInSec パラメーターを 21600 にリセットします。

    OCSP.Responder.store.defStore.refreshInSec=21600
  4. オンラインのクローン作成された OCSP サーバーを停止します。

    # pki-server stop instance_name
  5. クローン作成された OCSP レスポンダーの設定ディレクトリーを開きます。

    # cd /etc/instance_name
  6. CS.cfg ファイルを開き、OCSP.Responder.store.defStore.refreshInSec パラメーターを削除するか、その値をゼロ以外の数字に変更します。

    OCSP.Responder.store.defStore.refreshInSec=15000
  7. 新規マスター OCSP レスポンダーサーバーを起動します。

    # pki-server start instance_name

9.6. 再キーが設定された CA のクローン作成

証明書の期限が切れたら、置き換える必要があります。これは、元のキーペアを再利用して新しい証明書を生成する証明書を更新するか、新しいキーペアと証明書を生成することによって実行できます。2 つ目の方法は 再キーイング と呼ばれます。

CA のキーが再設定されると、新しいキーペアが証明書データベースに保存されます。これらは通常の操作のキー参照です。ただし、サブシステムを複製する場合、複製プロセスは、CS.cfg 設定ファイルに格納されている CA 秘密鍵 ID をチェックし、証明書データベースの鍵が変更されても、これらの鍵 ID は更新されません。

CA のキーが再設定された後、管理者がそのクローンを作成しようとすると、クローンされた CA は、キーが再設定された証明書の証明書の生成に失敗し、次のエラーとともにエラーログに表示されます。

CertUtil::createSelfSignedCert() - CA private key is null!

再登録した CA のクローンを作成するには、以下を実行します。

  1. CS.cfg ファイルで、秘密鍵 ID をすべて検索します。

    # grep privkey.id /var/lib/pki/ instance_name/ca/conf/CS.cfg
    cloning.signing.privkey.id     =-4d798441aa7230910d4e1c39fa132ea228d5d1bc
    cloning.ocsp_signing.privkey.id =-3e23e743e0ddd88f2a7c6f69fa9f9bcebef1a60
    cloning.subsystem.privkey.id     =-c3c1b3b4e8f5dd6d2bdefd07581c0b15529536
    cloning.sslserver.privkey.id    =3023d30245804a4fab42be209ebb0dc683423a8f
    cloning.audit_signing.privkey.id=2fe35d9d46b373efabe9ef01b8436667a70df096
  2. NSS データベースに保存されている現在の秘密鍵 ID をすべて出力し、それを CS.cfg ファイルに保存されている秘密鍵 ID と比較します。

    # certutil -K -d alias
    certutil: Checking token "NSS Certificate DB" in slot "NSS User Private Key and Certificate Services"
    Enter Password or Pin for "NSS Certificate DB":
    < 0> rsa      a7b0944b7b8397729a4c8c9af3a9c2b96f49c6f3   caSigningCert cert-ca4-test-master
    < 1> rsa      6006094af3e5d02aaa91426594ca66cb53e73ac0   ocspSigningCert cert-ca4-test-master
    < 2> rsa      d684da39bf4f2789a3fc9d42204596f4578ad2d9   subsystemCert cert-ca4-test-master
    < 3> rsa      a8edd7c2b5c94f13144cacd99624578ae30b7e43   sslserverCert cert-ca4-test1
    < 4> rsa      2fe35d9d46b373efabe9ef01b8436667a70df096   auditSigningCert cert-ca4-test1

    この例では、監査署名キーのみが同じで、他は変更になりました。

  3. 前のステップで返されたキーを取得し、これらを署名なし値 (certutil を返すもの) から署名済み Java BigInteger (Certificate System データベースに格納) に変換します。

    これは、calculator または 例9.1「Certutil から BigInteger への変換プログラム」 でスクリプトを使用して実行できます。

  4. 新しいキーの値を CS.cfg ファイルにコピーします。

    # vim /var/lib/pki/ instance_name/ca/conf/CS.cfg
    
    cloning.signing.privkey.id     =-584f6bb4847c688d65b373650c563d4690b6390d
    cloning.ocsp_signing.privkey.id =6006094af3e5d02aaa91426594ca66cb53e73ac0
    cloning.subsystem.privkey.id   =-297b25c640b0d8765c0362bddfba690ba8752d27
    cloning.sslserver.privkey.id   =-5712283d4a36b0ecebb3532669dba8751cf481bd
    cloning.audit_signing.privkey.id=2fe35d9d46b373efabe9ef01b8436667a70df096
  5. 「CA のクローン作成」の説明に従って CA のクローンを作成します。

例9.1 Certutil から BigInteger への変換プログラム

この Java プログラムは、certutil からのキー出力を必要な BigInteger 形式に変換できます。

これを Test.java などの .java ファイルとして保存します。

import java.math.BigInteger;

public class Test
{

  public static byte[] hexStringToByteArray(String s) {
      int len = s.length();
      byte[] data = new byte[len / 2];
      for (int i = 0; i < len; i += 2) {
          data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
                               + Character.digit(s.charAt(i+1), 16));
      }
      return data;
  }

  public static void main(String[] args)
  {
      byte[] bytes = hexStringToByteArray(args[0]);
      BigInteger big = new BigInteger (bytes);
      System.out.println("Result is  ==> " + big.toString(16));
  }
}

次に、ファイルを再コンパイルします。

# javac Test.java

第10章 PKI ACME レスポンダーの設定

この章では、CA サブシステムがすでにある PKI サーバーの ACME レスポンダーへのインストールおよび初期設定を説明します。

注記

以下は、デフォルトのインスタンス名で CA をインストールしたことを前提としています (つまり pki-tomcat)。

PKI ACME Responder の管理方法は、Red Hat Certificate System 管理ガイドPKI ACME Responder の管理 を参照してください。

10.1. PKI ACME Responder のインストール

PKI サーバーに PKI ACME Responder をインストールするには、以下を行います。

  1. 最初に pki-acme RPM パッケージをダウンロードしてインストールします。

    $ dnf install pki-acme
  2. 以下のコマンドを使用して、PKI サーバーインスタンスに ACME レスポンダーを作成します。

    $ pki-server acme-create

これにより、/etc/pki/pki-tomcat/acme ディレクトリーに初期設定ファイルが作成されます。

詳細は、pki-server-acme の man ページを参照してください。

10.2. ACME データベースの設定

このセクションでは、ACME レスポンダーにデータベースを設定する方法を説明します。データベース設定は /etc/pki/pki-tomcat/acme/database.conf にあります。

  • pki-server acme-database-mod コマンドを使用すると、コマンドラインでデータベースを設定できます。パラメーターを指定せずにこのコマンドを呼び出すと、インタラクティブモードが起動します。以下に例を示します。

    $ pki-server acme-database-mod
    
    The current value is displayed in the square brackets.
    To keep the current value, simply press Enter.
    To change the current value, enter the new value.
    To remove the current value, enter a blank space.
    
    Enter the type of the database. Available types: ds, in-memory, ldap, openldap, postgresql.
    Database Type: ds
    
    Enter the location of the LDAP server (e.g. ldap://localhost.localdomain:389).
    Server URL [ldap://localhost.localdomain:389]:
    
    Enter the authentication type. Available types: BasicAuth, SslClientAuth.
    Authentication Type [BasicAuth]:
    
    Enter the bind DN.
    Bind DN [cn=Directory Manager]:
    
    Enter the bind password.
    Bind Password [ ****** ]:
    
    Enter the base DN for the ACME subtree.
    Base DN [dc=acme,dc=pki,dc=example,dc=com]:
  • --type パラメーターでコマンドを呼び出すと、指定したタイプに基づいて新しい設定が作成されます。
  • 他のパラメーターを指定してコマンドを呼び出すと、指定したパラメーターが更新されます。

特定の ACME 設定プロパティーはデータベースに保存され、クラスター内のすべての ACME レスポンダーを一貫して設定できます。デフォルトでは、ACME 設定プロパティーを取得または更新する際に、ACME レスポンダーがデータベースに直接アクセスし、データベースの負荷を増やす可能性があります。一部のデータベースは、この負荷を軽減するために ACME 設定モニターを提供する場合があります。

10.2.1. DS データベースの設定

ACME レスポンダーが DS データベースを使用するように設定できます。DS データベース設定のサンプルは、/usr/share/pki/acme/database/ds/database.conf にあります。

DS データベースを設定するには、次のコマンドを実行します。

  1. 以下のコマンドで /usr/share/pki/acme/database/database/ds/schema.ldif ファイルをインポートして ACME DS スキーマを追加します。

    $ ldapmodify -h $HOSTNAME -x -D "cn=Directory Manager" -w Secret.123 \
                -f /usr/share/pki/acme/database/ds/schema.ldif
  2. 次に LDIF ファイルを準備して ACME サブツリーを作成します。LDIF ファイルのサンプルは、usr/share/pki/acme/database/ds/create.ldif で利用できます。この例では、ベース DN に dc=acme,dc=pki,dc=example,dc=com を使用しています。
  3. ldapadd コマンドを使用して LDIF ファイルをインポートします。

    $ ldapadd -h $HOSTNAME -x -D "cn=Directory Manager" -w Secret.123 \
                -f /usr/share/pki/acme/database/ds/create.ldif
  4. データベース設定ファイルのサンプルを /usr/share/pki/acme/database/database.conf から /etc/pki/pki-tomcat/acme ディレクトリーにコピーします。または、以下のコマンドを実行して一部のパラメーターをカスタマイズします。

    $ pki-server acme-database-mod --type ds \
                -DbindPassword=Secret.123
  5. 必要に応じて設定をカスタマイズします。

    • スタンドアロンの ACME デプロイメントでは、database.conf は以下のようになります。

      class=org.example.acme.database.DSDatabase
      url=ldap://<hostname>:389
      authType=BasicAuth
      bindDN=cn=Directory Manager
      bindPassword=Secret.123
      baseDN=dc=acme,dc=pki,dc=example,dc=com
    • 共有 CA および ACME デプロイメントでは、database.conf は以下のようになります。

      class=org.example.acme.database.DSDatabase
                      configFile=conf/ca/CS.cfg
                      baseDN=dc=acme,dc=pki,dc=example,dc=com

DS データベースは、検索の永続性を使用して ACME 設定モニターを提供します。monitor.enabled=true パラメーターを設定してこれを有効にできます。

10.3. ACME Issuer の設定

このセクションでは、PKI ACME Responder に発行者を設定する方法を説明します。ACME Issuer の設定は、/etc/pki/pki-tomcat/acme/issuer.conf にあります。

pki-server acme-issuer-mod コマンドを使用して、コマンドラインから発行者を設定できます。

  • パラメーターを指定せずにこのコマンドを呼び出すと、インタラクティブモードが起動します。以下に例を示します。

    $ pki-server acme-issuer-mod
    The current value is displayed in the square brackets.
    To keep the current value, simply press Enter.
    To change the current value, enter the new value.
    To remove the current value, enter a blank space.
    
    Enter the type of the certificate issuer. Available types: nss, pki.
    Issuer Type: pki
    
    Enter the location of the PKI server (e.g. https://localhost.localdomain:8443).
    Server URL [https://localhost.localdomain:8443]:
    
    Enter the certificate nickname for client authentication.
    This might be the CA agent certificate.
    Enter blank to use basic authentication.
    Client Certificate:
    
    Enter the username of the CA agent for basic authentication.
    Enter blank if a CA agent certificate is used for client authentication.
    Agent Username [caadmin]:
    
    Enter the CA agent password for basic authentication.
    Enter blank if the password is already stored in a separate property file
    or if a CA agent certificate is used for client authentication.
    Agent Password [ ****** ]:
    
    Enter the certificate profile for issuing ACME certificates (e.g. acmeServerCert).
    Certificate Profile [acmeServerCert]:
  • --type パラメーターでコマンドを呼び出すと、指定したタイプに基づいて新しい設定が作成されます。
  • 他のパラメーターを指定してコマンドを呼び出すと、指定したパラメーターが更新されます。

10.3.1. PKI 発行者の設定

PKI 発行者 を使用して証明書を発行するように PKI ACME 応答者 を設定できます。サンプル設定は /usr/share/pki/acme/issuer/pki/issuer.conf で確認できます。

  • PKI 発行者を設定するには、このサンプル issuer.conf/etc/pki/pki-tomcat/acme ディレクトリーにコピーするか、以下のコマンドを実行して一部のパラメーターをカスタマイズします。

    $ pki-server acme-issuer-mod --type pki \
                -Dusername=caadmin \
                -Dpassword=Secret.123

    必要に応じて設定をカスタマイズします。issuer.conf ファイルは以下のようになります。

    class=org.example.acme.issuer.PKIIssuer
    url=https://localhost.localdomain:8443
    profile=acmeServerCert
    username=caadmin
    password=Secret.123
  • url パラメーターは PKI 発行者の場所を指定します。
  • profile パラメーターは、使用する証明書プロファイルを指定します。
  • クライアント証明書認証を使用するには、nickname パラメーターにクライアント証明書のニックネームを指定します。
  • Basic 認証を使用するには、username パラメーターと password パラメーターにそれぞれユーザー名とパスワードを指定します。

10.4. ACME レルムの設定

このセクションでは、PKI ACME レスポンダー のレルムを設定する方法を説明します。レルム設定は /etc/pki/pki-tomcat/acme/realm.conf にあります。

pki-server acme-realm-mod コマンドを使用すると、コマンドラインで ACME レルム を設定できます。

  • パラメーターを指定せずにこのコマンドを呼び出すと、インタラクティブモードが起動します。以下に例を示します。

    $ pki-server acme-realm-mod
    The current value is displayed in the square brackets.
    To keep the current value, simply press Enter.
    To change the current value, enter the new value.
    To remove the current value, enter a blank space.
    
    Enter the type of the realm. Available types: ds.
    Database Type: ds
    
    Enter the location of the LDAP server (e.g. ldap://localhost.localdomain:389).
    Server URL [ldap://localhost.localdomain:389]:
    
    Enter the authentication type. Available types: BasicAuth, SslClientAuth.
    Authentication Type [BasicAuth]:
    
    Enter the bind DN.
    Bind DN [cn=Directory Manager]:
    
    Enter the bind password.
    Bind Password [ ****** ]:
    
    Enter the base DN for the ACME users subtree.
    Users DN [ou=people,dc=acme,dc=pki,dc=example,dc=com]:
    
    Enter the base DN for the ACME groups subtree.
    Groups DN [ou=groups,dc=acme,dc=pki,dc=example,dc=com]:
  • --type パラメーターでコマンドを呼び出すと、指定したタイプに基づいて新しい設定が作成されます。
  • 他のパラメーターを指定してコマンドを呼び出すと、指定したパラメーターが更新されます。

10.4.1. DS レルムの設定

PKI ACME Responder を、Directory Server レルムを使用するように設定できます。DS Realm のサンプル設定は、/usr/share/pki/acme/realm/ds/realm.conf にあります。

Directory Server レルムを設定するには、以下を実行します。

  1. DS の ACME ユーザーおよびグループのサブツリーを準備します。サンプル LDIF ファイルは /usr/share/pki/acme/realm/ds/create.ldif] にあります。この例では、ベース DN に dc=acme,dc=pki,dc=example,dc=com を使用しています。
  2. ldapadd コマンドを使用して LDIF ファイルをインポートします。

    $ ldapadd -h $HOSTNAME -x -D "cn=Directory Manager" -w Secret.123 \
                -f /usr/share/pki/acme/realm/ds/create.ldif
  3. /usr/share/pki/acme/realm/ds/realm.conf から /etc/pki/pki-tomcat/acme ディレクトリーに設定例をコピーするか、以下のコマンドを実行して一部のパラメーターをカスタマイズします。

    $ pki-server acme-realm-mod --type ds \
                -DbindPassword=Secret.123
  4. 必要に応じて設定をカスタマイズします。

    • スタンドアロンの ACME デプロイメントでは、realm.conf ファイルは以下のようになるはずです。

      class=org.example.acme.realm.DSRealm
      url=ldap://<hostname>:389
      authType=BasicAuth
      bindDN=cn=Directory Manager
      bindPassword=Secret.123
      usersDN=ou=people,dc=acme,dc=pki,dc=example,dc=com
      groupsDN=ou=groups,dc=acme,dc=pki,dc=example,dc=com
    • 共有 CA および ACME デプロイメントでは、realm.conf ファイルは以下のようになります。

      class=org.example.acme.realm.DSRealm
      configFile=conf/ca/CS.cfg
      usersDN=ou=people,dc=ca,dc=pki,dc=example,dc=com
      groupsDN=ou=groups,dc=ca,dc=pki,dc=example,dc=com

10.5. ACME Responder のデプロイ

  1. ACME レスポンダーを設定したら、以下のコマンドを使用してデプロイします。

    $ pki-server acme-deploy

    これにより、/etc/pki/pki-tomcat/Catalina/localhost/acme.xml にデプロイメント記述子が作成されます。

    PKI サーバーは、数秒後に ACME レスポンダーを自動的に起動します。サーバーを再起動する必要はありません。

  2. ACME レスポンダーが実行中であることを確認するには、以下のコマンドを使用します。

    $ curl -s -k https://$HOSTNAME:8443/acme/directory | python -m json.tool
    {
    "meta": {
    "caaIdentities": [
    "example.com"
    ],
    "externalAccountRequired": false,
    "termsOfService": "https://example.com/acme/tos.pdf",
    "website": "https://www.example.com"
    },
    "newAccount": "https://<hostname>:8443/acme/new-account",
    "newNonce": "https://<hostname>:8443/acme/new-nonce",
    "newOrder": "https://<hostname>:8443/acme/new-order",
    "revokeCert": "https://<hostname>:8443/acme/revoke-cert"
    }

詳細は、pki-server-acme の man ページを参照してください。

第11章 その他のインストールオプション

pkispawn で作成したすべての Red Hat Certificate System インスタンスは、インストールされているインスタンスについて、CA 署名証明書に使用するデフォルトの署名アルゴリズムやホストの IPv6 アドレスを許可するかどうかなど、インストールされているインスタンスについて仮定します。

この章では、新しいインスタンスのインストールと設定に影響を与える追加の設定オプションを説明します。そのため、これらの手順の多くは、インスタンスが作成される前に実行されます。

11.1. 軽量サブ CA

デフォルト設定を使用すると、軽量のサブ CA を作成できます。これにより、1 つのサブ CA が発行する証明書のみを受け入れるように、仮想プライベートネットワーク (VPN) ゲートウェイなどのサービスを設定できます。同時に、別のサブ CA またはルート CA が発行する証明書のみを受け入れるように他のサービスを設定できます。

サブ CA の中間証明書を破棄する場合には、このサブ CA で発行された証明書はすべて無効になります。

Certificate System で CA サブシステムを設定すると、ルート CA は自動的に実行されます。作成するサブ CA はすべてこのルート CA の下位局になります。

11.1.1. 軽量サブ CA の設定

ご自分の環境に応じて、サブ CA のインストールは 内部 CA と 外部 CA によって異なります。詳細は、外部 CA 署名証明書を使用した CA のインストール の例を参照してください。

11.1.2. 軽量サブ CA の作成の無効化

特定の状況では、管理者は軽量のサブ CA を無効にする必要があります。サブ CA の追加、変更、または削除を防ぐには、Certificate System が使用する Directory Server インスタンスで以下のコマンドを入力します。

# ldapmodify -D "cn=Directory Manager" -W -x -h server.example.com

dn: cn=aclResources,o=instance_name
changetype: modify
delete: resourceACLS
resourceACLS: certServer.ca.authorities:create,modify:allow (create,modify)
  group="Administrators":Administrators may create and modify lightweight authorities
delete: resourceACLS
resourceACLS: certServer.ca.authorities:delete:allow (delete)
  group="Administrators":Administrators may delete lightweight authorities

このコマンドは、サブ CA を管理するパーミッションを付与するデフォルトのアクセス制御リスト (ACL) エントリーを削除します。

注記

軽量のサブ CA 作成に関連する ACL を変更または追加する場合は、関連する値を削除します。

11.1.3. 軽量サブ CA の作成の再有効化

以前、軽量のサブ CA の作成を無効にしている場合は、Certificate System が使用する Directory Server インスタンスで以下のコマンドを入力して、機能を再度有効にできます。

# ldapmodify -D "cn=Directory Manager" -W -x -h server.example.com

dn: cn=aclResources,o=instance_name
changetype: modify
add: resourceACLS
resourceACLS: certServer.ca.authorities:create,modify:allow (create,modify)
  group="Administrators":Administrators may create and modify lightweight authorities
resourceACLS: certServer.ca.authorities:delete:allow (delete)
  group="Administrators":Administrators may delete lightweight authorities

このコマンドは、アクセス制御リスト (ACL) エントリーを追加します。このエントリーは、サブ CA を管理するパーミッションを付与します。

11.2. サブシステムの IPv6 の有効化

Certificate System は、サブシステム間の接続を自動的に設定および管理します。すべてのサブシステムは、セキュリティードメインのメンバーとして CA と対話し、PKI 操作を実行する必要があります。

これらの接続では、Certificate System サブシステムはホストの完全修飾ドメイン名または IP アドレスで認識できます。デフォルトでは、Certificate System は IPv4 アドレスとホスト名を自動的に解決しますが、Certificate System は接続に IPv6 を使用することもできます。IPv6 は、他のサブシステムへの接続、管理コンソール (pkiconsole) への接続、または tpsclient などのコマンドラインスクリプトを介した接続など、すべてのサーバー接続でサポートされています。

op=var_set name=ca_host value=IPv6 address
  1. Red Hat Certificate System パッケージをインストールします。
  2. /etc/hosts ファイルに IPv4 アドレスおよび IPv6 アドレスを設定します。以下に例を示します。

     # vim /etc/hosts
    
     192.0.0.0    server.example.com IPv4 address
     3ffe:1234:2222:2000:202:55ff:fe67:f527         server6.example.com IPv6 address
  3. 次に、環境変数をエクスポートして、サーバーの IPv6 アドレスを使用します。以下に例を示します。

    export PKI_HOSTNAME=server6.example.com
  4. pkispawn を実行して、新規インスタンスを作成します。CS.cfg ファイル内のサーバーのホスト名の値は、IPv6 アドレスに設定されます。

11.3. LDAP ベースの登録プロファイルの有効化

  • LDAP ベースのプロファイルを使用してインストールするには、pkispawn 設定ファイルの [CA] セクションに pki_profile_in_ldap=True オプションを指定します。
注記

この場合、プロファイルファイルは /var/lib/pki/ instance_name/ca/profiles/ca/ にそのまま表示されますが、無視されます。

  • 既存のインスタンスで LDAP ベースのプロファイルを有効にするには、インスタンスの CS.cfg で以下を変更します。

    subsystem.1.class=com.netscape.cmscore.profile.LDAPProfileSubsystem

    次に、pki コマンドラインユーティリティーまたはカスタムスクリプトを使用して、プロファイルを手動でデータベースにインポートします。

第12章 インストールとクローン作成のトラブルシューティング

この章では、Certificate System のインストール時に発生するより一般的なインストールと移行の問題のトラブルシューティングを説明します。

12.1. インストール

問:

Certificate System パッケージまたは更新は表示されません。

答:

お使いのシステムが Red Hat サブスクリプション管理サービスに正しく登録され、有効なサブスクリプションが割り当てられ、Certificate System のリポジトリーが有効になっていることを確認します。詳細は、「Red Hat サブスクリプションの添付および Certificate System パッケージリポジトリーの有効化」 を参照してください。

問:

init スクリプトは OK ステータスを返しましたが、その CA インスタンスは応答しません。理由

答:

これは起こらないはずです。通常 (常にではありませんが)、これは CA のリスナーの問題を示しますが、さまざまな原因が考えられます。発生したエラーを確認するには、以下のコマンドを実行して journal ログを確認します。

journalctl -u pki-tomcatd@instance_name.service

または、/var/log/pki/ instance_name/subsystem_type/debug でデバッグログファイルを調べます。

1 つの状況は、CA の PID があり、プロセスが実行されているが、サーバーのリスナーが開かれていないことを示している場合です。これにより、catalina.out ファイルに Java 呼び出しクラスエラーが返されます。

Oct 29, 2010 4:15:44 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-9080
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:615)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:243)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:408)
Caused by: java.lang.UnsatisfiedLinkError: jss4

これは、JSS または NSS の誤ったバージョンがあることを意味します。このプロセスでは、パスに libnss3.so が必要です。以下のコマンドでこれを確認します。

ldd /usr/lib64/libjss4.so

libnss3.so が見つからない場合は、/etc/sysconfig/instance_name 設定ファイルで正しいクラスパスを設定します。次に、systemctl restart pki-tomcatd@instance_name.service コマンドを使用して CA を再起動します。

問:

CA 署名証明書のサブジェクト名をカスタマイズするには、pkispawn インタラクティブインストールモードを使用します。

答:

これを行うには、/usr/share/pki/server/etc/default.cfg ファイルへのデルタリンクを表す設定ファイルが必要です。pkispawn(8) および pki_default.cfg(5) の man ページを参照してください。

問:

ルート認証局に異なる証明書の有効期間と延長を設定したいのですが、pkispawn を使用して設定する方法がわかりません。

答:

現在、pkispawn を使用して設定できません。ただし、pkispawn で使用する証明書プロファイルを編集してルート CA 証明書を生成する方法は あります

重要

これは、pkispawn を実行して新しい CA インスタンスを作成する 前に 行う必要があります。

  1. pkispawn が使用する元の CA 証明書プロファイルをバックアップします。

    # cp -p /usr/share/pki/ca/conf/caCert.profile /usr/share/pki/ca/conf/caCert.profile.orig
  2. 設定ウィザードが使用する CA 証明書プロファイルを開きます。

    # vim /usr/share/pki/ca/conf/caCert.profile
  3. Validity Default の有効期限を任意の値にリセットします。たとえば、期間を 2 年に変更するには、次のコマンドを実行します。

    2.default.class=com.netscape.cms.profile.def.ValidityDefault
    2.default.name=Validity Default
    2.default.params.range=7200
  4. プロファイルに新しいデフォルトエントリーを作成し、これをリストに追加して、エクステンションを追加します。たとえば、基本的な制約拡張を追加するには、デフォルトを追加します (この例ではデフォルトの #9)。

    9.default.class=com.netscape.cms.profile.def.BasicConstraintsExtDefault
    9.default.name=Basic Constraint Extension Constraint
    9.default.params.basicConstraintsCritical=true
    9.default.params.basicConstraintsIsCA=true
    9.default.params.basicConstraintsPathLen=2

    次に、新しいデフォルトを使用するデフォルトのリストにデフォルトの番号を追加します。

    list=2,4,5,6,7,8,9
  5. 新規プロファイルを設定したら、pkispawn を実行して新規 CA インスタンスを作成し、設定ウィザードに移動します。
問:

サブシステムインスタンスを設定した後、Web サービスページに接続しようとすると、HTTP 500 エラーコードが表示されます。

答:

これは予期しない一般的なエラーであり、さまざまな原因が考えられます。journalsystem、および debug ログファイルでインスタンスに対して、発生したエラーを確認します。これは、いくつかの一般的なエラーを示していますが、他の方法は多数あります。

エラー #1: LDAP データベースは実行していない

内部データベースに Red Hat Directory Server インスタンスが稼働していない場合は、そのインスタンスに接続できません。これは、インスタンスが準備状態にない journal ファイルで、例外が発生することはありません。

java.io.IOException: CS server is not ready to serve.
        com.netscape.cms.servlet.base.CMSServlet.service(CMSServlet.java:409)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:688)

Tomcat ログは、特に LDAP 接続の問題を特定します。

5558.main - [29/Oct/2010:11:13:40 PDT] [8] [3] In Ldap (bound) connection pool
to host ca1 port 389, Cannot connect to LDAP server. Error:
netscape.ldap.LDAPException: failed to connect to server
ldap://ca1.example.com:389 (91)

インスタンスの debug ログは以下のようになります。

[29/Oct/2010:11:39:10][main]: CMS:Caught EBaseException
Internal Database Error encountered: Could not connect to LDAP server host
ca1 port 389 Error netscape.ldap.LDAPException: failed to connect to
server ldap://ca1:389 (91)
        at com.netscape.cmscore.dbs.DBSubsystem.init(DBSubsystem.java:262)

エラー #2: VPN がアクセスをブロックしている

もう 1 つの可能性として、VPN を介してサブシステムに接続している可能性があります。VPN には、Use this connection only for resources on its network などの設定オプションが有効になっている 必要 があります。そのオプションが有効になっていない場合は、インスタンスの Tomcat サービスの journal ログファイルには、HTTP 500 エラーが発生する一連の接続エラーが表示されます。

May 26, 2010 7:09:48 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet services threw exception
java.io.IOException: CS server is not ready to serve.
        at com.netscape.cms.servlet.base.CMSServlet.service(CMSServlet.java:441)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:542)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
	at java.lang.Thread.run(Thread.java:636)

12.2. Java コンソール

問:

pkiconsole を開くことができません。標準出力 (stdout) で Java の例外が表示されます。

答:

これはおそらく、間違った JRE がインストールされているか、間違った JRE がデフォルトとして設定されていることを意味します。alternatives --config java を実行して、選択されている JRE を確認します。Red Hat Certificate System には OpenJDK 1.7 が必要です。

問:

pkiconsole の実行を試みたが "Socket exceptions in stdout" が表示される理由

答:

これは、ポートに問題があることを意味します。管理ポートの SSL/TLS 設定が間違っている (server.xml の設定が間違っている) か、管理者インターフェイスにアクセスするために間違ったポートが付与されたかのいずれかです。

ポートエラーは以下のようになります。

NSS Cipher Supported '0xff04'
java.io.IOException: SocketException cannot read on socket
        at org.mozilla.jss.ssl.SSLSocket.read(SSLSocket.java:1006)
        at org.mozilla.jss.ssl.SSLInputStream.read(SSLInputStream.java:70)
        at
com.netscape.admin.certsrv.misc.HttpInputStream.fill(HttpInputStream.java:303)
        at
com.netscape.admin.certsrv.misc.HttpInputStream.readLine(HttpInputStream.java:224)
        at
com.netscape.admin.certsrv.connection.JSSConnection.readHeader(JSSConnection.java:439)
        at
com.netscape.admin.certsrv.connection.JSSConnection.initReadResponse(JSSConnection.java:430)
        at
com.netscape.admin.certsrv.connection.JSSConnection.sendRequest(JSSConnection.java:344)
        at
com.netscape.admin.certsrv.connection.AdminConnection.processRequest(AdminConnection.java:714)
        at
com.netscape.admin.certsrv.connection.AdminConnection.sendRequest(AdminConnection.java:623)
        at
com.netscape.admin.certsrv.connection.AdminConnection.sendRequest(AdminConnection.java:590)
        at
com.netscape.admin.certsrv.connection.AdminConnection.authType(AdminConnection.java:323)
        at
com.netscape.admin.certsrv.CMSServerInfo.getAuthType(CMSServerInfo.java:113)
        at com.netscape.admin.certsrv.CMSAdmin.run(CMSAdmin.java:499)
        at com.netscape.admin.certsrv.CMSAdmin.run(CMSAdmin.java:548)
        at com.netscape.admin.certsrv.Console.main(Console.java:1655)
問:

コンソールの起動を試み、システムはユーザー名とパスワードの入力を要求します。これらの認証情報を入力すると、コンソールが表示されません。

答:

入力したユーザー名とパスワードが有効であることを確認してください。その場合は、デバッグ出力を有効にして確認します。

デバッグ出力を有効にするには、/usr/bin/pkiconsole ファイルを開き、以下の行を追加します。

============================================
${JAVA} ${JAVA_OPTIONS} -cp ${CP} -Djava.util.prefs.systemRoot=/tmp/.java -Djava.util.prefs.userRoot=/tmp/java com.netscape.admin.certsrv.Console -s instanceID -D 9:all -a $1
----------
note: "-D 9:all" is for verbose output on the console.
============================================

パート III. Certificate System の設定

ここでは、Red Hat Certificate System の初期設定を説明します。

第13章 Certificate System の設定ファイル

すべてのサブシステムの主な設定ファイルは CS.cfg ファイルです。この章では、CS.cfg ファイルの編集に関する基本情報およびそのルールを説明します。この章では、パスワードや Web サービスファイルなど、サブシステムで使用されるその他の便利な設定ファイルも説明します。

13.1. Certificate System サブシステムのファイルおよびディレクトリーの場所

Certificate System サーバーは、1 つ以上 のサブシステムを含む Apache Tomcat インスタンスで構成されます。各サブシステムは、特定のタイプの PKI 関数の要求を処理する Web アプリケーションで構成されます。

利用可能なサブシステムは CA、KRA、OCSP、TKS、および TPS です。各インスタンスには、PKI サブシステムのタイプを 1 つのみ含めることができます。

pkispawn コマンドを使用して、特定のインスタンス内にサブシステムをインストールできます。

13.1.1. インスタンス固有の情報

デフォルトインスタンスの情報 (pki-tomcat) は、表2.2「Tomcat インスタンス情報」 を参照してください。

表13.1 証明書サーバーポートの割り当て (デフォルト)
ポートタイプポート番号注記

セキュアなポート

8443

HTTPS 経由でエンドユーザー、エージェント、および管理者により PKI サービスにアクセスするために使用される主要なポート。

セキュアなポート

8080

HTTP を介した一部のエンドエンティティー機能のために、安全ではないサーバーにアクセスするために使用されます。たとえば、すでに署名されているため暗号化する必要のない CRL を提供するために使用されます。

AJP ポート

8009

フロントエンドの Apache プロキシーサーバーから AJP 接続を介してサーバーにアクセスするために使用されます。HTTPS ポートにリダイレクトします。

Tomcat ポート

8005

Web サーバーによって使用されます。

13.1.2. CA サブシステム情報

このセクションには、CA サブシステムに関する詳細が含まれています。CA サブシステムは、Certificate Server インスタンスに Web アプリケーションとしてインストールできるサブシステムの 1 つです。

表13.2 デフォルトインスタンス (pki-tomcat) の CA サブシステム情報
設定

メインディレクトリー

/var/lib/pki/pki-tomcat/ca/

設定ディレクトリー

/var/lib/pki/pki-tomcat/ca/conf/

設定ファイル

/var/lib/pki/pki-tomcat/ca/conf/CS.cfg

サブシステム証明書

CA 署名証明書

OCSP 署名証明書 (CA の内部 OCSP サービス用)

TLS サーバー証明書

監査ログ署名証明書

サブシステム証明書

セキュリティーデータベース

/var/lib/pki/pki-tomcat/alias/

ログファイル

/var/lib/pki/pki-tomcat/ca/logs/

ログのインストール

/var/log/pki/pki-ca-spawn.date.log

ログのアンインストール

/var/log/pki/pki-ca-destroy.date.log

監査ログ

/var/log/pki/pki-tomcat/ca/signedAudit/

プロファイルファイル

/var/lib/pki/pki-tomcat/ca/profiles/ca/

メール通知テンプレート

/var/lib/pki/pki-tomcat/ca/emails/

Web サービスファイル

エージェントサービス: /var/lib/pki/pki-tomcat/ca/webapps/ca/agent/

管理サービス: /var/lib/pki/pki-tomcat/ca/webapps/ca/admin/

エンドユーザーサービス: /var/lib/pki/pki-tomcat/ca/webapps/ca/ee/

13.1.3. KRA サブシステム情報

このセクションには、KRA サブシステムに関する詳細が含まれています。CA サブシステムは、Certificate Server インスタンスに Web アプリケーションとしてインストールできるサブシステムの 1 つです。

表13.3 デフォルトインスタンス (pki-tomcat) の KRA サブシステム情報
設定

メインディレクトリー

/var/lib/pki/pki-tomcat/kra/

設定ディレクトリー

/var/lib/pki/pki-tomcat/kra/conf/

設定ファイル

/var/lib/pki/pki-tomcat/kra/conf/CS.cfg

サブシステム証明書

トランスポート証明書

ストレージ証明書

TLS サーバー証明書

監査ログ署名証明書

サブシステム証明書

セキュリティーデータベース

/var/lib/pki/pki-tomcat/alias/

ログファイル

/var/lib/pki/pki-tomcat/kra/logs/

ログのインストール

/var/log/pki/pki-kra-spawn-date.log

ログのアンインストール

/var/log/pki/pki-kra-destroy-date.log

監査ログ

/var/log/pki/pki-tomcat/kra/signedAudit/

Web サービスファイル

エージェントサービス: /var/lib/pki/pki-tomcat/kra/webapps/kra/agent/

13.1.4. OCSP サブシステム情報

このセクションには、OCSP サブシステムに関する詳細が含まれています。CA サブシステムは、Certificate Server インスタンスに Web アプリケーションとしてインストールできるサブシステムの 1 つです。

表13.4 デフォルトのインスタンス (pki-tomcat) の OCSP サブシステム情報
設定

メインディレクトリー

/var/lib/pki/pki-tomcat/ocsp/

設定ディレクトリー

/var/lib/pki/pki-tomcat/ocsp/conf/

設定ファイル

/var/lib/pki/pki-tomcat/ocsp/conf/CS.cfg

サブシステム証明書

トランスポート証明書

ストレージ証明書

TLS サーバー証明書

監査ログ署名証明書

サブシステム証明書

セキュリティーデータベース

/var/lib/pki/pki-tomcat/alias/

ログファイル

/var/lib/pki/pki-tomcat/ocsp/logs/

ログのインストール

/var/log/pki/pki-ocsp-spawn-date.log

ログのアンインストール

/var/log/pki/pki-ocsp-destroy-date.log

監査ログ

/var/log/pki/pki-tomcat/ocsp/signedAudit/

Web サービスファイル

エージェントサービス: /var/lib/pki/pki-tomcat/ocsp/webapps/ocsp/agent/

13.1.5. TKS サブシステム情報

このセクションには、TKS サブシステムに関する詳細が含まれています。CA サブシステムは、Certificate Server インスタンスに Web アプリケーションとしてインストールできるサブシステムの 1 つです。

表13.5 サブシステムが初期インストールまたは (pki-tomcat による) 追加のインスタンスの作成のいずれかによって作成されるたび
設定

メインディレクトリー

/var/lib/pki/pki-tomcat/tks/

設定ディレクトリー

/var/lib/pki/pki-tomcat/tks/conf/

設定ファイル

/var/lib/pki/pki-tomcat/tks/conf/CS.cfg

サブシステム証明書

トランスポート証明書

ストレージ証明書

TLS サーバー証明書

監査ログ署名証明書

サブシステム証明書

セキュリティーデータベース

/var/lib/pki/pki-tomcat/alias/

ログファイル

/var/lib/pki/pki-tomcat/tks/logs/

ログのインストール

/var/log/pki/pki-tks-spawn-date.log

ログのアンインストール

/var/log/pki/pki-tks-destroy-date.log

監査ログ

/var/log/pki/pki-tomcat/tks/signedAudit/

Web サービスファイル

エージェントサービス: /var/lib/pki/pki-tomcat/tks/webapps/tks/agent/

13.1.6. TPS サブシステム情報

このセクションには、TPS サブシステムに関する詳細が含まれています。CA サブシステムは、Certificate Server インスタンスに Web アプリケーションとしてインストールできるサブシステムの 1 つです。

表13.6 デフォルトインスタンス (pki-tomcat) の TPS サブシステム情報
設定

メインディレクトリー

/var/lib/pki/pki-tomcat/tps

設定ディレクトリー

/var/lib/pki/pki-tomcat/tps/conf/

設定ファイル

/var/lib/pki/pki-tomcat/tps/conf/CS.cfg

サブシステム証明書

トランスポート証明書

ストレージ証明書

TLS サーバー証明書

監査ログ署名証明書

サブシステム証明書

セキュリティーデータベース

/var/lib/pki/pki-tomcat/alias/

ログファイル

/var/lib/pki/pki-tomcat/tps/logs/

ログのインストール

/var/log/pki/pki-tps-spawn-date.log

ログのアンインストール

/var/log/pki/pki-tps-destroy-date.log

監査ログ

/var/log/pki/pki-tomcat/tps/signedAudit/

Web サービスファイル

エージェントサービス: /var/lib/pki/pki-tomcat/tps/webapps/tps/agent/

13.1.7. 共有 Certificate System サブシステムファイルの場所

サーバー全般操作のために、すべての Certificate System サブシステムインスタンスで使用されるディレクトリーがあります (表13.7「サブシステムファイルの場所」 に記載されています)。

表13.7 サブシステムファイルの場所
ディレクトリーの場所コンテンツ

/var/lib/instance_name

ユーザー固有のディレクトリーの場所およびカスタマイズされた設定ファイル、プロファイル、証明書データベース、Web ファイル、およびサブシステムインスタンスの他のファイルの場所であるメインインスタンスディレクトリーが含まれます。

/usr/share/java/pki

Certificate System サブシステムによって共有される Java アーカイブファイルが含まれます。すべてのサブシステムの共有ファイルとともに、サブディレクトリーにサブシステム固有のファイルがあります。

  • pki/ca/ (CA)
  • pki/kra/ (KRA)
  • pki/ocsp/ (OCSP)
  • pki/tks/(TKS) TPS サブシステムでは使用されません。

/usr/share/pki

Certificate System インスタンスの作成に使用する一般的なファイルとテンプレートが含まれます。すべてのサブシステムの共有ファイルとともに、サブディレクトリーにサブシステム固有のファイルがあります。

  • pki/ca/ (CA)
  • pki/kra/ (KRA)
  • pki/ocsp/ (OCSP)
  • pki/tks/ (TKS)
  • pki/tps (TPS)

/usr/bin

Certificate System サブシステムが共有する pkispawn および pkidestroy インスタンス設定スクリプトおよびツール (Java、ネイティブ、およびセキュリティー) が含まれます。

/var/lib/tomcat5/common/lib

ローカルの Tomcat Web アプリケーションで共有される Java アーカイブファイルへのリンクが含まれ、Certificate System サブシステムによって共有されます。TPS サブシステムが使用していない

/var/lib/tomcat5/server/lib

ローカルの Tomcat Web サーバーによって使用される Java アーカイブファイルへのリンクが含まれ、Certificate System サブシステムによって共有されます。TPS サブシステムが使用していない

/usr/shared/pki

Tomcat サーバーおよび Certificate System インスタンスが使用するアプリケーションが使用する Java アーカイブファイルが含まれます。TPS サブシステムが使用していない

  • /usr/lib/httpd/modules
  • /usr/lib64/httpd/modules

TPS サブシステムによって使用される Apache モジュールが含まれます。CA、KRA、OCSP、または TKS サブシステムでは使用されません。

  • /usr/lib/mozldap
  • /usr/lib64/mozldap

TPS サブシステムが使用する Mozilla LDAP SDK ツール。CA、KRA、OCSP、または TKS サブシステムでは使用されません。

13.2. CS.cfg ファイル

Certificate System サブシステムのランタイムプロパティーは、一連の設定パラメーターで管理されます。これらのパラメーターは、起動時にサーバーが読み込む CS.cfg ファイルに保存されます。

CS.cfg (ASCII ファイル) が作成され、サブシステムの初回インストール時に適切な設定パラメーターが入力されます。インスタンスの機能の変更方法は、サブシステムコンソールで変更することが推奨されます。これが推奨される方法です。管理コンソールで行った変更は、設定ファイルに反映されます。

CS.cfg 設定ファイルを直接編集することもできます。場合によっては、サブシステムを管理する最も簡単な方法となる場合があります。

13.2.1. CS.cfg ファイルの検索

Certificate System サブシステムの各インスタンスには、独自の設定ファイル CS.cfg があります。各サブシステムインスタンスのファイルの内容は、サブシステムの設定方法、追加の設定および設定 (新規プロファイルの追加、セルフテストの有効化など)、サブシステムのタイプによって異なります。

CS.cfg ファイルは、インスタンスの設定ディレクトリーにあります。

/var/lib/pki/ instance_name/subsystem_type/conf

以下に例を示します。

/var/lib/pki/ instance_name/ca/conf

13.2.2. 設定ファイルの編集

警告

設定パラメーターに精通していない場合や、変更がサーバーに許容されていることを認識せずに、設定ファイルを直接編集しないでください。設定ファイルが正しく変更されていないと、Certificate System は起動に失敗します。設定が間違っていると、データが失われる可能性があります。

CS.cfg ファイルを変更するには、以下の手順に従います。

  1. サブシステムインスタンスを停止します。

    # pki-server stop instance_name

    または (nuxwdog watchdog を使用している場合)

    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service

    設定ファイルは、インスタンスの起動時にキャッシュに保存されます。コンソールを介してインスタンスに加えた変更は、ファイルのキャッシュバージョンに変更されます。サーバーが停止または再起動されると、キャッシュに保存されている設定ファイルがディスクに書き込まれます。設定ファイルを編集する前にサーバーを停止すると、サーバーが停止するとキャッシュバージョンの変更が上書きされます。

  2. /var/lib/pki/ instance_name/subsystem_type/conf ディレクトリーを開きます。
  3. テキストエディターで CS.cfg ファイルを開きます。
  4. ファイル内のパラメーターを編集して、変更を保存します。
  5. サブシステムインスタンスを開始します。

    # pki-server start instance_name

    または (nuxwdog watchdog を使用している場合)

    # systemctl start pki-tomcatd-nuxwdog@instance_name.service

13.2.3. CS.cfg 設定ファイルの概要

各サブシステムインスタンスには、設定用のプラグインや Java クラスなど、インスタンスのすべての設定が含まれる独自のメイン設定ファイル CS.cfg があります。パラメーターと特定の設定はサブシステムのタイプによって異なりますが、一般的に CS.cfg ファイルはサブシステムインスタンスの以下の部分を定義します。

  • 名前、ポート割り当て、インスタンスディレクトリー、ホスト名などの基本サブシステムインスタンス情報
  • ログ
  • インスタンスのユーザーディレクトリー (authorization) に対して認証するプラグインおよびメソッド
  • インスタンスが属するセキュリティードメイン
  • サブシステム証明書
  • サブシステムインスタンスによって使用される他のサブシステム
  • サブシステムによって使用されるデータベースタイプおよびインスタンス
  • TKS のキープロファイル、CA の証明書プロファイル、KRA のキーリカバリーに必要なエージェントなどの PKI 関連タスクの設定

設定パラメーターの多く (PKI タスクのパラメーターを除く) は、すべて Java ベースのコンソールを使用するため、CA、OCSP、KRA、および TKS 間でほとんど同じです。したがって、コンソールで管理できる設定には、同様のパラメーターがあります。

CS.cfg ファイルは、基本的な parameter=value 形式です。

#comment
parameter=value

CS.cfg ファイルでは、パラメーターブロックの多くに pound (#) 文字でコメントアウトされた記述的なコメントがあります。コメント、空白行、不明なパラメーター、またはスペルミスのパラメーターはサーバーによって無視されます。

注記

TPS のバグが原因で、CS.cfg ファイルでコメントアウトされている行が無視されなくなります。TPS CS.cfg ファイルの行をコメントアウトするのではなく、それらの行を削除するだけです。

インスタンスの同じ領域を設定するパラメーターは、同じブロックにグループ化される傾向があります。

例13.1 CS.cfg ファイルのログ設定

log.instance.System._000=##
log.instance.System._001=## System Logging
log.instance.System._002=##
log.instance.System.bufferSize=512
log.instance.System.enable=true
log.instance.System.expirationTime=0
log.instance.System.fileName=/var/lib/pki-ca/logs/system
log.instance.System.flushInterval=5
log.instance.System.level=3
log.instance.System.maxFileSize=2000
log.instance.System.pluginName=file
log.instance.System.rolloverInterval=2592000
log.instance.System.type=system

機能の一部は、サブシステムにアクセスするためにセルフテスト、ジョブ、認可などのプラグインを使用して実装されます。これらのパラメーターの場合、プラグインインスタンスには、一意の識別子 (サブシステムに対して呼び出される同じプラグインのインスタンスが複数存在する可能性があるため)、実装プラグイン名、および Java クラスがあります。

例13.2 サブシステム認証設定

authz.impl._000=##
authz.impl._001=## authorization manager implementations
authz.impl._002=##
authz.impl.BasicAclAuthz.class=com.netscape.cms.authorization.BasicAclAuthz
authz.instance.BasicAclAuthz.pluginName=BasicAclAuthz
注記

設定パラメーターの値を適切にフォーマットする必要があるため、2 つのルールを考慮する必要があります。

  • ローカライズする必要のある値は、UTF8 文字である必要があります。
  • CS.cfg ファイルは、パラメーター値のスラッシュ (/) をサポートします。値にバックスラッシュ (\) が必要な場合は、スラッシュでエスケープする必要があります。つまり、2 つのバックスラッシュを続けて使用する必要があります。

以下のセクションでは、CS.cfg ファイル設定およびパラメーターのスナップショットです。これらは、完全な参考資料や CS.cfg ファイルパラメーターの例ではありません。また、各サブシステム設定ファイルで利用可能なパラメーターと使用されるパラメーターは異なりますが、類似しています。

13.2.3.1. サブシステムの基本設定

基本的な設定は、サブシステムの機能や動作に直接関係することなく、インスタンス自体に固有のものです。これには、インスタンス名、root ディレクトリー、プロセスのユーザー ID、およびポート番号の設定が含まれます。インスタンスの初回インストールまたは設定時に割り当てられる設定の多くは、pkispawn で示されます。

例13.3 CA の基本インスタンスパラメーター: pkispawn ファイル ca.cfg

[DEFAULT]
pki_admin_password=Secret.123
pki_client_pkcs12_password=Secret.123
pki_ds_password=Secret.123
# Optionally keep client databases
pki_client_database_purge=False
# Separated CA instance name and ports
pki_instance_name=pki-ca
 pki_http_port=18080
pki_https_port=18443
# This Separated CA instance will be its own security domain
pki_security_domain_https_port=18443

[Tomcat]
# Separated CA Tomcat ports
pki_ajp_port=18009
pki_tomcat_server_port=18005
重要

ポート設定などの情報は CS.cfg ファイルに 含まれ ますが、CS.cfg には 設定 されません。サーバー設定が server.xml ファイルに設定されます。

CS.cfg および server.xml のポートは、稼働中の RHCS インスタンスと一致している 必要があります

13.2.3.2. Logging settings

サブシステムのタイプによって、設定可能なログにはいくつかのタイプがあります。各タイプのログには、CS.cfg ファイルに独自の設定エントリーがあります。

たとえば、CA にはトランザクションログ用のこのエントリーがあります。これにより、ログローテーション、バッファーログ、ログレベルなどの設定が可能になります。

log.instance.Transactions._000=##
log.instance.Transactions._001=## Transaction Logging
log.instance.Transactions._002=##
log.instance.Transactions.bufferSize=512
log.instance.Transactions.enable=true
log.instance.Transactions.expirationTime=0
log.instance.Transactions.fileName=/var/lib/pki/pki-tomcat/ca/logs/transactions
log.instance.Transactions.flushInterval=5
log.instance.Transactions.level=1
log.instance.Transactions.maxFileSize=2000
log.instance.Transactions.pluginName=file
log.instance.Transactions.rolloverInterval=2592000
log.instance.Transactions.type=transaction

これらのパラメーターとその値の詳細は、「Certificate System ログの設定」を参照してください。監査ログが有効になっている限り、これらの値はコンプライアンスには影響しません。

13.2.3.3. 認証および認可の設定

CS.cfg ファイルには、ユーザーがサブシステムインスタンス (認証) にアクセスする方法や、認証された各ユーザーの承認 (認証) されるアクションを設定します。

CS サブシステムは、認証プラグインを使用して、サブシステムにログインする方法を定義します。

以下の例は、SharedSecret という名前の JAVA プラグインをインスタンス化する SharedToken という名前の認証インスタンスを示しています。

auths.impl.SharedToken.class=com.netscape.cms.authentication.SharedSecret
auths.instance.SharedToken.pluginName=SharedToken
auths.instance.SharedToken.dnpattern=
auths.instance.SharedToken.ldap.basedn=ou=People,dc=example,dc=org
auths.instance.SharedToken.ldap.ldapauth.authtype=BasicAuth
auths.instance.SharedToken.ldap.ldapauth.bindDN=cn=Directory Manager
auths.instance.SharedToken.ldap.ldapauth.bindPWPrompt=Rule SharedToken
auths.instance.SharedToken.ldap.ldapauth.clientCertNickname=
auths.instance.SharedToken.ldap.ldapconn.host=server.example.com
auths.instance.SharedToken.ldap.ldapconn.port=636
auths.instance.SharedToken.ldap.ldapconn.secureConn=true
auths.instance.SharedToken.ldap.ldapconn.version=3
auths.instance.SharedToken.ldap.maxConns=
auths.instance.SharedToken.ldap.minConns=
auths.instance.SharedToken.ldapByteAttributes=
auths.instance.SharedToken.ldapStringAttributes=
auths.instance.SharedToken.shrTokAttr=shrTok

一部の認証設定では、LDAP データベースを使用してユーザーエントリーを保存する認証方法を選択できます。その場合、データベース設定は、以下に示すようにプラグインとともに設定されます。

authz.impl.DirAclAuthz.class=com.netscape.cms.authorization.DirAclAuthz
authz.instance.DirAclAuthz.ldap=internaldb
authz.instance.DirAclAuthz.pluginName=DirAclAuthz
authz.instance.DirAclAuthz.ldap._000=##
authz.instance.DirAclAuthz.ldap._001=## Internal Database
authz.instance.DirAclAuthz.ldap._002=##
authz.instance.DirAclAuthz.ldap.basedn=dc=server.example.com-pki-ca
authz.instance.DirAclAuthz.ldap.database=server.example.com-pki-ca
authz.instance.DirAclAuthz.ldap.maxConns=15
authz.instance.DirAclAuthz.ldap.minConns=3
authz.instance.DirAclAuthz.ldap.ldapauth.authtype=SslClientAuth
authz.instance.DirAclAuthz.ldap.ldapauth.bindDN=cn=Directory Manager
authz.instance.DirAclAuthz.ldap.ldapauth.bindPWPrompt=Internal LDAP Database
authz.instance.DirAclAuthz.ldap.ldapauth.clientCertNickname=
authz.instance.DirAclAuthz.ldap.ldapconn.host=localhost
authz.instance.DirAclAuthz.ldap.ldapconn.port=11636
authz.instance.DirAclAuthz.ldap.ldapconn.secureConn=true
authz.instance.DirAclAuthz.ldap.multipleSuffix.enable=false

LDAP のセキュアな設定とパラメーターの説明は、「CS から DS への TLS 相互認証を有効にする」 を参照してください。パラメーターパスは表示される内容とは異なりますが、両方の場所で同じ名前と値が許可されます。

CA は、ユーザーリクエストの承認メカニズムも必要です。これは、承認の設定と同様に、適切な認証プラグインを特定し、そのためにインスタンスを設定して行います。

auths.impl.AgentCertAuth.class=com.netscape.cms.authentication.AgentCertAuthentication
auths.instance.AgentCertAuth.agentGroup=Certificate Manager Agents
auths.instance.AgentCertAuth.pluginName=AgentCertAuth
13.2.3.4. サブシステム証明書の設定

複数のサブシステムには、設定ファイルの各サブシステム証明書のエントリーがあります。

ca.sslserver.cert=MIIDmDCCAoCgAwIBAgIBAzANBgkqhkiG9w0BAQUFADBAMR4wHAYDVQQKExVSZWR...
ca.sslserver.certreq=MIICizCCAXMCAQAwRjEeMBwGA1UEChMVUmVkYnVkY29tcHV0ZXIgRG9tYWluMSQwIgYDV...
ca.sslserver.nickname=Server-Cert cert-pki-ca
ca.sslserver.tokenname=Internal Key Storage Token
13.2.3.5. 必要なサブシステムの設定

少なくとも、各サブシステムは CA に依存するため、CA (およびその他の必要なサブシステム) をサブシステムの設定で設定する必要があります。別のサブシステムへの接続の前に conn. を付けてから、サブシステムのタイプと番号が付けられます。

conn.ca1.clientNickname=subsystemCert cert-pki-tps
conn.ca1.hostadminport=server.example.com:8443
conn.ca1.hostagentport=server.example.com:8443
conn.ca1.hostport=server.example.com:9443
conn.ca1.keepAlive=true
conn.ca1.retryConnect=3
conn.ca1.servlet.enrollment=/ca/ee/ca/profileSubmitSSLClient
conn.ca1.servlet.renewal=/ca/ee/ca/profileSubmitSSLClient
conn.ca1.servlet.revoke=/ca/subsystem/ca/doRevoke
conn.ca1.servlet.unrevoke=/ca/subsystem/ca/doUnrevoke
conn.ca1.timeout=100
13.2.3.6. データベース設定

すべてのサブシステムは LDAP ディレクトリーを使用してそれらの情報を保存します。この内部データベースは internaldb パラメーターで設定されますが、その他の設定オプションが多数ある tokendb パラメーターで設定した TPS を除きます。

internaldb._000=##
internaldb._000=##
internaldb._001=## Internal Database
internaldb._002=##
internaldb.basedn=o=pki-tomcat-ca-SD
internaldb.database=pki-tomcat-ca
internaldb.maxConns=15
internaldb.minConns=3
internaldb.ldapauth.authtype=SslClientAuth
internaldb.ldapauth.clientCertNickname=HSM-A:subsystemCert pki-tomcat-ca
internaldb.ldapconn.host=example.com
internaldb.ldapconn.port=11636
internaldb.ldapconn.secureConn=true
internaldb.multipleSuffix.enable=false

LDAP のセキュアな設定とパラメーターの説明は、「CS から DS への TLS 相互認証を有効にする」 を参照してください。「CS から DS への TLS 相互認証を有効にする」 の一部として行われること以外に追加の設定は必要ありません。

13.2.3.7. キューの有効化および設定

登録プロセスには、発行した証明書をディレクトリーまたはファイルに公開します。したがって、基本的には、最初の証明書要求を閉じます。ただし、外部ネットワークに証明書を公開すると、発行プロセスが大幅に遅くなり、リクエストが開いたままになります。

この状況を回避するために、管理者は 公開キュー を有効にできます。パブリッシュキューは、別のリクエストキューを使用するリクエスト操作および登録操作 (外部の LDAP ディレクトリーを伴う可能性がある) を分離します。要求キューはすぐに更新され、登録プロセスが完了したことを示します。一方、公開キューがネットワークトラフィックの一時停止時に情報を送信します。

公開キューは、承認された証明書ごとに新しいスレッドを開くのではなく、生成された証明書を公開する定義済みの制限された数のスレッドを設定します。

パブリッシュキューはデフォルトで無効になっています。公開を有効にするとともに、CA コンソールで有効にすることができます。

注記

パブリッシュキューはデフォルトで無効になっていますが、コンソールで LDAP 公開が有効な場合にはキューが自動的に有効になります。それ以外の場合は、キューを手動で有効にできます。

図13.1 公開キューの有効化

公開キュー
13.2.3.7.1. CS.cfg ファイルを編集して公開キューを有効化および設定する

CS.cfg ファイルを編集して公開キューを有効にすると、管理者はパブリッシュ操作に使用するスレッドの数やキューページサイズなど、パブリッシュする他のオプションを設定できます。

  1. 設定ファイルを編集できるように CA サーバーを停止します。

    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
  2. CA の CS.cfg ファイルを開きます。

    # vim /var/lib/pki/ instance_name/ca/conf/CS.cfg
  3. ca.publish.queue.enable を true に設定します。パラメーターが存在しない場合は、パラメーターで行を追加します。

    ca.publish.queue.enable=true
  4. その他の関連するパブリッシュキューパラメーターを設定します。

    • ca.publish.queue.maxNumberOfThreads は、公開操作用に開くことができるスレッドの最大数を設定します。デフォルトは 3 です。
    • ca.publish.queue.priorityLevel は、公開操作の優先度を設定します。優先度の値の範囲は、-2 (最も低い優先度) から 2 (最も高い優先度) までです。ゼロ (0) は通常の優先度で、デフォルトはデフォルトです。
    • ca.publish.queue.pageSize は、パブリッシュキューページに格納できるリクエストの最大数を設定します。デフォルトは 40 です。
    • ca.publish.queue.saveStatus は、指定された公開操作の数ごとにステータスを保存する間隔を設定します。これにより、CA が再起動またはクラッシュした場合にパブリッシュキューを復元できます。デフォルトは 200 ですが、CA の再起動時にゼロ以外の番号がキューを復旧します。このパラメーターを 0 に設定すると、キューの復元が無効になります。

      ca.publish.queue.maxNumberOfThreads=1
      ca.publish.queue.priorityLevel=0
      ca.publish.queue.pageSize=100
      ca.publish.queue.saveStatus=200
      ヒント

      ca.publish.queue.enable を false に設定し、ca.publish.queue.maxNumberOfThreads を 0 に設定すると、発行キューと、発行済み証明書を公開するための別スレッドの使用が無効になります。

  5. CA サーバーを起動します。

    # systemctl start pki-tomcatd-nuxwdog@instance_name.service
13.2.3.8. PKI タスクの設定

CS.cfg ファイルは、すべてのサブシステムに PKI タスクを設定するのに使用されます。パラメーターは、重複のないサブシステムごとに異なります。

たとえば、KRA には、鍵を復元するために必要な数のエージェントの設定があります。

kra.noOfRequiredRecoveryAgents=1

各サブシステムの CS.cfg ファイルを確認して、PKI タスク設定を理解してください。ファイル内のコメントは、さまざまなパラメーターが何であるかを学習するための適切なガイドです。

  • CA 設定ファイルには、すべての証明書プロファイルおよびポリシー設定と、CRL を生成するルールがリスト表示されます。
  • TPS は、さまざまなトークン操作を設定します。
  • TKS は、さまざまな鍵タイプからの鍵を取得するプロファイルをリスト表示します。
  • OCSP は、さまざまな鍵セットの鍵情報を設定します。
13.2.3.9. CA 発行証明書の DN 属性の変更

Certificate System が発行した証明書で、DN は証明書を所有するエンティティーを特定します。いずれの場合も、Certificate System が Directory Server に接続されている場合、証明書内の DN の形式はディレクトリー内の DN の形式と一致する必要があります。名前が完全に一致する必要はありません。証明書マッピングにより、証明書のサブジェクト DN をディレクトリー内の DN とは異なるものにすることができます。

Certificate System の DN は、X.509 標準で定義されたコンポーネントまたは属性に基づいています。表13.8「値タイプに許可される文字」 は、デフォルトでサポートされる属性をリスト表示しています。属性のセットは拡張可能です。

表13.8 値タイプに許可される文字
属性値のタイプオブジェクト識別子

cn

DirectoryString

2.5.4.3

ou

DirectoryString

2.5.4.11

o

DirectoryString

2.5.4.10

c

PrintableString、2 文字

2.5.4.6

l

DirectoryString

2.5.4.7

st

DirectoryString

2.5.4.8

street

DirectoryString

2.5.4.9

title

DirectoryString

2.5.4.12

uid

DirectoryString

0.9.2342.19200300.100.1.1

mail

IA5String

1.2.840.113549.1.9.1

dc

IA5String

0.9.2342.19200300.100.1.2.25

serialnumber

PrintableString

2.5.4.5

unstructuredname

IA5String

1.2.840.113549.1.9.2

unstructuredaddress

PrintableString

1.2.840.113549.1.9.8

デフォルトでは、Certificate System は、表13.8「値タイプに許可される文字」 で特定される属性に対応します。サポートされる属性のリストは、新しい属性を作成または追加することで拡張できます。X.500Name 属性またはコンポーネントを追加する構文は次のとおりです。

X500Name.NEW_ATTRNAME.oid=n.n.n.n
X500Name.NEW_ATTRNAME.class=string_to_DER_value_converter_class

値コンバータークラスは文字列を ASN.1 値に変換します。このクラスは netscape.security.x509.AVAValueConverter インターフェイスを実装する必要があります。文字列から値へのコンバータークラスは、次のいずれかになります。

  • netscape.security.x509.PrintableConverter は、文字列を PrintableString 値に変換します。この文字列は、出力可能な文字のみでなければなりません。
  • netscape.security.x509.IA5StringConverter は文字列を IA5String 値に変換します。この文字列は IA5String 文字のみである必要があります。
  • netscape.security.x509.DirStrConverter は文字列を DirectoryString に変換します。この文字列は RFC 2253 に従って DirectoryString 形式になることが予想されます。
  • netscape.security.x509.GenericValueConverter は、最小の文字セットから最大の文字セットへ、次の順序で文字列を文字ごとに変換します。

    • PrintableString
    • IA5String
    • BMPString
    • 汎用文字列

属性エントリーは、以下のようになります。

X500Name.MY_ATTR.oid=1.2.3.4.5.6
X500Name.MY_ATTR.class=netscape.security.x509.DirStrConverter
13.2.3.9.1. 新規属性またはカスタム属性の追加

Certificate System スキーマに新規またはプロプライエタリー属性を追加するには、以下を行います。

  1. Certificate Manager を停止します。

    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
  2. /var/lib/pki/cs`instance/conf/ ディレクトリーを開きます。
  3. 設定ファイル CS.cfg を開きます。
  4. 設定ファイルに新しい属性を追加します。

    たとえば、DirectoryString である MYATTR1IA5String である MYATTR2PrintableString である MYATTR3 の 3 つのプロプライエタリー属性を追加するには、設定ファイルの最後に以下の行を追加します。

    X500Name.attr.MYATTR1.oid=1.2.3.4.5.6
    X500Name.attr.MYATTR1.class=netscape.security.x509.DirStrConverter
    X500Name.attr.MYATTR2.oid=11.22.33.44.55.66
    X500Name.attr.MYATTR2.class=netscape.security.x509.IA5StringConverter
    X500Name.attr.MYATTR3.oid=111.222.333.444.555.666
    X500Name.attr.MYATTR3.class=netscape.security.x509.PrintableConverter
  5. 変更を保存して、ファイルを閉じます。
  6. Certificate Manager を再起動します。

    # systemctl start pki-tomcatd-nuxwdog@instance_name.service
  7. 登録ページを再読み込みして変更を確認します。フォームに新しい属性が表示されるはずです。
  8. 新しい属性が有効になっていることを確認するには、手動登録フォームを使用して証明書を要求します。

    新しい属性に値を入力します。これにより、証明書のサブジェクト名に表示されることを確認できます。たとえば、以下の値を入力して、新しい属性の値を入力し、サブジェクト名で確認します。

    MYATTR1: a_value
    MYATTR2: a.Value
    MYATTR3: aValue
    cn: John Doe
    o: Example Corporation
  9. エージェントサービスページを開き、要求を承認します。
  10. 証明書の発行時に、発行先名を確認します。証明書には、サブジェクト名に新しい属性値が表示されるはずです。
13.2.3.9.2. DER エンコード順序の変更

異なるクライアントが異なるエンコーディングをサポートしているため、DirectoryString の DER エンコーディングの順序を変更して、文字列を設定できます。

DirectoryString の DER エンコーディング順序を変更する構文は以下の通りです。

X500Name.directoryStringEncodingOrder=encoding_list_separated_by_commas

エンコーディング値は以下のとおりです。

  • PrintableString
  • IA5String
  • UniversalString
  • BMPString
  • UTF8String

たとえば、DER エンコーディング順序は次のようになります。

X500Name.directoryStringEncodingOrder=PrintableString,BMPString

DirectoryString エンコーディングを変更するには、以下を行います。

  1. Certificate Manager を停止します。

    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
  2. /var/lib/pki/cs`instance/conf/ ディレクトリーを開きます。
  3. CS.cfg 設定ファイルを開きます。
  4. 設定ファイルにエンコーディング順序を追加します。

    たとえば、PrintableStringUniversalString の 2 つのエンコーディング値を指定し、エンコーディング順序が最初に PrintableString、次に UniversalString を指定するには、設定ファイルの最後に以下の行を追加します。

    X500Name.directoryStringEncodingOrder=PrintableString,UniversalString
  5. 変更を保存して、ファイルを閉じます。
  6. Certificate Manager を開始します。

    # systemctl start pki-tomcatd-nuxwdog@instance_name.service
  7. エンコーディングの順序が有効であることを確認するには、手動登録フォームを使用して証明書を登録します。cn には John_Doe を使用します。
  8. エージェントサービスページを開き、要求を承認します。
  9. 証明書が発行されたら、dumpasn1 ツールを使用して証明書のエンコーディングを検証します。

    サブジェクト名の cn コンポーネントは、UniversalString としてエンコードする必要があります。

  10. cnJohn Smith を使用して新しい要求を作成して提出します。

    サブジェクト名の cn コンポーネントは、PrintableString としてエンコードする必要があります。

13.2.3.10. CRL の署名に各種証明書を使用するための CA 設定

Certificate Manager は、証明書および証明書失効リスト (CRL) の署名に OCSP 署名証明書に対応するキーペアを使用します。別のキーペアを使用して Certificate Manager が生成する CRL に署名するには、CRL 署名証明書を作成できます。Certificate Manager の CRL 署名証明書は、署名するか、または自己発行する必要があります。

Certificate Manager が異なるキーペアで CRL に署名できるようにするには、以下を行います。

  1. Certificate Manager の CRL 署名証明書を要求します。

    または、次のようなキーペアを生成できるツールを使用します。たとえば、certutil ツールを使用してキーペアを生成し、キーペアの証明書を要求し、Certificate Manager の証明書データベースに証明書をインストールします。certutil ツールの詳細は http://www.mozilla.org/projects/security/pki/nss/tools/ を参照してください。

  2. 証明書要求を作成したら、Certificate Manager エンドページを介して証明書を送信し、"Manual OCSP Manager Signing Certificate Enrollment" プロファイルなどの適切なプロファイルを選択します。このページには、次の形式の URL が含まれます。

    https://hostname:port/ca/ee/ca
  3. 要求が送信されたら、エージェントサービスページにログインします。
  4. 必要な拡張機能に関する要求を確認します。CRL 署名証明書には、crlSigning ビットが設定された Key Usage 拡張が含まれている必要があります。
  5. 要求を承認します。
  6. CRL 署名証明書が生成されたら、コンソールの システムキーおよび証明書 を使用して、Certificate Manager のデータベースに証明書をインストールします。
  7. Certificate Manager を停止します。

    # pki-server stop instance_name
  8. Certificate Manager の設定を更新して、新しいキーペアと証明書を認識します。

    1. Certificate Manager インスタンス設定ディレクトリーに移動します。

      # cd /var/lib/pki/instance-name/ca/conf/
    2. CS.cfg ファイルを開き、以下の行を追加します。

      ca.crl_signing.cacertnickname=nickname cert-instance_ID
      ca.crl_signing.defaultSigningAlgorithm=signing_algorithm
      ca.crl_signing.tokenname=token_name

      ニックネーム は、CRL 署名証明書に割り当てられた名前です。

      instance_ID は、Certificate Manager インスタンスの名前です。

      インストールされた CA が RSA ベースの CA の場合、signing_algorithmSHA256withRSASHA384withRSA または SHA512withRSA になります。インストールされている CA が EC ベースの CA の場合、signing_algorithmSHA256withECSHA384withECSHA512withEC になります。

      token_name は、キーペアの生成に使用されるトークンの名前と証明書です。内部/ソフトウェアトークンを使用する場合は、Internal Key Storage Token を値として使用します。

      たとえば、エントリーは以下のようになります。

      ca.crl_signing.cacertnickname=crlSigningCert cert-pki-ca
      ca.crl_signing.defaultSigningAlgorithm=SHAMD512withRSA
      ca.crl_signing.tokenname=Internal Key Storage Token
    3. 変更を保存して、ファイルを閉じます。
  9. Certificate Manager を再起動します。

    # pki-server restart instance_name

    これで、Certificate Manager は CRL 署名証明書を使用して、生成した CRL に署名できるようになりました。

13.2.3.11. CS.cfg でキャッシュからの CRL 生成を設定する

CRL キャッシュは、メモリーに保持されている失効情報のコレクションから証明書失効情報を取得できるようにする単純なメカニズムです。最適なパフォーマンスを得るには、すでにデフォルトの動作を表すこの機能を有効にすることが推奨されます。次の設定情報 (デフォルト) は、情報提供の目的で、または変更が必要な場合に表示されます。

  1. 認証局サーバーを停止します。

    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
  2. CA 設定ディレクトリーを開きます。

    # cd /var/lib/ instance_name/conf/
  3. CS.cfg ファイルを編集し、enableCRLCache および enableCacheRecovery パラメーターを true に設定します。

    ca.crl.MasterCRL.enableCRLCache=true
    ca.crl.MasterCRL.enableCacheRecovery=true
  4. CA サーバーを起動します。

    # systemctl start pki-tomcatd-nuxwdog@instance_name.service
13.2.3.12. CS.cfg で CRL の更新間隔を設定する

以下では、CRL システムを柔軟に設定して目的の動作を反映する方法を説明します。ゴールは、2 種類のスケジュールに応じて CRL 更新を設定することが目的です。1 つのタイプは明示的な時間のリストを許可し、もう 1 つのタイプは更新間の時間間隔の長さで構成されます。また、共にドリフトを考慮して考慮できるハイブリッドシナリオもあります。以下の注記のエントリーは、実際にボックスシナリオのデフォルトを示しています。

デフォルトのシナリオは以下のとおりです。

ca.crl.MasterCRL.updateSchema=3
ca.crl.MasterCRL.enableDailyUpdates=true
ca.crl.MasterCRL.enableUpdateInterval=true
ca.crl.MasterCRL.autoUpdateInterval=240
ca.crl.MasterCRL.dailyUpdates=1:00
ca.crl.MasterCRL.nextUpdateGracePeriod=0

より詳細で具体的な更新スケジュールが必要な場合にのみ、これから逸脱してください。残りのセクションでは、その実行方法を示します。

CS.cfg ファイルで完全な CRL および delta CRL の設定を行うには、パラメーターを編集する必要があります。

表13.9 CRL 拡張間隔パラメーター
パラメーター説明許可される値

updateSchema

完全な CRL ごとに生成されるデルタ CRL 数の比率を設定します。

整数値

enableDailyUpdates

設定された時間に基づいて CRL 更新の設定を有効または無効にします。

true または false

enableUpdateInterval

設定された間隔に基づいて CRL 更新の設定を有効または無効にします。

true または false

dailyUpdates

CRL の更新時間を設定します。

コンマ区切りの時間リスト

autoUpdateInterval

CRL を更新する間隔を分単位で設定します。

整数値

autoUpdateInterval.effectiveAtStart

現在スケジュールされている nextUpdate の時刻を待つのではなく、システムが自動更新の新しい値をすぐに使用できるようにします

true または false

nextUpdateGracePeriod

CRL の有効期間に分単位を追加し、公開またはレプリケーション期間全体で CRL が有効である状態にする期間を追加します。

整数値

refreshInSec

クローン OCSP のスレッドの周期を秒単位で設定して、LDAP で CRL の更新を確認します。

整数値

重要

autoUpdateInterval.effectiveAtStart パラメーターでは、新しい値を適用するためにシステムを再起動する必要があります。このパラメーターのデフォルト値は false です。これは、自分が何をしているかを確信しているユーザーのみが変更する必要があります。

手順: CS.cfg での CRL 更新間隔の設定方法

  1. 認証局サーバーを停止します。

    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
  2. CA 設定ディレクトリーに移動します。

    # cd /var/lib/ instance_name/conf/
  3. CS.cfg ファイルを編集し、次の行を追加して更新間隔を設定します。

    ca.crl.MasterCRL.updateSchema=3

    デフォルトの間隔は 1 です。これは、CRL が生成されるたびに完全な CRL が生成されることを意味します。updateSchema 間隔は任意の整数に設定できます。

  4. 周期的な間隔を指定するか、更新を実行する時間を設定して、更新頻度を設定します。

    • enableDailyUpdates パラメーターを有効にして設定時間を指定し、dailyUpdates パラメーターに希望の時間を追加します。

      ca.crl.MasterCRL.enableDailyUpdates=true
      ca.crl.MasterCRL.enableUpdateInterval=false
      ca.crl.MasterCRL.dailyUpdates=0:50,04:55,06:55

      このフィールドは、CRL を更新する必要がある毎日の時間を設定します。複数の時間を指定するには、01:50,04:55,06:55 などのコンマ区切りリストを入力します。複数日のスケジュールを入力するには、コンマ区切りのリストを入力して同じ日の時間を設定し、セミコロンで区切ったリストを入力して異なる日の時間を識別します。たとえば、01:50,04:55,06:55;02:00,05:00,17:00 を設定して、サイクルの 1 日目の午前 1:50、4:55、および 6:55、そして 2 日目の午前 2:00、5:00、および午後 5:00 に失効を設定します。

      enableUpdateInterval パラメーターを有効にして間隔を指定し、autoUpdateInterval パラメーターに必要な間隔を分単位で追加します。

      ca.crl.MasterCRL.enableDailyUpdates=false
      ca.crl.MasterCRL.enableUpdateInterval=true
      ca.crl.MasterCRL.autoUpdateInterval=240
  5. 環境に応じて以下のパラメーターを設定します。

    • OCSP サブシステムなしで CA を実行する場合は、以下を設定します。

      ca.crl.MasterCRL.nextUpdateGracePeriod=0
    • OCSP サブシステムで CA を実行する場合は、以下を設定します。

      ca.crl.MasterCRL.nextUpdateGracePeriod=time_in_minutes

      ca.crl.MasterCRL.nextUpdateGracePeriod パラメーターは時間を分単位で定義します。この値は、CA が新しい CRL を OCSP に伝播できるように十分な大きさである必要があります。パラメーターをゼロ以外の値に設定する必要があります。

      お使いの環境に OCSP クローンが追加されている場合は、以下も設定します。

      ocsp.store.defStore.refreshInSec=time_in_seconds

      ocsp.store.defStore.refreshInSec パラメーターは、マスター OCSP インスタンスからの LDAP レプリケーション更新を使用して、クローン OCSP インスタンスが CRL 更新に通知する頻度を秒単位で設定します。

      パラメーターの詳細は、表13.9「CRL 拡張間隔パラメーター」 を参照してください。

  6. CA サーバーを起動します。

    # systemctl start pki-tomcatd-nuxwdog@instance_name.service
注記

間隔ごとに CRL を更新するとドリフトが発生する場合があります。通常、ドリフトは手動更新と CA の再起動時に実行されます。

スケジュールのドリフトを防ぐには、enableDailyUpdates および enableUpdateInterval パラメーターの両方を true に設定し、autoUpdateIntervaldailyUpdates に必要な値を追加します。

ca.crl.MasterCRL.enableDailyUpdates=true
ca.crl.MasterCRL.enableUpdateInterval=true
ca.crl.MasterCRL.autoUpdateInterval=240
ca.crl.MasterCRL.dailyUpdates=1:00

間隔で CRL を更新する場合、受け入れられる dailyUpdates は 1 つだけです。

間隔の更新は、スケジュールのドリフトを防ぐために 24 時間ごとに dailyUpdates の値と再同期されます。

13.2.3.13. サブシステムのアクセス制御設定の変更

デフォルトでは、アクセス制御ルールは最初に拒否ルールを評価してから、許可ルールを評価することで適用されます。順序を変更するには、CS.cfgauthz.evaluateOrder パラメーターを変更します。

authz.evaluateOrder=deny,allow

さらに、アクセス制御ルールは、ローカルの web.xml ファイル (基本 ACL) から評価することも、LDAP データベースを確認すると、より複雑な ACL にアクセスすることもできます。authz.sourceType パラメーターは、使用する認可のタイプを識別します。

authz.sourceType=web.xml
注記

CS.cfg ファイルを編集したら、必ず更新された設定を読み込むためにサブシステムを再起動します。

13.2.3.14. TLS クライアント証明書認証を使用するための pkiconsole 要件の設定
注記

pkiconsole は非推奨になりました。

各サブシステムの CS.cfg ファイルを編集し、authType パラメーターを検索して、以下のように設定します。

authType=sslclientauth

13.3. システムパスワードの管理

「パスワードとウォッチドッグ (nuxwdog)」 で説明されているように、Certificate System は、サーバーにバインドするパスワードを使用するか、サーバーの起動時にトークンのロックを解除します。

password.conf ファイルは、システムパスワードをプレーンテキストで保存します。ただし、一部の管理者は、パスワードファイルを完全に削除して、nuxwdog が各パスワードの手動入力を要求し、予定外のシャットダウンの場合は自動再起動を保存することを希望します。

Certificate System インスタンスが起動すると、サブシステムは自動的に password.conf ファイルを確認します。ファイルが存在する場合は、それらのパスワードを使用して内部 LDAP データベースなどの他のサービスに接続します。そのファイルが存在しない場合は、ウォッチドッグデーモンは、PKI サーバーが起動するのに必要なすべてのパスワードを要求します。

注記

password.conf ファイルが存在する場合、サブシステムでは必要なパスワードがすべて存在し、適切にフォーマットされたことを前提としています。パスワードが欠落しているか、フォーマットが間違っていると、システムは正しく起動できません。

必要なパスワードは、CS.cfg ファイルの cms.passwordlist パラメーターにリストされています。

cms.passwordlist=internaldb,replicationdb,CA LDAP Publishing
cms.password.ignore.publishing.failure=true
注記

cms.password.ignore.publishing.failure パラメーターを使用すると、CA サブシステムは、いずれかの LDAP 公開ディレクトリーへの接続に失敗した場合でも、正常に起動できます。

CA、KRA、OCSP、および TKS サブシステムでは、デフォルトの予想されるパスワードは以下のとおりです。

  • internal (NSS データベースの場合)
  • internaldb (内部 LDAP データベースの場合)
  • replicationdb (レプリケーションパスワードの場合)
  • パブリッシュ用に外部 LDAP データベースにアクセスするためのパスワード (CA のみ)

    注記

    パブリッシャーが password.conf ファイルの削除後に設定されている場合は、password.conf ファイルに書き込まれません。nuxwdog が設定されていない場合、サーバーは、次回インスタンスを再起動したときに新しい公開パスワードを要求するプロンプトにアクセスできません。

  • 外部のハードウェアトークンのパスワード

TPS の場合は、これにより 3 つのパスワードが要求されます。

  • internal (NSS データベースの場合)
  • tokendbpass (内部 LDAP データベースの場合)
  • 外部のハードウェアトークンのパスワード

このセクションでは、Certificate System がこれらのパスワードを取得するメカニズムを 2 つ説明します。

  • password.conf ファイル (デフォルト)
  • nuxwdog (watchdog)

13.3.1. password.conf ファイルの設定

注記

このセクションは参照用途としてのみ提供されています。正しい操作とセキュアな操作には、nuxwdog ウォッチドッグを使用する必要があります。完全なコンプライアンスに必要なため、「Certificate System の Watchdog サービスの使用」 を参照して nuxwdog を有効にしてください。

デフォルトでは、パスワードは、サブシステム conf/ ディレクトリーにプレーンテキストファイル password.conf に保存されます。したがって、テキストエディターを使用して変更できます。

このファイルに保存されているパスワードのリストには、以下が含まれます。

  • 内部データベースへのアクセスおよび更新に Certificate System インスタンスによって使用されるバインドパスワード。
  • HSM のパスワード。
  • 認証ディレクトリーにアクセスするために Certificate System インスタンスによって使用されるバインドパスワード (CMC Shared Token の場合)。
  • LDAP 公開ディレクトリーにアクセスして更新するためにサブシステムによって使用されるバインドパスワード。これは、証明書および CRL を LDAP 準拠のディレクトリーに公開するように設定されている場合にのみ必要です。
  • サブシステムがレプリケーションデータベースにアクセスするために使用するバインドパスワード。
  • TPS インスタンスでは、トークンデータベースへのアクセスおよび更新に使用されるバインドパスワード。

password.conf ファイルには、サブシステムの秘密鍵を開くのに必要なトークンパスワードも含まれます。

サブシステムに使用する名前と場所のパスワードファイルは CS.cfg ファイルに設定されています。

passwordFile=/var/lib/pki/ instance_name/conf/password.conf

内部パスワードストアとレプリケーションデータベースには、サブシステムのインストールと設定時に設定されたランダムに生成された PIN があります。内部 LDAP データベースのパスワードは、インスタンスの設定時に管理者によって定義されました。

password.conf ファイルのパスワードエントリーの形式は、以下のとおりです。

name=password

以下に例を示します。

internal=413691159497

HSM トークンが必要な場合は、以下の形式を使用します。

hardware-name=password

以下に例を示します。

hardware-NHSM6000=MyHSM$S8cret

password.conf ファイルの内容の例:

internal=376577078151
internaldb=secret12
replicationdb=1535106826
hardware-NHSM6000=MyHSM$S8cret

13.3.2. Certificate System の Watchdog サービスの使用

Certificate System では、ウォッチドッグサービスを使用して、開始するためにセキュリティーデータベースにアクセスするためにパスワードを必要とするサービスを開始します。暗号化されていないパスワードをシステムに保存しないという要件がある場合、ウォッチドッグサービスは次のようになります。

  • サーバーの起動時に関連するパスワードを要求し、そのメッセージをキャッシュします。
  • クラッシュが原因でサーバーが自動的に再起動される場合に、キャッシュされたパスワードを使用します。
13.3.2.1. Watchdog サービスの有効化

ウォッチドッグサービスを有効にするには、以下を実行します。

  1. このホストで Shared Secret 機能を使用する場合は、「CMC 共有シークレット機能の有効化」 の説明に従って Shared Secret 機能を有効にします。
  2. /var/lib/pki/ instance_name/conf/ ディレクトリーから server.xml および password.conf ファイルをバックアップします。以下に例を示します。

    # cp -p /var/lib/pki/ instance_name/conf/server.xml /root/
    # cp -p /var/lib/pki/ instance_name/conf/password.conf /root/
  3. Certificate System インスタンスのサービスを停止し、無効にします。

    # systemctl stop pki-tomcatd@instance_name.service
    # systemctl disable pki-tomcatd@instance_name.service
  4. Hardware Security Module (HSM) を使用する場合は、ウォッチドッグサービスを有効にして、ハードウェアトークンのパスワードを入力するようにします。

    • ハードウェアトークンの名前を表示します。

      # egrep "^hardware-" /var/lib/pki/ instance_name/conf/password.conf
      hardware-HSM_token_name=password

      上記の例で強調表示された文字列は、ハードウェアトークン名です。

    • /var/lib/pki/ instance_name/conf/ca/CS.cfg ファイルに cms.tokenList パラメーターを追加して、ハードウェアトークンの名前に設定します。以下に例を示します。

      cms.tokenList=HMS_token_name
  5. インスタンスのウォッチドッグ設定を有効にします。

    # pki-server instance-nuxwdog-enable instance_name

    または、すべてのインスタンスでウォッチドッグを有効にします。

    # pki-server nuxwdog-enable

    詳細は、pki-server-nuxwdog(8) の man ページを参照してください。

  6. デフォルトでは、nuxwdog は、/etc/sysconfig/pki-tomcat ファイルの TOMCAT_USER 変数で設定したユーザーとしてサーバーを起動します。必要に応じて、ユーザーおよびグループを変更する場合は、次のコマンドを実行します。

    • インスタンスの watchdog systemd ユニットファイルを、/etc/systemd/system/ ディレクトリーにコピーします。

      # cp -p /usr/lib/systemd/system/instance_name-nuxwdog@.service /etc/systemd/system/
      注記

      /etc/systemd/system/ ディレクトリーのユニットファイルの優先度は高く、更新中は置き換えられません。

    • /etc/pki/ instance_name/nuxwdog.conf ファイルの [Service] セクションに以下のエントリーを追加します。

      User new_user_name
    • systemd 設定をリロードします。

      # systemctl daemon-reload
  7. ウォッチドッグを使用する Certificate System サービスを有効にします。

    # systemctl enable pki-tomcatd-nuxwdog@instance_name.service
  8. 必要に応じて、「Certificate System の Watchdog が有効になっていることの確認」 を参照してください。
  9. Certificate System インスタンスを起動するには、以下のコマンドを実行してプロンプトを入力します。

    # systemctl start pki-tomcatd-nuxwdog@instance_name.service
13.3.2.2. Watchdog が有効になっている Certificate System の起動および停止

Certificate System インスタンスの管理方法は、「実行管理 (systemctl)」 を参照してください。

13.3.2.3. Certificate System の Watchdog が有効になっていることの確認

ウォッチドッグサービスが有効になっていることを確認するには、次のコマンドを実行します。

  1. pki-tomcatd-nuxwdog サービスが有効になっていることを確認します。

    # systemctl is-enabled pki-tomcatd-nuxwdog@instance_name.service
    enabled
  2. pki-tomcatd サービスが無効になっていることを確認します。

    # systemctl is-disabled pki-tomcatd@instance_name.service
    disabled
  3. /etc/pki/ instance_name/server.xml ファイルで以下を行います。

    • passwordFile パラメーターが CS.cfg ファイルを参照していることを確認します。以下に例を示します。

      passwordFile="/var/lib/pki/ instance_name/ca/CS.cfg"
    • passwordClass パラメーターが com.netscape.cms.tomcat.NuxwdogPasswordStore に設定されていることを確認します。

      passwordClass="com.netscape.cms.tomcat.NuxwdogPasswordStore"
13.3.2.4. Watchdog サービスの無効化

ウォッチドッグサービスを無効にするには、次のコマンドを実行します。

  1. ウォッチドッグを使用する Certificate System インスタンスのサービスを停止して無効にします。

    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
    # systemctl disable pki-tomcatd-nuxwdog@instance_name.service
  2. インスタンスのウォッチドッグなしで通常のサービスを有効にします。

    # pki-server instance-nuxwdog-disable instance_name
  3. インスタンスのウォッチドッグ設定を無効にします。

    # systemctl enable pki-tomcatd@instance_name.service

    詳細は、pki-server-nuxwdog(8) の man ページを参照してください。

  4. password.conf ファイルを元の場所に復元します。以下に例を示します。

    # cp /root/password.conf.bak /var/lib/pki/ instance_name/conf/password.conf
  5. Certificate System インスタンスを起動します。

    # systemctl start pki-tomcatd@instance_name.service

13.4. Tomcat Engine および Web サービスの設定ファイル

サブシステムのユーザーおよび管理 (管理者、エージェント、および監査者) サービスはすべて、Web プロトコルを介してアクセスされます。

このセクションでは、すべての Red Hat Certificate System サブシステム (CA、KRA、OCSP、TKS、および TPS) に適用される設定ファイルの 2 つの主要なセットを説明します。

  • /var/lib/pki/ instance_name/conf/server.xml で Tomcat エンジンの設定を指定します。
  • /usr/share/pki/subsystem_type/webapps/WEB-INF/web.xml は、このインスタンスが提供する Web サービスの設定を指定します。

13.4.1. Tomcatjss

注記

以降のサブセクションには、パラメーター値で必要な変更に関する重要な設定情報が含まれます。必ず厳密なコンプライアンスを確保してください。

サンプルの pki-tomcat/conf ディレクトリーにある server.xml ファイルの以下の設定は、Tomcatjss が Certificate System エコシステム全体にどのように適合するかを説明するために使用できます。シークレットポートの Connector エントリーの一部を以下に示します。

Connector name="Secure"

# Info about the socket itself
port="8443"
protocol="org.apache.coyote.http11.Http11Protocol"
SSLEnabled="true"
sslProtocol="SSL"
scheme="https"
secure="true"
connectionTimeout="80000"
maxHttpHeaderSize="8192"
acceptCount="100" maxThreads="150" minSpareThreads="25"
enableLookups="false" disableUploadTimeout="true"
# Points to our tomcat jss implementation
sslImplementationName="org.apache.tomcat.util.net.jss.JSSImplementation"

# OCSP responder configuration can be enabled here
enableOCSP="true"
ocspCacheSize="1000"
ocspMinCacheEntryDuration="60"
ocspMaxCacheEntryDuration="120"
ocspTimeout="10"

# A collection of cipher related settings that make sure connections are secure.
strictCiphers="true"
# The "clientAuth" parameter configures the client authentication scheme
# for this server socket. If you set "clientAuth" to "want", the client
# authentication certificate is optional. Alternatively, set the
# parameter to "required" to configure that the certificate is is mandatory.
clientAuth="want"
sslVersionRangeStream="tls1_1:tls1_2"
sslVersionRangeDatagram="tls1_1:tls1_2"
sslRangeCiphers="+TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,+TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,+TLS_DHE_RSA_WITH_AES_128_CBC_SHA,+TLS_DHE_RSA_WITH_AES_256_CBC_SHA,+TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,+TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,+TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,+TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,+TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,+TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,+TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,+TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
serverCertNickFile="/var/lib/pki/pki-tomcat/conf/serverCertNick.conf"
passwordFile="/var/lib/pki/pki-tomcat/conf/password.conf"
passwordClass="org.apache.tomcat.util.net.jss.PlainPasswordFile"
certdbDir="/var/lib/pki/pki-tomcat/alias"

/

Tomcat エンジンの server.xml 設定ファイルに、この Connector 設定要素として、この Connector オブジェクトの sslImplementation プロパティーにプラグインできる tomcatjss 実装へのポインターが含まれるこの Connector 設定要素があります。

各キーパラメーター要素は、以下のサブセクションで説明します。

13.4.1.1. TLS 暗号の設定

server.xml ファイルで設定した TLS 暗号は、Red Hat Certificate System がクライアントおよびサーバーとして機能する際にシステム全体のデフォルトを提供します。これには、サーバーとして機能する場合 (たとえば、Tomcat から HTTPS 接続を提供する場合) およびクライアントとして機能する場合 (たとえば、LDAP サーバーと通信する場合または別の Certificate System インスタンスと通信する場合) が含まれます。

サーバー TLS 暗号の設定は、Red Hat Certificate System インスタンス固有の /var/lib/pki/ instance_name/conf/server.xml ファイルにあります。以下のパラメーターは、提供される暗号を制御します。

  • strictCipherstrue に設定すると、sslRangeCiphers\+ 記号が付いた暗号のみが有効になります。

    strictCiphers="true"

    デフォルト値 (true) を変更しないでください。

  • sslVersionRangeStreamsslVersionRangeDatagram は、サーバーがサポートする TLS バージョンを設定します。パラメーターのデフォルト値は以下のとおりです。

    sslVersionRangeStream="tls1_1:tls1_2"
    sslVersionRangeDatagram="tls1_1:tls1_2"

    パラメーターのデフォルト値は変更しないでください。

  • sslRangeCiphers は、どの暗号を有効化または無効化するか設定します。\+ 記号の付いた暗号は有効になり、- 記号の付いた暗号は無効になります。

    RSA 暗号を以下のように設定します。

    sslRangeCiphers="+TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,+TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,+TLS_DHE_RSA_WITH_AES_128_CBC_SHA,+TLS_DHE_RSA_WITH_AES_256_CBC_SHA,+TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,+TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,+TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,+TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,+TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,+TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,+TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,+TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

    EC 暗号を以下のように設定します。

    sslRangeCiphers="+TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,+TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,+TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,+TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,+TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,+TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,+TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

    許可される暗号のリストは、「TLS、ECC、および RSA」 を参照してください。

  • RSA で FIPS モードが有効になっているシステムに LunaSA または nCipher の Hardware Security Module (HSM) のいずれかを使用した Certificate System をインストールする場合は、FIPS モードの HSM ではサポートされていないため、以下の暗号を無効にします。

    • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
    • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
    • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
    • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
13.4.1.1.1. クライアント TLS 暗号の設定

Red Hat Certificate System は、別の CS システムへのクライアントとして動作している場合にシステムでの暗号化設定を可能にします。

リストの暗号はコンマで区切ります。

CA で (KRA と CA の通信用)、以下を行います。

ca.connector.KRA.clientCiphers=your selected cipher list

以下に例を示します。

ca.connector.KRA.clientCiphers=TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA

TPS の場合 (CA、KRA、および TKS との通信用):

tps.connector.ca id.clientCiphers=your selected cipher list
			tps.connector.kra id.clientCiphers=your selected cipher list
			tps.connector.tks id.clientCiphers=your selected cipher list

以下に例を示します。

tps.connector.ca1.clientCiphers=TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA
13.4.1.2. CA での自動失効チェックの有効化

CA は、SSL/TLS クライアントの認証中にサーバーが受信する証明書 (エージェント、管理者、登録を含む) の失効ステータスを確認するように設定できます。つまり、CA がクライアント認証要求を受け取ると、OCSP が自動的にチェックされます。OCSP レスポンダーの設定に関する詳細は、Red Hat Certificate システム管理ガイドOCSP (Online Certificate Status Protocol) レスポンダーの使用 を参照してください。

CA は、失効チェックの一環としてクライアント認証をキャッシュし、検証された証明書のリストを保持するようにします。これにより、CA は内部データベースまたは OCSP をチェックする前にキャッシュされた結果をチェックできるようになり、全体的な操作パフォーマンスが向上します。revocationChecking.enabled パラメーターで、自動失効チェックが有効になります。

失効ステータスの結果は、指定された期間 (revocationChecking.validityInterval) のみ有効になります。CA がキャッシュにある証明書の状態を再検証する方法がない場合は、有効期間外であっても、以前キャッシュされていた状態が有効とみなされる猶予間隔 (revocationChecking.unknownStateInterval) があります。

注記

キャッシュされた証明書はバッファー (revocationChecking.bufferSize) に保存されます。バッファー設定がない場合やゼロに設定されている場合は、バッファーは保持されません。つまり、失効チェックの結果はキャッシュされません。この場合、失効チェックはすべて CA 内部データベースに対して直接実行されます。

注記

サブシステム CS.cfg 設定ファイルにはパラメーター jss.ocspcheck.enable が含まれています。このパラメーターは、Certificate Manager が OCSP を使用して、SSL/TLS クライアントまたはサーバー認証の一部として受信する証明書の失効状態を検証するかどうかを設定します。このパラメーターの値を true に変更すると、Certificate Manager は証明書の Authority Information Access 拡張を読み取り、拡張に指定された OCSP レスポンダーから証明書の失効状態を検証します。

  1. サブシステムインスタンスを停止します。

    # pki-server stop instance_name
  2. CS.cfg ファイルを開きます。

    # vim /var/lib/pki/instance-name/ca/conf/CS.cfg
  3. 失効関連のパラメーターを編集します。

    auths.revocationChecking.bufferSize=50
    	auths.revocationChecking.ca=ca
    	auths.revocationChecking.enabled=true
    	auths.revocationChecking.unknownStateInterval=0
    	auths.revocationChecking.validityInterval=120
    • revocationChecking.ca。OCSP 応答、CA または OCSP レスポンダーを提供するサービスを設定します。
    • revocationChecking.enabled。失効チェックを設定します。チェックは、true の場合は有効、false の場合は無効になります。デフォルトでは、この機能は有効になっています。
    • revocationChecking.bufferSize。サーバーがキャッシュで維持する必要のある、最後に確認された証明書の合計数を設定します。たとえば、バッファーサイズが 2 の場合、サーバーはキャッシュでチェックされた最後の 2 つの証明書を保持します。デフォルトでは、サーバーは最後の 50 個の証明書をキャッシュします。
    • revocationChecking.unknownStateInterval。サーバーが失効ステータスを確認する頻度を設定します。デフォルトの間隔は 0 秒です。unknownStateInterval は、CA に証明書のステータスを確認する手段がない (情報へのアクセスが許可されていない) 場合に、キャッシュ結果が true であると見なされる猶予期間です。
    • revocationChecking.validityInterval。キャッシュされた証明書が有効とみなされる期間を設定します。間隔を選択するときは慎重に行ってください。たとえば、有効期間が 60 秒の場合、サーバーは 1 分ごとにキャッシュ内の証明書を破棄し、ソースから証明書を取得しようとします。Certificate Manager は内部データベースを使用して、証明書の失効ステータスを取得して確認します。デフォルトの有効期間は 120 秒 (2 分) です。
  4. Certificate System インスタンスを起動します。

    # pki-server start instance_name
13.4.1.3. サブシステムの証明書失効チェックの有効化

Certificate System サブシステムには、デフォルトで OCSP チェックを有効にしてサブシステム証明書を検証します。つまり、失効した証明書を使用して管理インターフェイスまたはエージェントインターフェイスにログインすることができます。

server.xml ファイルを編集して、すべてのサブシステムに対して OCSP チェックを有効にできます。エージェントインターフェイスと管理インターフェイスは別々に設定されるため、この設定で両方のセクションを編集する必要があります。

注記

サブシステムが内部データベースで SSL/TLS 接続を使用するように設定されている場合は、LDAP 内部データベースの SSL/TLS サーバー証明書が OCSP レスポンダーによって認識される必要があります。OCSP レスポンダーが LDAP サーバー証明書を認識しない場合は、サブシステムが適切に起動しません。この設定は、サブシステムの SSL/TLS サーバー接続がサブシステム設定の一部として設定されているため、Red Hat Certificate System のプランニング、インストール、デプロイメントガイド で説明されています。

  1. 証明書ステータスの確認に使用される OCSP または CA の OCSP 署名証明書の名前を取得します。以下に例を示します。

    # certutil -L -d /etc/pki/instance-name/alias
    
    		Certificate Nickname                        Trust Attributes
    													SSL,S/MIME,JAR/XPI
    
    		Certificate Authority - Example Domain      CT,c,
    		ocspSigningCert cert-pki-ocsp               CTu,Cu,Cu
    		subsystemCert cert-pki-ocsp                 u,u,u
    		Server-Cert cert-pki-ocsp                   u,u,u
    		auditSigningCert cert-pki-ocsp              u,u,Pu
  2. サブシステムの server.xml ファイルを開きます。以下に例を示します。

    # vim /etc/pki/instance-name/server.xml
  3. OCSP 署名証明書がインスタンスのセキュリティーデータベースにない場合は、インポートします。

    # certutil -d /etc/pki/instance-name/alias -A -n "ocspSigningCert cert-pki-ca" -t "C,," -a -i ocspCert.b64
  4. OCSP チェックを有効にするには、以下の 3 つの重要なパラメーターがあります。

    • enableOCSP: OCSP チェックを有効にするには、true に設定する必要があります。

      これはグローバル設定です。単一のインターフェイスに設定されている場合には、インスタンスのすべてのインターフェイスに適用されます。ただし、通常は、server.xml ファイルに記載されている最初のインターフェイスで設定する必要があります。別のインターフェイスの設定は無視されます。

    • ocspResponderURL: OCSP レスポンダーの URL に OCSP リクエストを送信します。

      OCSP Manager の場合は、別の OCSP または CA の別の OCSP サービスになります。その他のサブシステムでは、これは常に OCSP または CA の外部 OCSP サービスを参照します。

    • ocspResponderCertNickname: レスポンスの署名に使用する署名証明書を提供します。CA OCSP サービスの場合、これは CA の OCSP 署名証明書であり、OCSP レスポンダーは OCSP 署名証明書になります。

      その他のパラメーターを使用して OCSP 通信を定義できます。OCSP チェックパラメーターはすべて 表13.10「server.xml の OCSP パラメーター」 に記載されています。

      エージェントインターフェイスと管理者インターフェイス用に、ファイルには 2 つの異なるセクションがあります。OCSP チェックを有効にして設定するには、両方のセクションに OCSP パラメーターを追加する必要があります。以下に例を示します。

      例13.4 エージェントインターフェイスの OCSP 設定

      Connector name="Agent" port="8443" maxHttpHeaderSize="8192"
      					maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
      					enableLookups="false" disableUploadTimeout="true"
      					acceptCount="100" scheme="https" secure="true"
      					clientAuth="true" sslProtocol="SSL"
      					sslOptions="ssl2=true,ssl3=true,tls=true"
      
      		ssl3Ciphers="-SSL3_FORTEZZA_DMS_WITH_NULL_SHA, ..."
      
      		tls3Ciphers="-SSL3_FORTEZZA_DMS_WITH_NULL_SHA, ..."
      					SSLImplementation="org.apache.tomcat.util.net.jss.JSSImplementation"
      					enableOCSP="true"
      					ocspResponderURL="http://server.example.com:8443/ca/ocsp"
      					ocspResponderCertNickname="ocspSigningCert cert-pki-ca 102409a"
      					ocspCacheSize="1000"
      					ocspMinCacheEntryDuration="60"
      					ocspMaxCacheEntryDuration="120"
      					ocspTimeout="10"
      					debug="true"
      					serverCertNickFile="/etc/pki/instance-name/serverCertNick.conf"
      					passwordFile="/etc/pki/instance-name/password.conf"
      					passwordClass="org.apache.tomcat.util.net.jss.PlainPasswordFile"
      					certdbDir="/etc/pki/instance-name/alias"/>
  5. 指定の OCSP サービスが CA ではない場合は、OCSP サービスの署名証明書がサブシステムの NSS データベースにインポートする必要があります。これは、コンソールまたは certutil を使用して行うことができます。いずれのオプションも、Red Hat Certificate System 管理ガイドCertificate System データベースへの Certificates のインストール で説明されています。
  6. サブシステムを再起動します。

    # pki-server restart instance_name
表13.10 server.xml の OCSP パラメーター
パラメーター説明

enableOCSP

サブシステムの OCSP チェックを有効 (または無効) にします。

ocspResponderURL

OCSP リクエストが送信される URL を設定します。OCSP Manager の場合は、別の OCSP または CA の別の OCSP サービスになります。TKS または KRA の場合、これは常に OCSP または CA の外部 OCSP サービスを指します。

ocspResponderCertNickname

レスポンダーの署名証明書のニックネームを設定します。OCSP 署名証明書または CA の OCSP 署名証明書のいずれかです。証明書はサブシステムの NSS データベースにインポートされ、適切な信頼設定が設定されている必要があります。

ocspCacheSize

キャッシュエントリーの最大数を設定します。

ocspMinCacheEntryDuration

別のフェッチを試行するまでの最小秒数を設定します。たとえば、これが 120 に設定された場合は、最後の有効期間をチェックから 2 分以上経たないと証明書の有効性を再度確認することができません。

ocspMaxCacheEntryDuration

次のフェッチを試みる前に待機する最大秒数を設定します。これにより、有効期間チェック間でウィンドウが大きくなり過ぎないようにできます。

ocspTimeout

OCSP 要求のタイムアウト期間を秒単位で設定します。

13.4.1.4. AIA 拡張機能の登録プロファイルへの追加

外部 OCSP を使用する際にプロファイルに AIA URL を設定するには、証明書プロファイルに正しい URL を追加します。以下に例を示します。

policyset.cmcUserCertSet.5.default.params.authInfoAccessADLocation_0=http://example.com:8080/ocsp/ee/ocsp

13.4.2. セッションタイムアウト

ユーザーがクライアントアプリケーションを介して PKI サーバーに接続すると、サーバーはユーザーを追跡するセッションを作成します。ユーザーがアクティブな状態である限り、ユーザーは再認証せずに同じセッションで複数の操作を実行できます。

セッションタイムアウトは、アクティブでないためにセッションを終了するまで最後の操作からサーバーが待機する期間を決定します。セッションが終了すると、ユーザーはサーバーへのアクセスを継続するためにユーザーを再認証し、サーバーが新しいセッションを作成します。

タイムアウトには、2 つのタイプがあります。

  • TLS セッションのタイムアウト
  • HTTP セッションのタイムアウト

クライアントの仕組みが異なるため、クライアントはこれらのタイムアウトによって影響を及ぼします。

注記

特定のクライアントには独自のタイムアウト設定があります。たとえば、Firefox には keep-alive タイムアウト設定があります。詳細は http://kb.mozillazine.org/Network.http.keep-alive.timeout を参照してください。値が TLS セッションタイムアウトまたは HTTP セッションタイムアウトのサーバーの設定と異なる場合は、異なる動作を確認できます。

13.4.2.1. TLS セッションのタイムアウト

TLS セッションは、TLS ハンドシェイクプロトコルを介して確立された TLS 接続におけるセキュアな通信チャネルです。

PKI サーバーは、TLS セッションアクティビティーの監査イベントを生成します。サーバーは、接続の作成時に、Outcome=SuccessACCESS_SESSION_ESTABLISH 監査イベントを生成します。接続の作成に失敗した場合、サーバーは Outcome=Failure を指定した ACCESS_SESSION_ESTABLISH 監査イベントを生成します。接続が閉じられると、サーバーは ACCESS_SESSION_TERMINATED 監査イベントを生成します。

TLS セッションタイムアウト (TLS 接続タイムアウト) は、/etc/pki/instance/server.xml ファイルの Secure Connector 要素の keepAliveTimeout パラメーターで設定されます。

...
Server
	Service
		Connector name="Secure"
			...
			keepAliveTimeout="300000"
			...
			/
	/Service
/Server
...

デフォルトではタイムアウト値は 300000 ミリ秒 (5 分) に設定されます。この値を変更するには、/etc/pki/instance/server.xml ファイルを編集し、サーバーを再起動します。

注記

この値は、サーバーへのすべての TLS 接続に影響することに注意してください。期限切れでない既存の接続を再利用できるため、クライアントの効率が大きくなる可能性があります。ただし、放棄された接続の有効期限が切れるまでに時間がかかるため、サーバーが同時にサポートする必要のある接続の数も増える可能性があります。

13.4.2.2. HTTP セッションのタイムアウト

HTTP セッションは、HTTP クッキーを使用して複数の HTTP リクエストでユーザーを追跡するメカニズムです。PKI サーバーは、HTTP セッションの監査イベントを生成しません。

注記

一貫性を監査するために、このセクションの session-timeout 値を、「TLS セッションのタイムアウト」keepAliveTimeout 値と一致するように設定します。たとえば、keepAliveTimeout300000 (5 分) に設定されている場合は、session-timeout30 に設定します。

HTTP セッションのタイムアウトは、/etc/pki/instance/web.xml ファイルの session-timeout 要素で設定できます。

...
web-app
	session-config
		session-timeout30/session-timeout
	/session-config
/web-app
...

デフォルトでは、タイムアウト値は 30 分に設定されています。値を変更するには、/etc/pki/instance/web.xml ファイルを編集し、サーバーを再起動します。

注記

この値は、サーバー上のすべての Web アプリケーションにあるすべてのセッションに影響することに注意してください。アクセスバナーを再度認証したり、表示したりする必要がないため、大きな値がユーザーのエクスペリエンスが向上します。ただし、破棄された HTTP セッションが期限切れになるまでの時間があるため、セキュリティーリスクも高まります。

13.4.2.3. PKI Web UI のセッションタイムアウト

PKI Web UI は、ブラウザーで実行されるインタラクティブな Web ベースのクライアントです。現在、クライアント証明書認証のみをサポートしています。

Web UI が開くと、ブラウザーはサーバーに複数の TLS 接続を作成できます。これらの接続は単一の HTTP セッションに関連付けられます。

Web UI のタイムアウトを設定するには、「HTTP セッションのタイムアウト」 を参照してください。ブラウザーがクライアント証明書をキャッシュし、TLS セッションを自動的に再作成できるようにするため、TLS セッションのタイムアウトは通常無関係です。

HTTP セッションの期限が切れると、Web UI は即座に表示されません。ただし、Web UI は、ユーザーが操作を実行する前にアクセスバナー (有効な場合) を表示します。

13.4.2.4. PKI コンソールのセッションタイムアウト

PKI コンソールは、インタラクティブなスタンドアロングラフィカル UI クライアントです。ユーザー名/パスワードおよびクライアント証明書認証をサポートします。

コンソールの起動時に、サーバーへの 1 つの TLS 接続が作成されます。コンソールは、グラフィカルインターフェイスを開く前に、アクセスバナー (有効な場合) を表示します。Web UI とは異なり、コンソールはサーバーで HTTP セッションを維持しません。

コンソールのタイムアウトを設定するには、「TLS セッションのタイムアウト」 を参照してください。コンソールは HTTP セッションを使用しないため、HTTP セッションタイムアウトは無関係です。

TLS セッションの期限が切れると、TLS 接続が閉じられ、コンソールがシステムにすぐに終了します。ユーザーが続行する場合は、コンソールを再起動する必要があります。

13.4.2.5. PKI CLI のセッションタイムアウト

PKI CLI は、一連の操作を実行するコマンドラインクライアントです。ユーザー名/パスワードおよびクライアント証明書認証をサポートします。

CLI の起動時に、サーバーと HTTP セッションへの単一の TLS 接続を作成します。CLI は、操作を実行する前にアクセスバナー (有効な場合) を表示します。

通常、操作は遅延なく順次実行され、CLI が完了するとすぐに CLI を終了するため、両方のタイムアウトは PKI CLI とは無関係です。ただし、CLI がユーザー入力を待機するか、速度が低下するか、応答しなくなると、TLS セッションまたは HTTP セッションが期限切れになり、残りの操作が失敗する場合があります。このような遅延が予想される場合は、「TLS セッションのタイムアウト」「HTTP セッションのタイムアウト」 を参照して、想定される遅延に対応します。

13.5. web.xml からの未使用インターフェイスの削除 (CA のみ)

(一括発行やポリシーフレームワークなどの機能用の) レガシーインターフェイスは、CA の web.xml ファイルに依然として含まれています。ただし、これらの機能は非推奨となり、使用されなくなりました。したがって、CA 設定から削除してセキュリティーを強化することができます。

手順

  1. CA を停止します。

    # pki-server stop instance_name

    または (nuxwdog watchdog を使用している場合)

    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
  2. CA の Web ファイルディレクトリーを開きます。以下に例を示します。

    # cd /var/lib/pki/ instance_name/ca/webapps/ca/WEB-INF
  3. 現在の web.xml ファイルをバックアップします。

    # cp web.xml web.xml.servlets
  4. web.xml ファイルを編集し、非推奨となった以下の各サーブレットの servlet> エントリー全体を削除します。

    • caadminEnroll
    • cabulkissuance
    • cacertbasedenrollment
    • caenrollment
    • caProxyBulkIssuance

      たとえば、caadminEnroll サーブレットエントリーを削除します。

      <servlet>
            <servlet-name>  caadminEnroll  </servlet-name>
            <servlet-class> com.netscape.cms.servlet.cert.EnrollServlet
      </servlet-class>
                   <init-param><param-name>  GetClientCert  </param-name>
                               <param-value> false       </param-value> </init-param>
                   <init-param><param-name>  successTemplate  </param-name>
                               <param-value> /admin/ca/EnrollSuccess.template
      </param-value> </init-param>
                   <init-param><param-name>  AuthzMgr    </param-name>
                               <param-value> BasicAclAuthz </param-value>
      </init-param>
                   <init-param><param-name>  authority   </param-name>
                               <param-value> ca          </param-value> </init-param>
                   <init-param><param-name>  interface   </param-name>
                               <param-value> admin          </param-value>
      </init-param>
                   <init-param><param-name>  ID          </param-name>
                               <param-value> caadminEnroll </param-value>
      </init-param>
                   <init-param><param-name>  resourceID  </param-name>
                               <param-value> certServer.admin.request.enrollment
      </param-value> </init-param>
                   <init-param><param-name>  AuthMgr     </param-name>
                               <param-value> passwdUserDBAuthMgr </param-value>
      </init-param>
         </servlet>
  5. サーブレットエントリーを削除したら、該当する servlet-mapping> エントリーを削除します。

    <servlet-mapping>
          <servlet-name>  caadminEnroll  </servlet-name>
          <url-pattern>   /admin/ca/adminEnroll  </url-pattern>
    </servlet-mapping>
  6. エンドエンティティー要求インターフェイスについて、filter-mapping> エントリーを 3 つ削除します。

       <filter-mapping>
          <filter-name>  EERequestFilter              </filter-name>
          <url-pattern>  /certbasedenrollment         </url-pattern>
       </filter-mapping>
    
       <filter-mapping>
          <filter-name>  EERequestFilter              </filter-name>
          <url-pattern>  /enrollment                  </url-pattern>
       </filter-mapping>
    
       <filter-mapping>
          <filter-name>  EERequestFilter              </filter-name>
          <url-pattern>  /profileSubmit               </url-pattern>
       </filter-mapping>
  7. CA を再度起動します。

    # pki-server start instance_name

    または (nuxwdog watchdog を使用している場合)

    # systemctl start pki-tomcatd-nuxwdog@instance_name.service

13.6. Web サービスのカスタマイズ

すべてのサブシステム (TKS を除く) には、エージェント用の Web ベースのサービスページや、その他のロール (管理者やエンドエンティティーなど) 用の Web ベースのサービスページがあります。これらの Web ベースのサービスページは基本的な HTML や JavaScript を使用しており、既存のサイトやイントラネットに合わせて、さまざまな色、ロゴ、その他のデザイン要素を使用するようにカスタマイズできます。

13.6.1. サブシステム Web アプリケーションのカスタマイズ

各 PKI サブシステムには以下が含まれる対応する web アプリケーションがあります。

  • テキスト、JavaScript コード、ページレイアウト、CSS フォーマットなどを含む HTML ページ
  • サーブレット、パス、セキュリティー制約などを定義する web.xml ファイル
  • PKI ライブラリーへのリンク

サブシステムの Web アプリケーションは、/var/lib/pki/pki-tomcat/conf/Catalina/localhost/ のディレクトリーにあるコンテキストファイル (ca.xml ファイルなど) を使用してデプロイされます。

Context docBase="/usr/share/pki/ca/webapps/ca" crossContext="true" allowLinking="true"
    ...
/Context

docBase は、デフォルトの Web アプリケーションディレクトリー /usr/share/pki/ の場所を参照します。

Web アプリケーションをカスタマイズするには、Web アプリケーションディレクトリーをインスタンスの webapps ディレクトリーにコピーします。

$ cp -r /usr/share/pki/ca/webapps/ca /var/lib/pki/pki-tomcat/webapps

次に、webapps ディレクトリーから相対的なカスタム Web アプリケーションのディレクトリーを参照するように、docBase を変更します。

Context docBase="ca" crossContext="true" allowLinking="true"
    ...
/Context

変更は、サーバーを再起動しなくてもすぐに有効になります。

カスタム Web アプリケーションを削除するには、docBase を元に戻し、カスタムの Web アプリケーションディレクトリーを削除します。

$ rm -rf /var/lib/pki/pki-tomcat/webapps/ca

13.6.2. Web UI テーマのカスタマイズ

同じインスタンスのサブシステムの web アプリケーションは、同じテーマを共有します。これには以下が含まれます。

  • CSS ファイル (グローバルの外観を決定する)
  • ロゴ、アイコン、およびその他のイメージファイル
  • ページタイトル、ロゴリンク、タイトルの色などを判断するブランディングプロパティー

Web UI のテーマは、/var/lib/pki/pki-tomcat/conf/Catalina/localhost/ ディレクトリーの pki.xml コンテキストファイルを使用してデプロイされます。

Context docBase="/usr/share/pki/common-ui" crossContext="true" allowLinking="true"
    ...
/Context

docBase は、デフォルトのテーマディレクトリー /usr/share/pki/ の場所を参照します。

テーマをカスタマイズするには、デフォルトのテーマディレクトリーをインスタンスの webapps ディレクトリーにある pki ディレクトリーにコピーします。

$ cp -r /usr/share/pki/common-ui /var/lib/pki/pki-tomcat/webapps/pki

次に、webapps ディレクトリーから相対的なカスタムテーマのディレクトリーを参照するように、docBase を変更します。

Context docBase="pki" crossContext="true" allowLinking="true"
    ...
/Context

変更は、サーバーを再起動しなくてもすぐに有効になります。

カスタムテーマを削除するには、docBase を元に戻して、カスタムテーマのディレクトリーを削除します。

$ rm -rf /var/lib/pki/pki-tomcat/webapps/pki

13.6.3. TPS トークンの状態ラベルのカスタマイズ

デフォルトのトークンの状態ラベルは /usr/share/pki/tps/conf/token-states.properties ファイルに保存され、「トークンの状態および遷移のラベル」 で説明されています。

ラベルをカスタマイズするには、ファイルをインスタンスディレクトリーにコピーします。

$ cp /usr/share/pki/tps/conf/token-states.properties /var/lib/pki/pki-tomcat/tps/conf

変更は、サーバーを再起動しなくてもすぐに有効になります。

カスタマイズされたラベルを削除するには、カスタマイズされたファイルを削除するだけです。

$ rm /var/lib/pki/pki-tomcat/tps/conf/token-states.properties

13.7. アクセスバナーの使用

Certificate System では、管理者はカスタマイズ可能なテキストでバナーを設定できます。以下の状況ではバナーが表示されます。

アプリケーションバナーが表示されるタイミング

PKI コンソール

  • コンソールが表示される前に、
  • セッションが期限切れになる後。

Web インターフェイス

  • Web インターフェイスに接続する場合。
  • セッションの有効期限が切れた後。

pki コマンドラインユーティリティー

  • 実際の操作を開始する前。

バナーを使用すると、Certificate System を使用する前にユーザーに重要な情報を表示できます。続行するには、表示されたテキストに同意する必要があります。

例13.5 アクセスバナーの表示時

以下の例は、pki ユーティリティーを使用している場合にアクセスバナーが表示されるタイミングを示しています。

$ pki cert-show 0x1

WARNING!
Access to this service is restricted to those individuals with
specific permissions. If you are not an authorized user, disconnect
now. Any attempts to gain unauthorized access will be prosecuted to
the fullest extent of the law.

Do you want to proceed (y/N)? y
-----------------
Certificate "0x1"
-----------------
  Serial Number: 0x1
  Issuer: CN=CA Signing Certificate,OU=instance_name,O=EXAMPLE
  Subject: CN=CA Signing Certificate,OU=instance_name,O=EXAMPLE
  Status: VALID
  Not Before: Mon Feb 20 18:21:03 CET 2017
  Not After: Fri Feb 20 18:21:03 CET 2037

13.7.1. アクセスバナーの有効化

アクセスバナーを有効にするには、/etc/pki/ instance_name/banner.txt ファイルを作成し、表示するテキストを入力します。

重要

/etc/pki/ instance_name/banner.txt ファイルのテキストは、UTF-8 形式を使用する必要があります。検証するには、「バナーの検証」 を参照してください。

13.7.2. アクセスバナーの無効化

アクセスバナーを無効にするには、/etc/pki/ instance_name/banner.txt ファイルを削除するか、または名前を変更します。以下に例を示します。

# mv /etc/pki/ instance_name/banner.txt /etc/pki/ instance_name/banner.txt.UNUSED

13.7.3. バナーの表示

現在設定されているバナーを表示するには、次のコマンドを実行します。

# pki-server banner-show -i instance_name

13.7.4. バナーの検証

バナーに無効な文字が含まれていないことを確認するには、次のコマンドを実行します。

# pki-server banner-validate -i instance_name
---------------
Banner is valid
---------------

13.7.5. CMC の設定

このセクションでは、CMS (CMC) で証明書管理に Certificate System を設定する方法を説明します。

13.7.6. CMC の仕組み

CMC を設定する前に、以下のドキュメントを参照してこのトピックの詳細を確認してください。

13.7.7. PopLinkWittnessV2 機能の有効化

認証局 (CA) の高レベルのセキュリティーの場合は、/var/lib/pki/ instance_name/ca/conf/CS.cfg ファイルで以下のオプションを有効にします。

cmc.popLinkWitnessRequired=true

13.7.8. CMC 共有シークレット機能の有効化

認証局 (CA) で共有トークン機能を有効にするには、以下を実行します。

  1. ホストでウォッチドッグサービスが有効になっている場合は、そのサービスを一時的に無効にします。「Watchdog サービスの無効化」を参照してください。
  2. Directory Server のスキーマに shrTok 属性を追加します。

    # ldapmodify -D "cn=Directory Manager" -H ldaps://server.example.com:636 -W -x
    
    dn: cn=schema
    changetype: modify
    add: attributetypes
    attributetypes: ( 2.16.840.1.117370.3.1.123 NAME 'shrTok' DESC 'User
     Defined ObjectClass for SharedToken' SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
     SINGLE-VALUE X-ORIGIN 'custom for sharedToken')
  3. システムキーが Hardware Security Module (HSM) に保存されている場合は、/var/lib/pki/ instance_name/ca/conf/CS.cfg ファイルに cmc.token パラメーターを設定します。以下に例を示します。

    cmc.token=NHSM6000
  4. 以下の方法のいずれかを使用して、共有トークン認証プラグインを有効にします。

    • pkiconsole ユーティリティーを使用してプラグインを有効にするには、次のコマンドを実行します。

      1. pkiconsole ユーティリティーを使用してシステムにログインします。以下に例を示します。

        # pkiconsole https:host.example.com:8443/ca
        注記

        pkiconsole は非推奨になりました。

      2. Configuration タブで、Authentication を選択します。
      3. Add をクリックして、SharedToken を選択します。
      4. Next をクリックします。
      5. 以下の情報を入力します。

        Authentication InstanceID=SharedToken
        shrTokAttr=shrTok
        ldap.ldapconn.host=server.example.com
        ldap.ldapconn.port=636
        ldap.ldapconn.secureConn=true
        ldap.ldapauth.bindDN=cn=Directory Manager
        password=password
        ldap.ldapauth.authtype=BasicAuth
        ldap.basedn=ou=People,dc=example,dc=org
      6. OK をクリックします。
    • プラグインを手動で有効にするには、以下の設定を /var/lib/pki/ instance_name/ca/conf/CS.cfg ファイルに追加します。

      auths.impl.SharedToken.class=com.netscape.cms.authentication.SharedSecret
      auths.instance.SharedToken.dnpattern=
      auths.instance.SharedToken.ldap.basedn=ou=People,dc=example,dc=org
      auths.instance.SharedToken.ldap.ldapauth.authtype=BasicAuth
      auths.instance.SharedToken.ldap.ldapauth.bindDN=cn=Directory Manager
      auths.instance.SharedToken.ldap.ldapauth.bindPWPrompt=Rule SharedToken
      auths.instance.SharedToken.ldap.ldapauth.clientCertNickname=
      auths.instance.SharedToken.ldap.ldapconn.host=server.example.com
      auths.instance.SharedToken.ldap.ldapconn.port=636
      auths.instance.SharedToken.ldap.ldapconn.secureConn=true
      auths.instance.SharedToken.ldap.ldapconn.version=3
      auths.instance.SharedToken.ldap.maxConns=
      auths.instance.SharedToken.ldap.minConns=
      auths.instance.SharedToken.ldapByteAttributes=
      auths.instance.SharedToken.ldapStringAttributes=
      auths.instance.SharedToken.pluginName=SharedToken
      auths.instance.SharedToken.shrTokAttr=shrTok
  5. /var/lib/pki/ instance_name/ca/conf/CS.cfg ファイルの ca.cert.issuance_protection.nickname パラメーターに RSA 発行保護証明書のニックネームを設定します。以下に例を示します。

    ca.cert.issuance_protection.nickname=issuance_protection_certificate

    このステップには以下が適用されます。

    • ca.cert.subsystem.nickname パラメーターで RSA 証明書を使用する場合はオプションです。
    • ca.cert.subsystem.nickname パラメーターで ECC 証明書を使用する場合は必須です。
    重要

    ca.cert.issuance_protection.nickname パラメーターが設定されていない場合、Certificate System は ca.cert.subsystem.nickname で指定されたサブシステムの証明書を自動的に使用します。ただし、発行保護証明書は RSA 証明書である必要があります。

  6. Certificate System を再起動します。

    # systemctl restart pki-tomcatd@instance_name.service

    CA が起動すると、Certificate System は Shared Token プラグインが使用する LDAP パスワードを要求します。

  7. この手順の最初に watchdog サービスを一時的に無効にした場合は、再度有効にします。「Watchdog サービスの有効化」 を参照してください。

13.7.9. Web ユーザーインターフェイスの CMCRevoke の有効化

Red Hat Certificate System 管理ガイドCMC 失効の実行 セクションで説明されているように、失効リクエストを送信する方法は 2 つあります。

CMCRevoke ユーティリティーを使用して、Web UI で送信される失効要求を作成する場合は、以下の設定を /var/lib/pki/ instance_name/ca/conf/CS.cfg ファイルに追加します。

cmc.bypassClientAuth=true

13.8. EE のサーバー側キー生成

13.8.1. 概要

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

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

注記

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

13.8.2. 主な機能

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

13.8.3. インストール設定

注記

サーバー側 Keygen を設定するには、CA に加えて KRA インスタンスが必要です。

注記

CA と KRA が Tomcat インスタンスを共有している場合は、トランスポート証明書をインポートするために以下の手順を実行する必要はありません。

CA インスタンスおよび KRA インスタンスをインストールした後に、スタンドアロンの Tomcat Web サーバーインスタンスの場合には、CA の nssdb に KRA トランスポート証明書を追加する必要があります。

まず CA をシャットダウンします。

Systemctl stop pki-tomcatd@<ca_instance_name>.service
e.g.
# Systemctl stop pki-tomcatd@pki-ca.service

KRA の輸送証明書をファイルにエクスポートします。

  • KRA トランスポート証明書を検索してエクスポートします。
grep "kra.transport.cert=" /var/lib/pki/<kra_instance_name>/kra/conf/CS.cfg | sed 's/kra.transport.cert=//' > <kra transport cert file>
e.g.
# grep "kra.transport.cert=" /var/lib/pki/pki-kra/kra/conf/CS.cfg | sed 's/kra.transport.cert=//' > /tmp/kraTransport.cert

CA の CS.cfg で指定されたニックネームを使用して、KRA のトランスポート証明書を CA の nssdb にインポートします。

  • トランスポート証明書のニックネームをリスト表示します。
grep "ca.connector.KRA.transportCertNickname" /var/lib/pki/<ca_instance_name>/ca/conf/CS.cfg
e.g.
# grep "ca.connector.KRA.transportCertNickname" /var/lib/pki/pki-ca/ca/conf/CS.cfg
ca.connector.KRA.transportCertNickname=KRA transport cert
  • 上記のステップでリストしたニックネームを使用してインポートします。
certutil -d /var/lib/pki/<ca_instance_name>/alias -A -t “,,” -n <transportNickName> -i <kra transport cert file>
e.g.
# certutil -d /var/lib/pki/pki-ca/alias -A -t “,,” -n "KRA transport cert" -i /tmp/kraTransport.cert

CA を開始します。

systemctl start pki-tomcatd@<ca_instance_name>.service
e.g.
# Systemctl start pki-tomcatd@pki-ca.service

13.8.4. プロファイル設定

サーバー側で鍵が生成される証明書の登録を許可するために、caServerKeygen_UserCert および caServerKeygen_DirUserCert の 2 つのデフォルトプロファイルがデフォルトで提供されます。ただし、正しい入力、出力、およびポリシー設定を持つプロファイルは、サーバー側の keygen プロファイルに切り替えることができます。

Server-Side Keygen プロファイルには、以下のコンポーネントが含まれている必要があります。

13.8.4.1. 入力
input.i1.class_id=serverKeygenInputImpl
13.8.4.2. 出力
output.o1.class_id=pkcs12OutputImpl
13.8.4.3. Policyset

生成された PKCS12 のパスワードは、次のポリシーで適用できます。

policyset.userCertSet.11.constraint.class_id=p12ExportPasswordConstraintImpl
policyset.userCertSet.11.constraint.name=PKCS12 Password Constraint
policyset.userCertSet.11.constraint.params.password.minSize=20
policyset.userCertSet.11.constraint.params.password.minUpperLetter=2
policyset.userCertSet.11.constraint.params.password.minLowerLetter=2
policyset.userCertSet.11.constraint.params.password.minNumber=2
policyset.userCertSet.11.constraint.params.password.minSpecialChar=2
policyset.userCertSet.11.constraint.params.password.seqLength=6
policyset.userCertSet.11.constraint.params.password.maxRepeatedChar=3
policyset.userCertSet.11.default.class_id=noDefaultImpl
policyset.userCertSet.11.default.name=No Default

このポリシーでは以下を設定できます。

  • password.minSize - パスワードの最小サイズ。
  • password.minUpperLetter - 大文字の最小数。
  • password.minLowerLetter - 小文字の最小数。
  • password.minNumber - 最小桁数。
  • password.minSpecialChar - 句読点の最小数。
  • password.seqLength - 繰り返すことのできない部分文字列シーケンスのサイズ。
  • password.maxRepeatedChar - 各文字の最大繰り返し回数。

制約に特定の設定が含まれていない場合は、CS.cfg からオプションを読み取ります。名前が異なる場合は、接頭辞 password.passwordChecker. に置き換えられます。CS.cfg 内の設定はすべてのパスワードに使用されますが、各プロファイルを上書きして、より強力なパスワードまたは脆弱なパスワードを許可できます。

キータイプとキーサイズのパラメーターは、以下に例示するように設定できます。

policyset.userCertSet.3.constraint.class_id=keyConstraintImpl
policyset.userCertSet.3.constraint.name=Key Constraint
policyset.userCertSet.3.constraint.params.keyType=-
policyset.userCertSet.3.constraint.params.keyParameters=1024,2048,3072,4096,nistp256,nistp384,nistp521
policyset.userCertSet.3.default.class_id=serverKeygenUserKeyDefaultImpl
policyset.userCertSet.3.default.name=Server-Side Keygen Default
policyset.userCertSet.3.default.params.keyType=RSA
policyset.userCertSet.3.default.params.keySize=2048
policyset.userCertSet.3.default.params.enableArchival=true
13.8.4.4. 認証

デフォルトのサーバー側の keygen 登録プロファイルは認証メカニズムによって異なります。ここでは、以下のようになります。

caServerKeygen_UserCert.cfg
"auth.class_id=" への空の値が含まれます。つまり、このプロファイルを介した登録要求には CA エージェントからの承認が必要になります。
caServerKeygen_DirUserCert.cfg
これには、"auth.instance_id=UserDirEnrollment" が含まれます。これは、ユーザーが LDAP uid/password 認証を渡すのに必要なことを意味します。このような認証は、CA エージェントからの要求ごとの承認を必要としないため、自動証明書として見なされます。

caServerKeygen_DirUserCert.cfg プロファイルで説明されるように、auth.instance_id ディレクティブを互換性のある認証プラグインクラスに設定すると、自動承認を設定できます。CS.cfg での設定例を次に示します。

auths.instance.UserDirEnrollment.dnpattern=
auths.instance.UserDirEnrollment.ldap.basedn=ou=People,dc=example,dc=com
auths.instance.UserDirEnrollment.ldap.ldapconn.host=host.example.com
auths.instance.UserDirEnrollment.ldap.ldapconn.port=389
auths.instance.UserDirEnrollment.ldap.ldapconn.secureConn=false
auths.instance.UserDirEnrollment.ldap.maxConns=
auths.instance.UserDirEnrollment.ldap.minConns=
auths.instance.UserDirEnrollment.ldapByteAttributes=
auths.instance.UserDirEnrollment.ldapStringAttributes=mail
auths.instance.UserDirEnrollment.pluginName=UidPwdDirAuth

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

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

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

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

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

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

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

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

重要

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

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

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

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

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

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

13.8.6. キーリカバリー

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

13.8.7. 追加情報

13.8.7.1. KRA 要求レコード
注記

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

  • 要求タイプ “asymkeyGenRequest” 用

    • この要求タイプは、KRA エージェントページの “List Requests” でフィルタリングすることはできません。“Show All Requests” を選択して、リストを表示できます。
  • 要求タイプの “recovery” 用
13.8.7.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 (まだ実装されていません)

13.9. 証明書の透過性の設定

Certificate System は、証明書 Certificate Transparency (CT) V1 サポートの基本バージョン (rfc 6962) を提供します。各デプロイメントサイトがルート CA 証明書を含めることを選択した信頼できるログから、Signed Certificate Time スタンプ (SCT) が埋め込まれた証明書を発行する機能があります。また、複数の CT ログに対応するようにシステムを設定することもできます。この機能を使用するには、少なくとも 1 つの信頼できる CT ログが必要です。

重要

デプロイメントサイトが、信頼できる CT ログサーバーとの信頼関係を確立します。

証明書の透過性を設定するには、/var/lib/pki/instance name/ca/conf/CS.cfg ディレクトリーにある CA の CS.cfg ファイルを編集します。

証明書の透過性設定をテストする方法は、Red Hat Certificate System 管理ガイド証明書の透過性のテスト セクションを参照してください。

13.9.1. ca.certTransparency.mode

ca.certTransparency.mode は、3 つの証明書の透過性モードのいずれかを指定します。

  • disabled: 発行した証明書には SCT 拡張がありません。
  • enabled: 発行した証明書に SCT 拡張が含まれます。
  • perProfile: 以下の policyset が含まれるプロファイルで登録された証明書は SCT 拡張 (SignedCertificateTimestampListExtDefaultImpl) を保持します。

デフォルトの値は 0 です。

13.9.2. ca.certTransparency.log.num

ca.certTransparency.log.num は、設定で定義された CT ログの合計数を指定します。

注記

定義されている CT ログエントリーがすべてアクティブとみなされているわけではありません。「ca.certTransparency.log.id.*」ca.certTransparency.log.id.enable を参照してください。

13.9.3. ca.certTransparency.log.id.*

ca.certTransparency.log.id.* は、ログ id に関する情報を指定します。ここでの id は CT ログサーバーに割り当てる一意の ID で、他の CT ログと区別します。

パラメーター名はそれぞれの ca.certTransparency.log.id. に準拠しており、id に属します。

  • ca.certTransparency.log.id.enable は、id CT ログが有効 (true) または無効 (false) であるかを指定します。
  • ca.certTransparency.log.id.pubKey には、CT ログの公開鍵の base64 エンコーディングが含まれます。
  • ca.certTransparency.log.id.url には、CT ログ URL の base64 エンコーディングが含まれます。
  • ca.certTransparency.log.id.version は、(CT ログサーバーと同様) CT がサポートする CT バージョン番号を指定します。現在、バージョン 1 のみをサポートしています。

第14章 証明書/キー暗号トークンの管理

この章では、さまざまなシナリオの証明書のインポートおよび検証方法など、暗号化トークンで証明書/鍵のデータベースを管理する方法を説明します。

14.1. certutil および PKICertImport

certutil コマンドは、Network Security Services (NSS) によって提供されます。certutil は、証明書の検証およびインポートに使用されます。ただし、certutil の使用方法に関する基本的な概要を以下に示します。ただし、PKICertImport は、証明書を安全に検証およびインポートするために選択するためのラッパースクリプトです。これには、certutil を使用して、複数のコマンドの呼び出しが必要で、正しい使用方法はこのドキュメントの範囲外です。

14.1.1. certutil の基本的な使用方法

certutil [command] [opt][options]

certutil 呼び出しでは、通常は大文字で表されるコマンドフラグと、コマンドの動作を制御する一連のオプションを使用します。オプションで値を指定する場合、その値の名前は "<" と ">" で囲みます。

14.1.2. PKICertImport の基本的な使用方法

PKICertImport [opt][options]

PKICertImport 呼び出しでは、指定された証明書を検証およびインポートする一連のオプションを使用します。certutil の広範なユースケースとは異なり、PKICertImport は、証明書を安全にインポートおよび検証することのみに重点を置いています。利用可能なオプションの詳細は、「一般的な certutil および PKICertImport オプション」 を参照してください。

注記

PKICertImport は、実行中に NSS DB または HSM のパスワードを複数回要求します。これは、PKICertImport と NSS DB との対話を複数回使用する必要があるためです。NSS DB パスワードを繰り返し入力しなくてもよいように、-f <filename> でパスワードファイルを指定します。完了したら、パスワードファイルを必ず削除してください。

14.1.3. certutil の一般的なコマンド

以下のコマンドは certutil 固有のもので、いくつかの一般的なコマンドの概要を示します。PKICertImport は、これらのコマンドフラグと互換性がなく、これらのコマンドフラグも必要ありません。

certutil -A

-A コマンドは、証明書の "追加" を示しています。インポートする証明書 (-i)、その証明書のニックネーム (-n) および一連の信頼フラグ (-t) が必要です。

certutil -V

-V コマンドは、証明書の "検証" を示しています。検証には、証明書のニックネーム (-n) と、実行する検証 (-u) のタイプが必要です。

certutil -D

-D コマンドは、証明書の "削除" を示しています。削除する証明書のニックネーム (-n) が必要です。

証明書の公開鍵部分のみが削除され、秘密鍵が存在する場合は削除されないことに注意してください。

certutil -M

-M コマンドは、証明書の "変更" を示しています。変更する証明書ニックネーム (-n) と、証明書を提供する一連の信頼フラグ (-t) が必要です。

certutil -L

-L コマンドは、証明書またはすべての証明書の "リスト表示" を示しています。ニックネームオプション (-n) を指定すると、その証明書に関する詳細情報が表示されます。それ以外の場合は、存在するすべての証明書に関する一般的な情報がリスト表示されます。

certutil -L の結果として、各証明書のニックネームとその信頼情報が表示されます。以下に例を示します。

表14.1 証明書のニックネームと信頼情報
証明書のニックネーム信頼属性 (SSL、S/MIME、JAR/XPI)

caSigningCert pki-ca1

CT、C、C

注記

certutil -L で表示される信頼属性は、-t オプションで指定した内容に対応します。

certutil -L はデータベースを変更しないため、必要な回数だけ安全に実行できます。

14.1.4. 一般的な certutil および PKICertImport オプション

以下の手順に従って、値は特定のデプロイメントシナリオに適し、正しい値であることを確認します。これらのオプションは PKICertImport でも利用できます。

-n <nickname>

-n <nickname> オプションは、証明書のニックネームを指定します。これは任意のテキストを指定でき、証明書への参照としてのみ使用されます。一意である必要があります。

設定に応じて、この値を更新してください。

-d <directory>

-d <directory> オプションは、使用中の NSS DB ディレクトリーへのパスを指定します。通常、このディレクトリーはすでに存在し、"." を使用して現在のディレクトリーを参照します。

設定に応じて、この値を更新してください。

-t <trust>

-t <trust> オプションは、証明書の信頼レベルを指定します。

信頼には、以下の 3 つのカテゴリーがあります。

  • TLS の信頼
  • メールの信頼
  • オブジェクト署名の信頼

各信頼の位置には、信頼のレベルを指定する信頼文字を 1 つまたは複数追加できます。使用する信頼文字は、cC および T です。

  • c は、この証明書が認証局 (CA) である必要があることを示しています。
  • C は、サーバー証明書に署名するための信頼できる認証局であることを示しています (C は小文字の c であるため、両方を指定する必要はありません)。
  • T は、この証明書が、クライアント証明書に署名するための信頼できる機関であることを示しています (T は小文字の c であるため、Tc の両方を指定する必要はありません)。

各位置の信頼フラグを指定するには、文字をコンマで区切ります。たとえば、オプション -t CT,C,c は、クライアントとサーバーの TLS 証明書への署名、サーバーの電子メール証明書 (S/MIME) への署名に信頼されており、オブジェクトの署名に有効な CA (信頼されていませんが) であることを意味します。

  • これにより、この証明書が別の証明書に署名し、それがオブジェクト署名に使用されると、その証明書が無効になります。

信頼なし (または信頼の欠如) は、-t ,, を使用して指定できます。

データベース内のすべての証明書のトラストレベルを表示するには、以下を実行します。

  • certutil -L -d
  • 各証明書のニックネームがリスト表示され、行の最後に信頼フラグが指定されます。

-h オプションの HSM に関する注記を参照してください。

信頼レベルは、certutil の man ページで指定されていることに注意してください。このドキュメントを参照するには、certutil が正しくインストールされているシステムで man certutil コマンドを実行します。

-h <HSM>

-h <HSM> オプションは、操作を実行する HSM の名前を指定します。

HSM は信頼を保管できないため、-h オプションは、-t オプションと互換性がありません。信頼を保存できるのは NSS DB だけなので、-h <HSM> と一緒に certutil -A コマンドや certutil -M コマンドを使用しても失敗します。代わりに、-h オプションなしで、別の certutil -M コマンドで必要な信頼レベルを指定します。

設定に応じて、この値を更新してください。

-e

-e オプションを指定すると、certutil -V コマンドと組み合わせて使用する場合に署名の有効性もチェックされます。PKICertImport は、必ず証明書署名の検証を実行し、-e オプションを認識しません。

-a

-a オプションは、対象となるキーが PEM (ASCII) 形式であることを指定します。

-i <certificate>

-i <certificate> オプションは、証明書へのパスを指定します。これは、インポートする証明書へのパスを指定するために certutil -A コマンドで使用されます。

設定に応じて、この値を更新してください。

-u <usage>

-u <usage> オプションは、certutil -V コマンドと併用する際に、検証する証明書の使用を指定します。

次のセクションで参照されるいくつかの使用法の文字があります。

  • -u C は、クライアントの TLS 証明書検証を表します。これは証明書を許可しますが、有効期限と署名を確認することに注意してください。
  • -u V は、サーバーの TLS 証明書検証を表します。これにより CA 証明書が拒否され、有効期限と署名を確認することに注意してください。
  • -u L は、CA TLS 証明書の検証に使用します。これにより信頼フラグが検証され (c が存在するか確認)、鍵の使用方法を確認して、キーが CA キーであることを確認します。これは、有効期限および署名も確認します。
  • -u O は、OCSP ステータスレスポンダー証明書を検証することを表します。これにより、期限切れと署名を確認することに注意してください。
  • -u J オブジェクト署名証明書の検証を表します。これにより、期限切れと署名を確認することに注意してください。

誤った使用方法オプションが指定されているり、証明書の信頼フラグが正しくない場合 (CA TLS 証明書の c フラグがないなど)、certutil -V は誤った結果となります。

注記

使用方法の詳細情報は、certutil の man ページに記載されています。このドキュメントを参照するには、certutil が正しくインストールされているシステムで man certutil コマンドを実行します。

14.2. ルート証明書のインポート

これらの手順の実行中に Web サービスがオフラインになり (停止、無効化など) し、他のプロセス (ブラウザーなど) による NSS DB への同時アクセスがないことを確認します。これにより、NSS DB が破損したり、これらの証明書の使用が不適切になる場合があります。

新しいルート証明書をインポートする必要がある場合は、証明書がいくつもの証明書に署名できるため、安全な方法でこの証明書を取得するようにしてください。ca_root.crt という名前のファイルにすでに存在していることを前提とします。お好みのシナリオに合わせて、正しい名前とパスを置き換えます。

以下の certutil オプションおよび PKICertImport オプションの詳細は、certutil および PKICertImport を参照してください。

手順

  1. まず、ディレクトリーを NSS DB に変更します。

    cd /path/to/nssdb
  2. ルート証明書をインポートするには、次のコマンドを実行します。

    PKICertImport -d . -n "CA Root" -t "CT,C,C" -a -i ca_root.crt -u L

    このコマンドは、ルート証明書を NSS DB に検証し、インポートします。エラーメッセージが出力されず、戻りコードが 0 の場合は、検証が成功します。戻りコードを確認するには、上記のコマンド実行後すぐに echo $? を実行します。ほとんどの場合は、視覚的なエラーメッセージが出力されます。証明書は通常、有効期限が切れるか、または CA 証明書であるかから検証に失敗します。したがって、証明書ファイルが正しいことを確認し、最新の状態にしてください。発行者に連絡し、すべての中間証明書およびルート証明書がシステムに存在することを確認します。

14.3. 中間証明書チェーンのインポート

これらの手順の実行中に Web サービスがオフラインであることを確認します (停止、無効化など)、他のプロセス (ブラウザーなど) による NSS DB への同時アクセスがないことを確認します。これにより、NSS DB が破損したり、これらの証明書の使用が不適切になる場合があります。

ルート証明書をインポートして信頼していない場合は、「ルート証明書のインポート」 を参照してください。

ルートサーバーとエンドサーバーまたはクライアント証明書間に一連の中間証明書が指定される場合は、ルート CA 証明書から最も適したように、署名済み証明書チェーンをインポートおよび検証する必要があります。中間 CA は ca_sub_<num>.crt という名前のファイル (例:ca_sub_1.crtca_sub_2.crt など) を想定しています。デプロイメントに合わせて、証明書の名前とパスを置き換えます。

注記

代わりに、fullchain.crtfullchain.pem、または同様の名前の単一ファイルが与えられ、それには複数の証明書が含まれている場合、各ブロック (----BEGIN CERTIFICATE----- マーカーと -----END CERTIFICATE----- マーカーと、その間のテキストを含む) を独自のファイルにコピーして、それを上記のフォーマットに分割します。最初のものは ca_sub_<num>.crt という名前で、最後のコンポーネントは service.crt という名前のサーバーの証明書です。サーバー証明書は、以降のセクションで説明します。

まず、ルート CA 証明書から最も遠い順に、中間 CA をインポートして検証します。存在していない場合は、次のセクションに進みます。

以下の certutil オプションおよび PKICertImport オプションの詳細は、certutil および PKICertImport を参照してください。

手順

  1. 開始する前に、ディレクトリーを NSS DB に変更します。

    cd /path/to/nssdb
  2. チェーン内のすべての中間証明書に対して、次のコマンドを実行します。

    PKICertImport -d . -n "CA Sub $num" -t "CT,C,C" -a -i ca_sub_$num.crt -u L

    このコマンドは、中間 CA 証明書を NSS DB に検証し、インポートします。エラーメッセージが出力されず、戻りコードが 0 の場合は、検証が成功します。戻りコードを確認するには、上記のコマンド実行後すぐに echo $? を実行します。ほとんどの場合は、視覚的なエラーメッセージが出力されます。検証に成功しなかった場合は、発行者に連絡し、すべての中間証明書およびルート証明書がシステムに存在することを確認します。

14.4. HSM への証明書のインポート

この手順では、CSR の作成プロセスと同じ HSM トークンでキーが生成された、新しく発行された証明書 (システム証明書の更新時など) を取得した後、証明書を HSM にインポートする方法を説明します。

開始する前に、ディレクトリーを NSS DB に変更します。

  • cd /path/to/nssdb (例: cd /var/lib/pki/pki-ca/alias)

これらの手順の実行中に Web サービスがオフラインになり (停止、無効化など) し、他のプロセス (ブラウザーなど) による NSS DB への同時アクセスがないことを確認します。これにより、NSS DB が破損したり、これらの証明書の使用が不適切になる場合があります。

ルート証明書をインポートして信頼していない場合は、「ルート証明書のインポート」 を参照してください。中間証明書をインポートおよび検証していない場合は、「中間証明書チェーンのインポート」 を参照してください。

従う手順セットは、問題の証明書の使用により異なります。

  • すべての PKI サブスキームの TLS サーバー証明書は、サーバー証明書の手順 に従います。
  • サブシステムの監査署名証明書は、以下の手順に従って オブジェクト署名証明書 を検証します。
  • CA サブシステムの署名証明書は、上記の手順に従って 中間証明書チェーン をインポートして検証しますが、caSigningCert でのみ行います。
  • CA サブシステムの OCSP 署名証明書は、以下の手順に従って OCSP 証明書 を検証します。
  • PKI サブシステムのその他のシステム証明書は、Client Certificate の手順 に従います。

以下の certutil オプションおよび PKICertImport オプションの詳細は、certutil および PKICertImport を参照してください。

HSM にサーバー証明書をインポートするには、以下を行います。
  1. PKICertImport -d . -h HSM -n "host.name.example.com" -t "," -a -i service.crt -u V を実行します。

    このコマンドは、サーバー証明書を検証して HSM にインポートします。エラーメッセージが出力されず、戻りコードが 0 の場合は、検証が成功します。戻りコードを確認するには、上記のコマンド実行後すぐに echo $? を実行します。ほとんどの場合は、視覚的なエラーメッセージが出力されます。通常、親証明書の有効期限または CA 信頼チェーンの欠落 (中間証明書の欠落や CA ルートの欠落など) が原因で、証明書の検証に失敗します。検証に成功しなかった場合は、発行者に連絡し、すべての中間証明書およびルート証明書がシステムに存在することを確認します。

HSM にクライアント証明書をインポートするには、以下を実行します。
  1. PKICertImport -d . -h HSM -n "client name" -t "," -a -i client.crt -u C を実行します。

    このコマンドは、クライアント証明書を HSM に検証し、インポートします。エラーメッセージが出力されず、戻りコードが 0 の場合は、検証が成功します。戻りコードを確認するには、上記のコマンド実行後すぐに echo $? を実行します。ほとんどの場合は、視覚的なエラーメッセージが出力されます。検証に成功しなかった場合は、発行者に連絡し、すべての中間証明書およびルート証明書がシステムに存在することを確認します。

HSM にオブジェクト署名証明書をインポートするには、以下を実行します。
  1. PKICertImport -d . -h HSM -n "certificate name" -t ",,P" -a -i objectsigning.crt -u J を実行します。

    このコマンドは、オブジェクト署名証明書を HSM に検証し、インポートします。エラーメッセージが出力されず、戻りコードが 0 の場合は、検証が成功します。戻りコードを確認するには、上記のコマンド実行後すぐに echo $? を実行します。ほとんどの場合は、視覚的なエラーメッセージが出力されます。検証に成功しなかった場合は、発行者に連絡し、すべての中間証明書およびルート証明書がシステムに存在することを確認します。

HSM で OCSP 応答署名証明書をインポートするには、次を実行します。
  1. PKICertImport -d . -h HSM -n "certificate name" -t ",," -a -i ocsp.crt -u O を実行します。

    このコマンドは、OCSP レスポンダー証明書を HSM に検証し、インポートします。エラーメッセージが出力されず、戻りコードが 0 の場合は、検証が成功します。戻りコードを確認するには、上記のコマンド実行後すぐに echo $? を実行します。ほとんどの場合は、視覚的なエラーメッセージが出力されます。検証に成功しなかった場合は、発行者に連絡し、すべての中間証明書およびルート証明書がシステムに存在することを確認します。

14.5. NSS データベースでの証明書のインポート

これらの手順の実行中に Web サービスがオフラインになり (停止、無効化など) し、他のプロセス (ブラウザーなど) による NSS データベースへの同時アクセスがないことを確認します。これにより、NSS データベースが破損したり、これらの証明書の使用が不適切になる場合があります。

従う手順セットは、問題の証明書の使用により異なります。

  • 任意のサブシステムの auditSigningCert で、オブジェクトの署名証明書 の検証に以下の手順に従ってください。
  • CA サブシステムの caSigningCert には、中間証明書チェーン をインポートして検証するための上記の手順にいますが、caSigningCert でのみ行います。
  • CA サブシステムの ocspSigningCert では、以下の手順に従って OCSP 証明書 を検証する必要があります。
  • ユーザーのクライアントまたは S/MIME 証明書の場合は、Client Certificate の手順 を実行します。

以下の certutil オプションおよび PKICertImport オプションの詳細は、certutil および PKICertImport を参照してください。

NSS データベースへのクライアント証明書のインポート

NSS データベースへのクライアント証明書のインポートするには、以下を実行します。

  1. NSS データベースディレクトリーに移動します。以下に例を示します。

    # cd /path/to/nssdb/
  2. ルート証明書をまだインポートおよび信頼していない場合は、インポートして信頼します。詳細は、「ルート証明書のインポート」 を参照してください。
  3. 中間証明書をインポートおよび検証していない場合は、中間証明書をインポートおよび検証します。詳細は、「中間証明書チェーンのインポート」 を参照してください。
  4. クライアント証明書を検証し、インポートします。

    # PKICertImport -d . -n "client name" -t ",," -a -i client.crt -u C

    エラーメッセージが出力されず、戻りコードが 0 の場合は、検証が成功します。戻りコードを確認するには、上記のコマンド実行後すぐに echo $? を実行します。ほとんどの場合は、視覚的なエラーメッセージが出力されます。検証に成功しなかった場合は、発行者に連絡し、すべての中間証明書およびルート証明書がシステムに存在することを確認します。

オブジェクト署名証明書のインポート

オブジェクト署名証明書をインポートするには、以下を実行します。

  1. NSS データベースディレクトリーに移動します。以下に例を示します。

    # cd /path/to/nssdb/
  2. ルート証明書をまだインポートおよび信頼していない場合は、インポートして信頼します。詳細は、「ルート証明書のインポート」 を参照してください。
  3. 中間証明書をインポートおよび検証していない場合は、中間証明書をインポートおよび検証します。詳細は、「中間証明書チェーンのインポート」 を参照してください。
  4. オブジェクト署名証明書を検証し、インポートします。

    # PKICertImport -d . -n "certificate name" -t ",,P" -a -i objectsigning.crt -u J

    エラーメッセージが出力されず、戻りコードが 0 の場合は、検証が成功します。戻りコードを確認するには、上記のコマンド実行後すぐに echo $? を実行します。ほとんどの場合は、視覚的なエラーメッセージが出力されます。検証に成功しなかった場合は、発行者に連絡し、すべての中間証明書およびルート証明書がシステムに存在することを確認します。

OCSP レスポンダーのインポート

OCSP レスポンダーをインポートするには、以下を行います。

  1. NSS データベースディレクトリーに移動します。以下に例を示します。

    # cd /path/to/nssdb/
  2. ルート証明書をまだインポートおよび信頼していない場合は、インポートして信頼します。詳細は、「ルート証明書のインポート」 を参照してください。
  3. 中間証明書をインポートおよび検証していない場合は、中間証明書をインポートおよび検証します。詳細は、「中間証明書チェーンのインポート」 を参照してください。
  4. OCSP レスポンダー証明書を検証およびインポートします。

    # PKICertImport -d . -n "certificate name" -t ",," -a -i ocsp.crt -u O

    エラーメッセージが出力されず、戻りコードが 0 の場合は、検証が成功します。戻りコードを確認するには、上記のコマンド実行後すぐに echo $? を実行します。ほとんどの場合は、視覚的なエラーメッセージが出力されます。検証に成功しなかった場合は、発行者に連絡し、すべての中間証明書およびルート証明書がシステムに存在することを確認します。

第15章 証明書プロファイルの設定

CA のインストールプロセスの一部として、プロファイルの設定ファイルを変更することにより、証明書登録プロファイルをファイルシステム上で直接変更できます。インストール時のデフォルトプロファイルにはデフォルトファイルが存在します。新しいプロファイルが必要な場合は、新しいプロファイル設定ファイルを作成します。設定ファイルは CA プロファイルディレクトリーである instance_directory/ca/profiles/ca/ に保存されます (例: /var/lib/pki/pki-ca/ca/profiles/ca/)。ファイル名は profile_name.cfg です。プロファイルルールのパラメーターはすべて、これらのプロファイル設定ファイルで設定または変更できます。プロファイルルールは、入力、出力、認証、承認、デフォルト、および制約を使用できます。

CA 証明書の登録プロファイルは、*.profile という名前の /var/lib/pki/ instance_name/ca/conf ディレクトリーにあります。

注記

監査上の理由から、この方法は、デプロイメント前の CA のインストール中にのみ使用してください。

プロファイル設定ファイルを編集して変更を有効にした後、サーバーを再起動します。

15.1. CA 以外のシステム証明書プロファイルの設定

15.1.1. プロファイル設定パラメーター

プロファイルルールのすべてのパラメーター (デフォルト、入力、出力、および制約) は、単一のポリシーセット内で設定されます。プロファイルに設定されたポリシーの名前は policyset.policyName.policyNumber です。以下に例を示します。

policyset.cmcUserCertSet.6.constraint.class_id=noConstraintImpl
policyset.cmcUserCertSet.6.constraint.name=No Constraint
policyset.cmcUserCertSet.6.default.class_id=userExtensionDefaultImpl
policyset.cmcUserCertSet.6.default.name=User Supplied Key Default
policyset.cmcUserCertSet.6.default.params.userExtOID=2.5.29.15

一般的なプロファイル設定パラメーターは、表15.1「プロファイル設定ファイルのパラメーター」 で説明されています。

表15.1 プロファイル設定ファイルのパラメーター
パラメーター説明

desc

エンドエンティティーページに表示される証明書プロファイルのフリーテキストの説明を提供します。たとえば、desc=This certificate profile is for enrolling server certificates with agent authentication. です。

enable

プロファイルを有効にするかどうかを設定します。したがって、エンドエンティティーページからアクセスできます。たとえば、enable=true とします。

auth.instance_id

プロファイルを介して送信された証明書要求の認証に使用する認証マネージャープラグインを設定します。自動登録では、認証に成功すると CA は証明書をすぐに発行します。認証が失敗した場合、または認証プラグインが指定されていない場合、リクエストはキューに入れられ、エージェントによって手動で承認されます。たとえば、auth.instance_id=CMCAuth となります。認証方法は、CS.cfg から登録された認証インスタンスの 1 つである必要があります。

authz.acl

承認制約を指定します。最も一般的なものは、グループ評価 ACL を設定するのに使用されます。たとえば、この caCMCUserCert パラメーターでは、CMC 要求の署名者が Certificate Manager Agents グループに属している必要があります。

authz.acl=group="Certificate Manager Agents"

ディレクトリーベースのユーザー証明書の更新では、このオプションを使用して、元の要求元と現在の認証ユーザーが同じであることを確認します。

エンティティーは、承認を評価する前に、認証 (バインド、または基本的にシステムへのログイン) を行う必要があります。認証メソッドは、CS.cfg から登録された認証インスタンスの 1 つである必要があります。

name

プロファイルの名前を指定します。たとえば、name=Agent-Authenticated サーバー証明書の登録 などです。この名前は、エンドユーザーの登録または更新ページに表示されます。

input.list

名前でプロファイルに許可されている入力をリスト表示します。たとえば、input.list=i1,i2 です。

input.input_id.class_id

入力 ID (input.list にリストされている入力の名前) によって入力の Java クラス名を指定します。たとえば、input.i1.class_id=cmcCertReqInputImpl です。

output.list

プロファイルの可能な出力形式を名前でリストします。たとえば、output.list=o1 です。

output.output_id.class_id

output.list で指定された出力形式の Java クラス名を指定します。たとえば、output.o1.class_id=certOutputImpl です。

policyset.list

設定したプロファイルルールをリスト表示します。二重証明書の場合は、1 セットのルールが署名キーに適用され、もう 1 セットが暗号化キーに適用されます。1 つの証明書で使用するプロファイルは、1 つのプロファイルルールセットだけです。たとえば、policyset.list=serverCertSet です。

policyset.policyset_id.list

プロファイル用に設定されたポリシーセット内のポリシーを、評価する必要のある順序でポリシー ID 番号別にリスト表示します。たとえば、policyset.serverCertSet.list=1,2,3,4,5,6,7,8 のようになります。

policyset.[rep]_policyset_id.policy_number._constraint.class_id

プロファイルルールで設定されたデフォルトに設定された制約プラグインの Java クラス名を指定します。たとえば、policyset.serverCertSet.1.constraint.class_id=subjectNameConstraintImpl です。

policyset.[rep]_policyset_id.policy_number._constraint.name

制約のユーザー定義の名前を指定します。たとえば、policyset.serverCertSet.1.constraint.name=Subject Name Constraint などです。

policyset.policyset_id.policy_number._constraint.params.[rep]_attribute

制約に許可される属性値を指定します。設定可能な属性は、制約の種類によって異なります。たとえば、policyset.serverCertSet.1.constraint.params.pattern=CN=.* です。

policyset.[rep]_policyset_id.policy_number._default.class_id

プロファイルルールに、デフォルトセットの java クラス名を指定します。たとえば、policyset.serverCertSet.1.default.class_id=userSubjectNameDefaultImpl です。

policyset.[rep]_policyset_id.policy_number._default.name

デフォルトのユーザー定義の名前を指定します。たとえば、policyset.serverCertSet.1.default.name=Subject Name Default です。

policyset.policyset_id.policy_number._default.params.[rep]_attribute

デフォルトに対して許可される属性の値を指定します。設定可能な属性は、デフォルトの種類によって異なります。たとえば、policyset.serverCertSet.1.default.params.name=CN=(Name)$request.requestor_name$ です。

15.1.2. ファイルシステムで証明書拡張機能を直接変更する

制約を変更すると、指定できる情報の種類に制限があります。デフォルトと制約を変更すると、証明書要求から受け入れられる、または必要とされる拡張子を追加、削除、または変更することもできます。

たとえば、デフォルトの caFullCMCUserCert プロファイルは、リクエストの情報からキーの使用拡張を作成するように設定されています。

 policyset.cmcUserCertSet.6.constraint.class_id=keyUsageExtConstraintImpl
policyset.cmcUserCertSet.6.constraint.name=Key Usage Extension Constraint
policyset.cmcUserCertSet.6.constraint.params.keyUsageCritical=true
policyset.cmcUserCertSet.6.constraint.params.keyUsageCrlSign=false
policyset.cmcUserCertSet.6.constraint.params.keyUsageDataEncipherment=false
policyset.cmcUserCertSet.6.constraint.params.keyUsageDecipherOnly=false
policyset.cmcUserCertSet.6.constraint.params.keyUsageDigitalSignature=true
policyset.cmcUserCertSet.6.constraint.params.keyUsageEncipherOnly=false
policyset.cmcUserCertSet.6.constraint.params.keyUsageKeyAgreement=false
policyset.cmcUserCertSet.6.constraint.params.keyUsageKeyCertSign=false
policyset.cmcUserCertSet.6.constraint.params.keyUsageKeyEncipherment=true
policyset.cmcUserCertSet.6.constraint.params.keyUsageNonRepudiation=true
policyset.cmcUserCertSet.6.default.class_id=keyUsageExtDefaultImpl
policyset.cmcUserCertSet.6.default.name=Key Usage Default
policyset.cmcUserCertSet.6.default.params.keyUsageCritical=true
policyset.cmcUserCertSet.6.default.params.keyUsageCrlSign=false
policyset.cmcUserCertSet.6.default.params.keyUsageDataEncipherment=false
policyset.cmcUserCertSet.6.default.params.keyUsageDecipherOnly=false
policyset.cmcUserCertSet.6.default.params.keyUsageDigitalSignature=true
policyset.cmcUserCertSet.6.default.params.keyUsageEncipherOnly=false
policyset.cmcUserCertSet.6.default.params.keyUsageKeyAgreement=false
policyset.cmcUserCertSet.6.default.params.keyUsageKeyCertSign=false
policyset.cmcUserCertSet.6.default.params.keyUsageKeyEncipherment=true
policyset.cmcUserCertSet.6.default.params.keyUsageNonRepudiation=true

デフォルトは、ユーザーが指定するキー拡張機能を許可するように更新されます。

policyset.cmcUserCertSet.6.default.class_id=userExtensionDefaultImpl
policyset.cmcUserCertSet.6.default.name=User Supplied Key Default
policyset.cmcUserCertSet.6.default.params.userExtOID=2.5.29.15

これにより、証明書リクエストで、拡張 OID 2.5.29.15 を受け入れるようにサーバーが設定されます。

その他の制約やデフォルトも同じように変更できます。必要な制約が適切なデフォルト値に含まれていることを確認し、別の制約が必要な場合にデフォルトが変更され、許可される制約のみがデフォルトで使用されます。詳細は、Red Hat Certificate System 管理ガイドデフォルトのリファレンス および 成約のリファレンス セクションを参照してください。

15.1.2.1. 主な使用方法および拡張キー使用の一貫性

Red Hat Certificate System は、環境の要件を満たすように、管理者がカスタム登録プロファイルを作成するための柔軟なインフラストラクチャーを提供します。ただし、プロファイルでは RFC 5280 で定義された要件に違反する証明書を発行できません。キー使用法 (KU) と拡張キー使用法 (EKU) の両方の拡張機能が存在する登録プロファイルを作成する場合は、セクション 4.2.1.12 に従って、2 つの拡張機能間の整合性が維持されていることを確認することが重要です。RFC 5280 の拡張鍵使用。

KU 拡張機能の詳細は、以下を参照してください。

次の表に、一貫したキー使用ビットを各目的の拡張キー使用拡張にマップするガイドラインを示します。

目的/拡張キー使用方法主な使用方法

TLS サーバー認証コマンド

id-kp-serverAuth

digitalSignaturekeyEncipherment、または KeyAgreement

TLS クライアント (相互) 認証

id-kp-clientAuth

digitalSignaturekeyEncipherment、および/または KeyAgreement

コード署名

id-kp-codeSigning

digitalSignature

メール保護

id-kp-emailProtection

digitalSignaturenonRepudiation、および/または (keyEncipherment または keyAgreement)

OCSP レスポンスの署名

id-kp-OCSPSigning

KeyAgreement および/または nonRepudiation

以下は、一貫性のない EKU/KU の例を 2 つ示しています。

  • OCSP 応答署名を目的とした登録プロファイルには、拡張キーの使用法 id-kp-OCSPSigning が含まれていますが、keyEncipherment キー使用法ビットとともに使用されます。

    policyset.ocspCertSet.6.default.class_id=keyUsageExtDefaultImpl
    policyset.ocspCertSet..6.default.name=Key Usage Default
    policyset.ocspCertSet..6.default.params.keyUsageCritical=true
    policyset.ocspCertSet..6.default.params.keyUsageCrlSign=false
    policyset.ocspCertSet..6.default.params.keyUsageDataEncipherment=false
    policyset.ocspCertSet..6.default.params.keyUsageDecipherOnly=false
    policyset.ocspCertSet..6.default.params.keyUsageDigitalSignature=true
    policyset.ocspCertSet..6.default.params.keyUsageEncipherOnly=false
    policyset.ocspCertSet..6.default.params.keyUsageKeyAgreement=false
    policyset.ocspCertSet..6.default.params.keyUsageKeyCertSign=false
    policyset.ocspCertSet..6.default.params.keyUsageKeyEncipherment=true
    policyset.ocspCertSet..6.default.params.keyUsageNonRepudiation=true
    policyset.ocspCertSet.7.constraint.params.exKeyUsageOIDs=1.3.6.1.5.5.7.3.9
    policyset.ocspCertSet.7.default.class_id=extendedKeyUsageExtDefaultImpl
    policyset.ocspCertSet.7.default.name=Extended Key Usage Default
    policyset.ocspCertSet.7.default.params.exKeyUsageCritical=false
    policyset.ocspCertSet.7.default.params.exKeyUsageOIDs=1.3.6.1.5.5.7.3.9
  • TLS サーバー認証の目的を目的とする登録プロファイルは、拡張キー usage id-kp-serverAuth ですが、CRL 署名鍵の使用ビットを使用します。

    policyset.serverCertSet.6.default.name=Key Usage Default
    policyset.serverCertSet.6.default.params.keyUsageCritical=true
    policyset.serverCertSet.6.default.params.keyUsageDigitalSignature=true
    policyset.serverCertSet.6.default.params.keyUsageNonRepudiation=false
    policyset.serverCertSet.6.default.params.keyUsageDataEncipherment=true
    policyset.serverCertSet.6.default.params.keyUsageKeyEncipherment=false
    policyset.serverCertSet.6.default.params.keyUsageKeyAgreement=true
    policyset.serverCertSet.6.default.params.keyUsageKeyCertSign=false
    policyset.serverCertSet.6.default.params.keyUsageCrlSign=true
    policyset.serverCertSet.6.default.params.keyUsageEncipherOnly=false
    policyset.serverCertSet.6.default.params.keyUsageDecipherOnly=false
    policyset.cmcUserCertSet.7.default.class_id=extendedKeyUsageExtDefaultImpl
    policyset.cmcUserCertSet.7.default.name=Extended Key Usage Extension Default
    policyset.cmcUserCertSet.7.default.params.exKeyUsageCritical=false
    policyset.serverCertSet.7.default.params.exKeyUsageOIDs=1.3.6.1.5.5.7.3.1
  • Red Hat Certificate System 管理ガイド主な使用拡張機能の制約 セクション
  • Red Hat Certificate System 管理ガイドkeyUsage セクション

EKU 拡張機能の詳細は、以下を参照してください。

15.1.2.2. クロスペアプロファイルの設定

クロスペア証明書は、信頼パートナー関係を確立する別の CA 署名証明書であり、これにより、これら 2 つの別個の PKI のエンティティーが相互に信頼します。両方のパートナー CA は、その他の CA 署名証明書をデータベースに保存するため、他の PKI 内で発行されたすべての証明書は信頼され、認識されます。

Certificate System がサポートする 2 つの拡張は、このような信頼パートナー関係 (相互認証) を確立するために使用できます。

  • 証明書ポリシー拡張 (CertificatePoliciesExtension) は、証明書が該当する条件を指定します。これは、多くの場合、PKI ごとに一意です。
  • ポリシーマッピング拡張機能 (PolicyMappingExtension) は、2 つの環境の証明書プロファイルをマッピングすることにより、2 つの PKI 間の信頼をシールします。

クロスペアの証明書を発行するには、証明書ポリシー拡張が必要です。これは、Red Hat Certificate System 管理ガイド の付録 certificatePoliciesExt で説明されています。

発行された証明書に CertificatePoliciesExtension が含まれていることを確認するには、登録プロファイルに適切なポリシールールを含める必要があります。次に例を示します。

policyset.userCertSet.p7.constraint.class_id=noConstraintImpl
policyset.userCertSet.p7.constraint.name=No Constraint
policyset.userCertSet.p7.default.class_id=certificatePoliciesExtDefaultImpl
policyset.userCertSet.p7.default.name=Certificate Policies Extension Default
policyset.userCertSet.p7.default.params.Critical=false
policyset.userCertSet.p7.default.params.PoliciesExt.num=1
policyset.userCertSet.p7.default.params.PoliciesExt.certPolicy0.enable=true
policyset.userCertSet.p7.default.params.PoliciesExt.certPolicy0.policyId=1.1.1.1
policyset.userCertSet.p7.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.CPSURI.enable=false
policyset.userCertSet.p7.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.CPSURI.value=
policyset.userCertSet.p7.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.usernotice.enable=false
policyset.userCertSet.p7.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.usernotice.explicitText.value=
policyset.userCertSet.p7.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.usernotice.noticeReference.noticeNumbers=
policyset.userCertSet.p7.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.usernotice.noticeReference.organization=

この例の登録プロファイルで発行された証明書には、次の情報が含まれます。

Identifier: Certificate Policies: - 2.5.29.32
Critical: no
Certificate Policies:
Policy Identifier: 1.1.1.1

クロスペア証明書の使用の詳細は、Red Hat Certificate System 管理ガイドクロスペアの証明書の使用 セクションを参照してください。

クロスペア証明書の公開の詳細は、Red Hat Certificate System 管理ガイドクロスペアの証明書の公開 セクションを参照してください。

15.1.3. ファイルシステムへのプロファイル入力の直接追加

CA の profiles/ca ディレクトリーにある証明書プロファイル設定ファイルには、その特定の証明書プロファイルフォームの入力情報が含まれます。入力は、エンドエンティティーページ登録フォームのフィールドです。そのプロファイルに含まれる入力を一覧表示するパラメーター input.list があります。その他のパラメーターは入力を定義します。これらは input.ID 形式で識別されます。たとえば、これにより一般的な入力がプロファイルに追加されます。

input.list=i1,i2,i3,i4
...
input.i4.class_id=genericInputImpl
input.i4.params.gi_display_name0=Name0
input.i4.params.gi_display_name1=Name1
input.i4.params.gi_display_name2=Name2
input.i4.params.gi_display_name3=Name3
input.i4.params.gi_param_enable0=true
input.i4.params.gi_param_enable1=true
input.i4.params.gi_param_enable2=true
input.i4.params.gi_param_enable3=true
input.i4.params.gi_param_name0=gname0
input.i4.params.gi_param_name1=gname1
input.i4.params.gi_param_name2=gname2
input.i4.params.gi_param_name3=gname3
input.i4.params.gi_num=4

利用可能な入力やフォームフィールドの詳細は、Red Hat Certificate System 管理ガイド入力の参照 セクションを参照してください。

15.2. 証明書のデフォルト有効期間の変更

認証局 (CA) の各プロファイルで、プロファイルを使用して発行された証明書が有効である期間を設定できます。セキュリティー上の理由から、この値を変更できます。

たとえば、生成された認証局 (CA) 署名証明書の有効性を 825 日 (約 27 ヶ月) に設定するには、/var/lib/pki/ instance_name/ca/profiles/ca/caCACert.cfg ファイルをエディターで開き、以下を設定します。

policyset.caCertSet.2.default.params.range=825

15.3. CA システム証明書プロファイルの設定

CA 以外のサブシステムとは異なり、CA 自体のシステム証明書の登録プロファイルは /var/lib/pki/[instance name]/ca/conf ファイルに保持されます。これらのプロファイルは以下のとおりです。

  • caAuditSigningCert.profile
  • eccAdminCert.profile
  • rsaAdminCert.profile
  • caCert.profile
  • eccServerCert.profile
  • saServerCert.profile
  • caOCSPCert.profile
  • eccSubsystemCert.profile
  • rsaSubsystemCert.profile

上記のプロファイルのデフォルト値を変更する場合は、<<_installation_methods> 手順を実行する前にプロファイルを変更します。以下は、次のことを示す例です。

  • 効力を CA 署名証明書に変更する方法。
  • エクステンションの追加方法 (証明書ポリシー拡張機能など)。

    1. pkispawn が使用する元の CA 証明書プロファイルをバックアップします。

      # cp -p /usr/share/pki/ca/conf/caCert.profile /usr/share/pki/ca/conf/caCert.profile.orig
    2. 設定ウィザードが使用する CA 証明書プロファイルを開きます。

      # vim /usr/share/pki/ca/conf/caCert.profile
    3. Validity Default の有効期限を任意の値にリセットします。たとえば、期間を 2 年に変更するには、次のコマンドを実行します。

      2.default.class=com.netscape.cms.profile.def.ValidityDefault
      2.default.name=Validity Default
      2.default.params.range=7200
    4. プロファイルに新しいデフォルトエントリーを作成し、これをリストに追加して、エクステンションを追加します。たとえば、証明書ポリシー拡張機能を追加するには、デフォルト (この例ではデフォルト #9) を追加します。

      9.default.class_id=certificatePoliciesExtDefaultImpl
      9.default.name=Certificate Policies Extension Default
      9.default.params.Critical=false
      9.default.params.PoliciesExt.certPolicy0.enable=false
      9.default.params.PoliciesExt.certPolicy0.policyId=
      9.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.CPSURI.enable=true
      9.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.CPSURI.value=CertificatePolicies.example.com
      9.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.usernotice.enable=false
      9.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.usernotice.explicitText.value=
      9.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.usernotice.noticeReference.noticeNumbers=
      9.default.params.PoliciesExt.certPolicy0.PolicyQualifiers0.usernotice.noticeReference.organization=

      次に、新しいデフォルトを使用するデフォルトのリストにデフォルトの番号を追加します。

      list=2,4,5,6,7,8,9

15.4. スマートカード CA プロファイルの管理

注記

TMS 上のこのセクションにある機能は、評価でテストされていません。このセクションは参照用途としてのみ提供されています。

TPS は、証明書要求を生成または承認しません。Enterprise Security Client を介して承認された要求を、設定済みの CA に送信して証明書を発行します。これは、CA にトークンとスマートカードに使用するプロファイルが実際に含まれることを意味します。使用するプロファイルは、カードの種類に基づいて自動的に割り当てられます。

プロファイルの設定ファイルは、他の CA プロファイルが含まれる /var/lib/ instance_name/ca/profiles/ca/ ディレクトリーにあります。デフォルトのプロファイルは、表15.2「デフォルトのトークン証明書プロファイル」 に一覧表示されます。

表15.2 デフォルトのトークン証明書プロファイル
プロファイル名設定ファイル説明

通常の登録プロファイル

トークンデバイスのキー登録

caTokenDeviceKeyEnrollment.cfg

デバイスまたはサーバーに使用するトークンの登録

トークンユーザー暗号化証明書の登録

caTokenUserEncryptionKeyEnrollment.cfg

ユーザーのトークンで暗号化証明書を登録する場合。

トークンユーザーの署名証明書登録

caTokenUserSigningKeyEnrollment.cfg

ユーザーのトークンに署名証明書を登録する場合。

トークンユーザー MS ログイン証明書の登録

caTokenMSLoginEnrollment.cfg

Windows ドメインまたは PC へのシングルサインオンに使用するユーザー証明書を登録する場合。

一時トークンプロファイル

一時的なデバイス証明書の登録

caTempTokenDeviceKeyEnrollment.cfg

一時的なトークンでデバイスの証明書を登録する場合

一時的なトークン暗号化証明書の登録

caTempTokenUserEncryptionKeyEnrollment.cfg

ユーザーの一時的なトークンに暗号化証明書を登録する場合。

一時的なトークンユーザー署名証明書

caTempTokenUserSigningKeyEnrollment.cfg

ユーザーの一時的なトークンに署名証明書を登録する場合。

プロファイルの更新

トークンユーザー暗号化証明書の登録 (更新)

caTokenUserEncryptionKeyRenewal.cfg

更新が許可される場合に、ユーザーのトークンで暗号化証明書を更新する場合。

トークンユーザー署名証明書の登録 (更新)

caTokenUserSigningKeyRenewal.cfg

更新が許可される場合に、トークンの署名証明書を更新するため。

15.4.1. TPS の登録プロファイルの編集

管理者は、TPS で使用されるデフォルトのスマートカード登録プロファイルをカスタマイズできます。たとえば、プロファイルを編集して、サブジェクト代替名拡張子にユーザーの電子メールアドレスを含めることができます。ユーザーのメールアドレスは認証ディレクトリーから取得されます。LDAP アクセス用に CA を設定するには、プロファイルファイルの次のパラメーターを、適切なディレクトリー情報とともに変更します。

policyset.set1.p1.default.params.dnpattern=UID=$request.uid$, O=Token Key User
				policyset.set1.p1.default.params.ldap.enable=true
				policyset.set1.p1.default.params.ldap.basedn=ou=people,dc=host,dc=example,dc=com
				policyset.set1.p1.default.params.ldapStringAttributes=uid,mail
				policyset.set1.p1.default.params.ldap.ldapconn.host=localhost.example.com
				policyset.set1.p1.default.params.ldap.ldapconn.port=389

これらの CA プロファイルには、LDAP ルックアップがデフォルトで無効になっています。ldapStringAttributes パラメーターは、会社のディレクトリーから取得する LDAP 属性を CA に指示します。たとえば、ディレクトリーに LDAP 属性名として uid が含まれており、証明書のサブジェクト名に使用される場合、uidldapStringAttributes パラメーターにリストされ、request.uiddnpattern のコンポーネントのひとつとしてリストされなければなりません。

証明書プロファイルの編集は、Red Hat Certificate System 管理ガイド証明書プロファイルの設定 で説明されています。

dnpattern パラメーターのフォーマットは、パラメーターは、Red Hat Certificate System 管理ガイドサブジェクト名の制約 セクションおよび サブジェクト名のデフォルト セクションで説明されています。

15.4.2. カスタム TPS プロファイルの作成

証明書プロファイルは通常どおり CA で作成されますが、トークンの登録で使用できるようにするには、TPS で設定する必要もあります。

ヒント

新しいプロファイルは、Red Hat Certificate System の新しいリリースで追加されます。インスタンスが Certificate System 10.0 に移行されると、新しいプロファイルは、カスタムプロファイルであるかのように、移行されたインスタンスに追加する必要があります。

  1. 発行する CA 用の新しいトークンプロファイルを作成します。プロファイルの設定は、Red Hat Certificate System 管理ガイド証明書のプロファイルの設定 セクションで説明されています。
  2. プロファイルを CA のプロファイルディレクトリー /var/lib/ instance_name/ca/profiles/ca/ にコピーします。
  3. CA の CS.cfg ファイルを編集し、新規プロファイルの参照およびプロファイル名を CA のプロファイル一覧に追加します。以下に例を示します。

    # vim etc/pki/ instance_name/ca/CS.cfg
    
    				profile.list=caUserCert,...,caManualRenewal,tpsExampleEnrollProfile
    				...
    				profile.caTokenMSLoginEnrollment.class_id=caUserCertEnrollImpl
    				profile.caTokenMSLoginEnrollment.config=/var/lib/pki/ instance_name/profiles/ca/tpsExampleEnrollProfile.cfg
  4. TPS CS.cfg ファイルを編集し、新しい CA 登録プロファイルを参照する行を追加します。以下に例を示します。

    # vim /etc/pki/ instance_name/tps/CS.cfg
    
    				op.enroll.userKey.keyGen.signing.ca.profileId=tpsExampleEnrollProfile
  5. スマートカードプロファイルを編集したら、インスタンスを再起動します。

    # systemctl restart pki-tomcatd-nuxwdog@instance_name.service

    CA と TPS が別のインスタンスにある場合は、両方のインスタンスを再起動します。

注記

外部登録の登録プロファイル (externalReg) 設定は、ユーザーの LDAP エントリーで設定されます。

15.4.3. Windows スマートカードのログオンプロファイルの使用

TPS はプロファイルを使用して、Windows ドメインまたは PC へのシングルサインオンに使用する証明書を生成します。これは、トークンユーザーの MS ログイン証明書の登録プロファイルです (caTokenMSLoginEnrollment.cfg)。

ただし、管理者が Windows スマートカードログインを設定するときに考慮する 必要 がある特別な考慮事項がいくつかあります。

  • TLS に対して設定されていない場合は、ドメインコントローラーに証明書を発行します。
  • グローバルポリシーではなく、ユーザーごとのスマートカードログインを設定して、ドメイン管理者のロックアウトを防止します。
  • ドメインコントローラーはログインのたびに CRL をチェックするため、Active Directory サーバーへの CRL 公開を有効にします。

15.5. 証明書の登録プロファイルの無効化

このセクションでは、選択したプロファイルを無効にする手順を説明します。

証明書プロファイルを無効にするには、/var/lib/pki/ instance_name/ca/profiles/ca/ ディレクトリー内で対応する *.cfg ファイルを編集し、visibleenable のパラメーターを false に設定します。

たとえば、CMC プロファイルをすべて無効にするには、次のコマンドを実行します。

  1. CMC 以外のプロファイルのリストを表示します。

    # ls -l /var/lib/pki/ instance_name/ca/profiles/ca/ | grep -v "CMC"
  2. 表示される各ファイルで、以下のパラメーターを false に設定します。

    visible=false
    enable=false

さらに、すべての CMC プロファイルで visible=false を設定し、エンドエンティティーページに表示されないようにします。

  1. CMC プロファイルのリストを表示します。

    # ls -l /var/lib/pki/ instance_name/ca/profiles/ca/CMC
  2. 表示される各ファイルで、以下を設定します。

    visible=false

第16章 キーリカバリー認証局の設定

この章では、Key Recovery Authority (KRA) を使用してキーを回復する方法を説明します。

16.1. キーアーカイブの手動設定

重要

この手順は、CA および KRA が同じセキュリティードメインにある場合は不要です。この手順は、セキュリティードメインの 外部 にある CA にのみ必要です。

キーアーカイブを手動で設定すると、2 つの項目が可能になります。

  • CA と KRA との間に信頼される関係があります。
  • キーアーカイブ用に登録フォームが有効になっていると、鍵のアーカイブが設定され、KRA トランスポート証明書がフォームに保存されます。

同じセキュリティードメイン内で、KRA が設定されると、これらの設定手順の両方が 自動的 に実行されます。これは、KRA がセキュリティードメイン内の任意の CA と信頼関係を持つように設定されているためです。信頼関係とプロファイル登録フォームを手動で設定することにより、セキュリティードメイン外の Certificate Manager との信頼関係を作成することができます。

  1. 必要に応じて、信頼できるマネージャーを作成して、Certificate Manager と KRA との間に関係を確立します。

    CA が KRA のキーアーカイブを要求できるようにするには、2 つのサブシステムが相互に認識、信頼、および通信するように設定されている必要があります。証明書マネージャーが、KRA の内部データベースで、適切な TLS クライアント認証証明書を使用して特権ユーザーとして設定されていることを確認します。デフォルトでは、Certificate Manager は、KRA への TLS クライアント認証にサブシステム証明書を使用します。

  2. KRA の base-64 でエンコードされたトランスポート証明書をコピーします。

    トランスポート証明書は KRA の証明書データベースに保存され、certutil ユーティリティーを使用して取得できます。トランスポート証明書が Certificate Manager によって署名されている場合、証明書のコピーは、Retrieval タブの Certificate Manager エンドエンティティーページから入手できます。

    または、pki ユーティリティーを使用してトランスポート証明書をダウンロードします。

    # pki cert-find --name "KRA Transport certificate's subject common name"
    # pki cert-show serial_number --output transport.pem
  3. CA の CS.cfg ファイルにトランスポート証明書を追加します。

    ca.connector.KRA.enable=true
    ca.connector.KRA.host=server.example.com
    ca.connector.KRA.local=false
    ca.connector.KRA.nickName=subsystemCert cert-pki-ca
    ca.connector.KRA.port=8443
    ca.connector.KRA.timeout=30
    ca.connector.KRA.transportCert=MIIDbDCCAlSgAwIBAgIBDDANBgkqhkiG9w0BAQUFADA6MRgwFgYDVQQKEw9Eb21haW4gc28gbmFtZWQxHjAcBgNVBAMTFUNlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wNjExMTQxODI2NDdaFw0wODEwMTQxNzQwNThaMD4xGDAWBgNVBAoTD0RvbWFpbiBzbyBuYW1lZDEiMCAGA1UEAxMZRFJNIFRyYW5zcG9ydCBDZXJ0aWZpY2F0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKnMGB3WkznueouwZjrWLFZBLpKt6TimNKV9iz5s0zrGUlpdt81/BTsU5A2sRUwNfoZSMs/d5KLuXOHPyGtmC6yVvaY719hr9EGYuv0Sw6jb3WnEKHpjbUO/vhFwTufJHWKXFN3V4pMbHTkqW/x5fu/3QyyUre/5IhG0fcEmfvYxIyvZUJx+aQBW437ATD99Kuh+I+FuYdW+SqYHznHY8BqOdJwJ1JiJMNceXYAuAdk+9t70RztfAhBmkK0OOP0vH5BZ7RCwE3Y/6ycUdSyPZGGc76a0HrKOz+lwVFulFStiuZIaG1pv0NNivzcj0hEYq6AfJ3hgxcC1h87LmCxgRWUCAwEAAaN5MHcwHwYDVR0jBBgwFoAURShCYtSg+Oh4rrgmLFB/Fg7X3qcwRAYIKwYBBQUHAQEEODA2MDQGCCsGAQUFBzABhihodHRwOi8vY2x5ZGUucmR1LnJlZGhhdC5jb206OTE4MC9jYS9vY3NwMA4GA1UdDwEB/wQEAwIE8DANBgkqhkiG9w0BAQUFAAOCAQEAFYz5ibujdIXgnJCbHSPWdKG0T+FmR67YqiOtoNlGyIgJ42fi5lsDPfCbIAe3YFqmF3wU472h8LDLGyBjy9RJxBj+aCizwHkuoH26KmPGntIayqWDH/UGsIL0mvTSOeLqI3KM0IuH7bxGXjlION83xWbxumW/kVLbT9RCbL4216tqq5jsjfOHNNvUdFhWyYdfEOjpp/UQZOhOM1d8GFiw8N8ClWBGc3mdlADQp6tviodXueluZ7UxJLNx3HXKFYLleewwIFhC82zqeQ1PbxQDL8QLjzca+IUzq6Cd/t7OAgvv3YmpXgNR0/xoWQGdM1/YwHxtcAcVlskXJw5ZR0Y2zA==
    ca.connector.KRA.uri=/kra/agent/kra/connector
  4. 登録フォームを編集し、keyTransportCert メソッドでトランスポート証明書の値を追加または置き換えます。

    # vim /var/lib/pki/pki-tomcat/ca/webapps/ca/ee/ca/ProfileSelect.template
    
    var keyTransportCert = MIIDbDCCAlSgAwIBAgIBDDANBgkqhkiG9w0BAQUFADA6MRgwFgYDVQQKEw9Eb21haW4gc28gbmFtZWQxHjAcBgNVBAMTFUNlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wNjExMTQxODI2NDdaFw0wODEwMTQxNzQwNThaMD4xGDAWBgNVBAoTD0RvbWFpbiBzbyBuYW1lZDEiMCAGA1UEAxMZRFJNIFRyYW5zcG9ydCBDZXJ0aWZpY2F0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKnMGB3WkznueouwZjrWLFZBLpKt6TimNKV9iz5s0zrGUlpdt81/BTsU5A2sRUwNfoZSMs/d5KLuXOHPyGtmC6yVvaY719hr9EGYuv0Sw6jb3WnEKHpjbUO/vhFwTufJHWKXFN3V4pMbHTkqW/x5fu/3QyyUre/5IhG0fcEmfvYxIyvZUJx+aQBW437ATD99Kuh+I+FuYdW+SqYHznHY8BqOdJwJ1JiJMNceXYAuAdk+9t70RztfAhBmkK0OOP0vH5BZ7RCwE3Y/6ycUdSyPZGGc76a0HrKOz+lwVFulFStiuZIaG1pv0NNivzcj0hEYq6AfJ3hgxcC1h87LmCxgRWUCAwEAAaN5MHcwHwYDVR0jBBgwFoAURShCYtSg+Oh4rrgmLFB/Fg7X3qcwRAYIKwYBBQUHAQEEODA2MDQGCCsGAQUFBzABhihodHRwOi8vY2x5ZGUucmR1LnJlZGhhdC5jb206OTE4MC9jYS9vY3NwMA4GA1UdDwEB/wQEAwIE8DANBgkqhkiG9w0BAQUFAAOCAQEAFYz5ibujdIXgnJCbHSPWdKG0T+FmR67YqiOtoNlGyIgJ42fi5lsDPfCbIAe3YFqmF3wU472h8LDLGyBjy9RJxBj+aCizwHkuoH26KmPGntIayqWDH/UGsIL0mvTSOeLqI3KM0IuH7bxGXjlION83xWbxumW/kVLbT9RCbL4216tqq5jsjfOHNNvUdFhWyYdfEOjpp/UQZOhOM1d8GFiw8N8ClWBGc3mdlADQp6tviodXueluZ7UxJLNx3HXKFYLleewwIFhC82zqeQ1PbxQDL8QLjzca+IUzq6Cd/t7OAgvv3YmpXgNR0/xoWQGdM1/YwHxtcAcVlskXJw5ZR0Y2zA==;

16.2. KRA 操作の暗号化

Certificate System は、キーリカバリー認証局 (KRA) で以下の鍵操作を暗号化します。

  • アーカイブ:

    • KRA に転送するために Certificate Request Message Format (CRMF) パッケージにアーカイブするキーの暗号化。
    • KRA LDAP データベースのストレージの鍵の暗号化。
  • リカバリー:

    • キーに転送するためにユーザーが提供したセッションキーの暗号化。
    • シークレットの復号と、ユーザー提供のセッションキーを使用した再暗号化、または PKCS #12 パッケージの作成。
  • 生成:

    • ストレージの生成される鍵の暗号化。

16.2.1. クライアントによるキー操作暗号化の管理方法

Certificate System クライアントは、KRA の設定で設定された暗号化アルゴリズムを自動的に使用し、それ以上のアクションは必要ありません。

16.2.2. KRA での暗号化アルゴリズムの設定

注記

以下の設定では、AES CBC(kra.allowEncDecrypt.archive=true および kra.allowEncDecrypt.recovery=true の場合) および AES Key Wrap(kra.allowEncDecrypt.archive=false および kra.allowEncDecrypt.recovery=false の場合) だけを使用できます。いずれかのアルゴリズムをサポートする FIPS140-2 で検証された HSM はすべて、KRA が提供する主要なアーカイブおよびリカバリー機能に使用できます。

Certificate System は、/var/lib/pki/pki-instance_name/conf/kra/CS.cfg ファイルで鍵操作暗号化に関連する設定パラメーターのグループを定義します。以下のパラメーターのセットを推奨します (他のオプションは上記を参照)。

kra.allowEncDecrypt.archive=false
kra.allowEncDecrypt.recovery=false
kra.storageUnit.wrapping.1.sessionKeyLength=256
kra.storageUnit.wrapping.1.sessionKeyWrapAlgorithm=RSA
kra.storageUnit.wrapping.1.payloadEncryptionPadding=PKCS5Padding
kra.storageUnit.wrapping.1.sessionKeyKeyGenAlgorithm=AES
kra.storageUnit.wrapping.1.payloadEncryptionAlgorithm=AES
kra.storageUnit.wrapping.1.payloadEncryptionMode=CBC
kra.storageUnit.wrapping.1.payloadWrapAlgorithm=AES KeyWrap
kra.storageUnit.wrapping.1.sessionKeyType=AES
kra.storageUnit.wrapping.1.payloadWrapIVLen=16
kra.storageUnit.wrapping.choice=1

各グループ (kra.storageUnit.wrapping.0.* 対 kra.storageUnit.wrapping.1.*) には個別の設定があり、番号はどの設定が同じ設定グループに属するかを定義します。現在の設定グループは、/var/lib/pki/pki-instance_name/conf/kra/CS.cfg ファイルの kra.storageUnit.wrapping.choice パラメーターで設定されています。

続行する前に、設定ファイルに kra.storageUnit.wrapping.choice=1 が設定されていることを確認してください。

注記

Certificate System は、KRA データベースのレコードにデータを復号化するのに必要な情報を追加します。したがって、暗号化アルゴリズムを変更した後でも、Certificate System は、別の暗号化アルゴリズムを使用して、以前に KRA に保存されたデータを復号化できます。

16.2.2.1. パラメーターとその値の説明

各シークレット ("payload") はセッションキーで暗号化されます。この暗号化を制御するパラメーターには、payload という接頭辞が付けられます。使用するパラメーターは、kra.allowEncDecrypt.archive および kra.allowEncDecrypt.recovery の値によって異なります。デフォルトでは、これらは両方とも false です。HSM におけるこの 2 つのパラメーターの効果については、「KRA で AES 暗号化を使用する場合の HSM の制約の解決」 を参照してください。

kra.allowEncDecrypt.archivekra.allowEncDecrypt.recovery がいずれも false の場合:

  • payloadWrapAlgorithm は、使用されるラッピングアルゴリズムを決定します。有効なオプションは AES KeyWrap のみです。
  • payloadWrapAlgorithm=AES/CBC/CBC/PKCS5Padding の場合、payloadWrapIVLength=16 を指定して IV を生成する必要がある PKI に指示する必要があります (CBC に 1 つ必要)。

kra.allowEncDecrypt.archivekra.allowEncDecrypt.recovery がいずれも true の場合:

  • payloadEncryptionAlgorithm は、使用される暗号化アルゴリズムを決定します。唯一の有効な選択肢は AES です。
  • payloadEncryptionMode は、ブロックチェーンモードを決定します。唯一の有効な選択肢は CBC です。
  • payloadEncryptionPadding により、パディングスキームが決まります。唯一の有効な選択肢は PKCS5Padding です。

次に、セッションキーは KRA Storage Certificate (RSA トークン) でラップされます。セッションキーおよびその暗号化を制御するパラメーターには、sessionKey という接頭辞が付けられます。

  • sessionKeyType は、生成するキーのタイプです。唯一の有効な選択肢は AES です。
  • sessionKeyLength は、生成されたセッションキーの長さです。有効な選択肢は 128256 で、ペイロードをそれぞれ 128 ビット AES または 256 ビット AES で暗号化します。
  • sessionKeyWrapAlgorithm は、KRA Storage 証明書が使用するキーのタイプです。このガイドで唯一の有効な選択肢は RSA です。
16.2.2.2. KRA で AES 暗号化を使用する場合の HSM の制約の解決

KRA で AES を有効にして Certificate System を実行していても、ハードウェアセキュリティーモジュール (HSM) が AES キーラッピング機能をサポートしていない場合、キーのアーカイブは失敗します。この問題を解決するには、以下のソリューションがサポートされます。

キーラッピングの差分アルゴリズムの選択

KRA は、デフォルトのキーラッピングアルゴリズムをサポートしていない場合がありますが、他のアルゴリズムはサポートしています。たとえば、AES-128-CBC をキーラッピングアルゴリズムとして使用するには、次のコマンドを実行します。

  1. /var/lib/pki/pki-instance_name/conf/kra/CS.cfg ファイルで以下のパラメーターを設定します。

    kra.storageUnit.wrapping.1.payloadWrapAlgorithm=AES KeyWrap
    kra.storageUnit.wrapping.1.payloadWrapIVLen=16
    kra.storageUnit.wrapping.1.sessionKeyLength=128
  2. インスタンスを再起動します。

    # systemctl restart pki-tomcatd@instance_name.service

    または (nuxwdog watchdog を使用している場合)

    # systemctl restart pki-tomcatd-nuxwdog@instance_name.service

    KRA が異なるインスタンスで実行されている場合、CA は両方のインスタンスを再起動する必要があります。

キーラッピングに別のアルゴリズムを選択すると、HSM が後で AES キーラッピングのサポートを追加した場合に、キーレコードに関連情報が設定されているため、設定を元に戻すことができるという利点があります。

この設定は、kra.storageUnit.wrapping.1.payloadWrap{Algorithm,IVLen}kra.storageUnit.wrapping.1.payloadEncryption{Algorithm,Mode,Padding} のパラメーターを使用します。

KRA を暗号化モードに設定する

HSM が KeyWrap アルゴリズムをサポートしていない場合、場合によっては、KRA を暗号化モードにする必要があります。KRA を暗号化モードに設定すると、すべてのキーは、キーラッピングアルゴリズムではなく暗号化アルゴリズムを使用して保存されます。

KRA を暗号化モードに設定するには、以下を行います。

  1. /var/lib/pki/pki-instance_name/conf/kra/CS.cfg ファイルの以下のパラメーターを true に設定します。

    kra.allowEncDecrypt.archive=true
    kra.allowEncDecrypt.recovery=true
  2. サービスを再起動します。

    # systemctl restart pki-tomcatd@instance_name.service

    または (nuxwdog watchdog を使用している場合)

    # systemctl restart pki-tomcatd-nuxwdog@instance_name.service

    KRA が CA 以外のインスタンスで実行している場合は、両方のインスタンスを再起動する必要があります。

この設定は、kra.storageUnit.wrapping.1.payloadEncryption{Algorithm,Mode,Padding}kra.storageUnit.wrapping.1.payloadWrap{Algorithm,IVLen} パラメーターを使用します。

注記

後で、「キーラッピングの差分アルゴリズムの選択」 に従ってキーラッピングのために別のアルゴリズムに切り替える場合は、KRA を暗号化モードに設定する前に、作成されたレコードに適切なメタデータを手動で追加する必要があります。

16.3. エージェント承認キーリカバリースキームの設定

キーリカバリーエージェントは、PKCS#12 パッケージ内の秘密暗号化キーと関連する証明書をまとめて承認および取得します。キーリカバリーを承認するには、必要な数のリカバリーエージェントが KRA エージェントサービスページにアクセスし、Authorize Recovery 領域を使用して各承認を個別に入力します。

エージェントの 1 つが、キーリカバリープロセスを開始します。同期リカバリーの場合、各承認エージェントは、(最初のリクエストで返された) 参照番号を使用して要求をオープンにし、その後、個別に鍵のリカバリーを承認します。非同期リカバリーの場合、承認エージェントはすべてキーリカバリー要求を検索してから、キーリカバリーを承認します。すべての承認が指定されている場合に、KRA は情報を確認します。提示された情報が正しい場合は、要求されたキーを取得し、PKCS #12 パッケージの形式で、キーリカバリープロセスを開始したエージェントに、対応する証明書を返します。

キーリカバリーエージェントスキーム は、キーリカバリーエージェントが属するグループを認識するように KRA を設定し、アーカイブされた鍵を復元する前にキーリカバリー要求を承認するために必要なこれらのエージェントの数を指定します。

16.3.1. コマンドラインでのエージェント承認キーリカバリーの設定

エージェントが開始するキーリカバリーを設定するには、KRA 設定で 2 つのパラメーターを編集します。

  • リカバリーの承認に必要なリカバリーマネージャーの数を設定します。
  • これらのユーザーが属する必要のあるグループを設定します。

これらのパラメーターは、KRA の CS.cfg 設定ファイルで設定されます。

  1. 設定ファイルを編集する前にサーバーを停止します。

    # systemctl stop pki-tomcatd@instance_name.service

    または (nuxwdog watchdog を使用している場合)

    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
  2. KRA の CS.cfg ファイルを開きます。

    # vim /var/lib/pki/pki-tomcat/kra/conf/CS.cfg
  3. 2 つのリカバリースキームパラメーターを編集します。

    kra.noOfRequiredRecoveryAgents=3
    kra.recoveryAgentGroup=Key Recovery Authority Agents
  4. サービスを再起動します。

    systemctl start pki-tomcatd@instance_name.service

    OR

    # systemctl start pki-tomcatd-nuxwdog@instance_name.service
注記

コンソールでエージェント承認済みキーリカバリーを設定する方法は、Red Hat Certificate System 管理ガイドコンソールでのエージェント承認キーリカバリーの設定 を参照してください。

16.3.2. キーリカバリーフォームのカスタマイズ

デフォルトのキーエージェントスキームでは、キーリカバリー認証局エージェントグループの単一のエージェントがキーリカバリーの承認を担当する必要があります。

キーリカバリー形式の外観をカスタマイズすることもできます。キーリカバリーエージェントには、キーリカバリープロセスを開始するための適切なページが必要です。デフォルトでは、KRA のエージェントサービスページには、キーリカバリーエージェントがキーリカバリーを開始し、キーリカバリー要求を承認し、暗号化キーを取得できるようにする適切な HTML フォームが含まれています。このフォームは、confirmRecover.html と呼ばれる /var/lib/pki/pki-tomcat/kra/webapps/kra/agent/kra/ ディレクトリーにあります。

重要

キーリカバリーの確認フォームをカスタマイズするには、応答を生成するための情報を削除しないでください。これは、フォームの機能に不可欠です。コンテンツへの変更とフォームの表示を制限します。

16.3.3. 新しいプライベートストレージキーでのキーの再ラップ

一部の秘密鍵 (主に以前のデプロイメントで) は、KRA でアーカイブされた場合に SHA-1、1024 ビットのストレージキーでラップされました。プロセッサーの速度とアルゴリズムが破損しているため、このアルゴリズムはセキュリティーレベルが低くなります。セキュリティー対策として、新しい強力なストレージ鍵 (SHA-256、2048 ビット鍵) で秘密鍵を再ラップできます。

16.3.3.1. KRATool について

キーの再ラップと移動、およびキーの登録とリカバリー要求は、KRATool ユーティリティー (以前のバージョンの Red Hat Certificate System では DRMTool) を使用して行われます。

KRATool は、2 つの操作を実行します。新しい秘密鍵で鍵を再ラップでき、登録やリカバリー要求など、キーレコードの LDIF ファイルエントリーで属性を再配列できます。少なくとも 1 つの操作 (再ラップまたは再番号付け) を実行する必要があり、両方を 1 回の呼び出しで実行できます。

キーを再ラップする場合、ツールは元の KRA のエクスポートされた LDIF ファイルのキーエントリーにアクセスし、元の KRA ストレージキーを使用してキーをアンラップしてから、新しい KRA のより強力なストレージキーでキーを再ラップします。

例16.1 キーの再ラップ

KRATool -kratool_config_file "/usr/share/pki/java-tools/KRATool.cfg" \
      -source_ldif_file "/tmp/files/originalKRA.ldif" \
      -target_ldif_file "/tmp/files/newKRA.ldif" \
      -log_file "/tmp/kratool.log" \
      -source_pki_security_database_path "/tmp/files/" \
      -source_storage_token_name "Internal Key Storage Token" \
      -source_storage_certificate_nickname "storageCert cert-pki-tomcat KRA" \
      -target_storage_certificate_file "/tmp/files/omega.cert"

複数の KRA インスタンスが単一のインスタンスにマージされる場合は、キーまたは要求レコードに競合する CN、DN、シリアル番号、または要求 ID 番号がないことを確認することが重要です。これらの値を処理して、既存の値に新しい大きな数値を追加できます。

例16.2 キーの番号変更

KRATool -kratool_config_file "/usr/share/pki/java-tools/KRATool.cfg" \
      -source_ldif_file "/tmp/files/originalKRA.ldif" \
      -target_ldif_file "/tmp/files/newKRA.ldif" \
      -log_file "/tmp/kratool.log" \
      -append_id_offset 100000000000 \
      -source_kra_naming_context "pki-tomcat-KRA" \
      -target_kra_naming_context "pki-tomcat-2-KRA" \
      -process_requests_and_key_records_only

KRATool オプションとその設定ファイルの詳細は、KRATool(1) の man ページで説明されています。

16.3.3.2. 1 つまたは複数の KRA から 1 つの KRA へのキーのラップとマージ

この手順では、1 つ以上の Certificate System KRA (たとえば、sourcekra.example.compki-tomcat) に保存されているキーを再ラップし、それを別の Certificate System KRA (たとえば targetkra.example.compki-tomcat-2) に保存します。これが唯一のユースケースではありません。このツールは、ソースとターゲットの両方と同じインスタンスで実行して既存のキーを再ラップすることも、キーをまったく再ラップせずに複数の KRA インスタンスから単一のインスタンスにキーをコピーするために使用することもできます。

重要

pki-tomcat-2 KRA ストレージ鍵のサイズとタイプは、2048 ビットおよび RSA に設定する必要があります。

  1. targetkra.example.com にログインします。
  2. pki-tomcat-2 KRA を停止します。

    [root@targetkra ~]# systemctl stop pki-tomcatd@pki-tomcat-2.service
  3. sourcekra.example.com にある pki-tomcat KRA インスタンスからインポートされるキーデータを保存するデータディレクトリーを作成します。

    [root@targetkra ~]# mkdir -p /export/pki
  4. pki-tomcat-2 KRA のパブリックストレージ証明書を、新規データディレクトリーのフラットファイルにエクスポートします。

    [root@targetkra ~]# certutil -L -d /var/lib/pki/pki-tomcat-2/alias -n "storageCert cert-pki-tomcat-2 KRA" -a > /export/pki/targetKRA.cert
  5. 同じマシンにある場合は、pki-tomcat-2 KRA の Directory Server インスタンスを停止します。

    [root@newkra ~]# systemctl stop dirsrv.target
  6. pki-tomcat-2 KRA の設定情報をエクスポートします。

    [root@targetkra ~]# grep nsslapd-localuser /etc/dirsrv/slapd-instanceName/dse.ldif
      nsslapd-localuser: dirsrv
    
    [root@targetkra ~]# chown dirsrv:dirsrv /export/pki
    
    [root@targetkra ~]# /usr/lib64/dirsrv/slapd-instanceName/db2ldif -n pki-tomcat-2-KRA -a /export/pki/pki-tomcat-2.ldif
    重要

    LDIF ファイルの最後に 1 行の空白行が含まれていることを確認してください。

  7. sourcekra.example.com にログインします。
  8. pki-tomcat KRA を停止します。

    [root@sourcekra ~]# systemctl stop pki-tomcatd@pki-tomcat.service
  9. targetkra.example.com にある pki-tomcat-2 KRA インスタンスにエクスポートされるキーデータを保存するデータディレクトリーを作成します。

    [root@sourcekra ~]# mkdir -p /export/pki
  10. 同じマシンにある場合は、pki-tomcat KRA の Directory Server インスタンスを停止します。

    [root@sourcekra ~]# systemctl stop dirsrv.target
  11. pki-tomcat KRA の設定情報をエクスポートします。

    [root@sourcekra ~]# grep nsslapd-localuser /etc/dirsrv/slapd-instanceName/dse.ldif
      nsslapd-localuser: dirsrv
    
    [root@sourcekra ~]# chown dirsrv:dirsrv /export/pki
    
    [root@sourcekra ~]# /usr/lib64/dirsrv/slapd-instanceName/db2ldif -n pki-tomcat-KRA -a /export/pki/pki-tomcat.ldif
    重要

    LDIF ファイルの最後に 1 行の空白行が含まれていることを確認してください。

  12. このディレクトリーに pki-tomcat KRA NSS セキュリティーデータベースをコピーします。

    [root@sourcekra ~]# cp -p /var/lib/pki/pki-tomcat/alias/cert9.db /export/pki
    
    [root@sourcekra ~]# cp -p /var/lib/pki/pki-tomcat/alias/key4.db /export/pki
    
    [root@sourcekra ~]# cp -p /var/lib/pki/pki-tomcat/alias/pkcs11.txt /export/pki
  13. パブリックストレージキーを持つファイルを pki-tomcat-2 KRA マシンからこのマシンにコピーします。以下に例を示します。

    [root@sourcekra ~]# cd /export/pki
    
    [root@sourcekra ~]# sftp root@targetkra.example.com
    sftp> cd /export/pki
    sftp> get targetKRA.cert
    sftp> quit
  14. 必要に応じて、このツールで使用するデフォルトの KRATool.cfg ファイルを編集します。デフォルトのファイルは、変更せずに使用することもできます。
  15. KRATool を実行します。これらのパラメーターはすべて 1 行にまとめる必要があります。

    [root@sourcekra ~]# KRATool -kratool_config_file "/usr/share/pki/java-tools/KRATool.cfg" \
              -source_ldif_file /export/pki/pki-tomcat.ldif \
              -target_ldif_file /export/pki/source2targetKRA.ldif \
              -log_file /export/pki/kratool.log \
              -source_pki_security_database_path /export/pki \
              -source_storage_token_name 'Internal Key Storage Token' \
              -source_storage_certificate_nickname 'storageCert cert-pki-tomcat KRA' \
              -target_storage_certificate_file /export/pki/targetKRA.cert \
              -append_id_offset 100000000000 \
              -source_kra_naming_context "pki-tomcat-KRA" \
              -target_kra_naming_context "pki-tomcat-2-KRA" \
              -process_requests_and_key_records_only
    注記

    コマンドは、pki-tomcat KRA NSS セキュリティーデータベースに保存されているトークンのパスワードの入力を求める場合があります。

    完了すると、このコマンドは、-target_ldif_file パラメーター source2targetKRA.ldif で指定されたファイルを作成します。

  16. この LDIF ファイルを pki-tomcat-2 KRA マシンにコピーします。以下に例を示します。

    [root@sourcekra ~]# scp /export/pki/source2targetKRA.ldif root@targetkra.example.com:/export/pki
    重要

    LDIF ファイルの最後に 1 行の空白行が含まれていることを確認してください。

  17. 複数の KRA インスタンスをマージしている場合、それらのデータは単一のインポート操作にマージできます。マージされるすべての KRA で同じ手順を実施します。

    重要

    -target_ldif_file パラメーターが LDIF ファイルを作成するように一意の値を指定し、LDIF ファイルが連結したときに競合が発生しないように一意の -append_id_offset 値を指定します。

  18. pki-tomcat-2 KRA マシンに、pki-tomcat-2 KRA 設定 LDIF ファイル、およびその他の KRA インスタンス用にエクスポートされたすべての LDIF ファイルを連結して、LDIF ファイルを他のキーデータとともにインポートします。以下に例を示します。

    [root@targetkra ~]# cd /export/pki
    [root@targetkra ~]# cat pki-tomcat-2.ldif source2targetKRA.ldif > combined.ldif
  19. pki-tomcat-2 KRA インスタンス用に、この組み合わせた LDIF ファイルを Directory Server データベースにインポートします。

    [root@targetkra ~]# /usr/lib64/dirsrv/slapd-instanceName/ldif2db -n pki-tomcat-2-KRA -i /export/pki/combined.ldif
  20. pki-tomcat-2 KRA の Directory Server インスタンスを起動します。

    [root@targetkra ~]# systemctl start dirsrv.target
  21. pki-tomcat-2 KRA を起動します。

    [root@targetkra ~]# systemctl start pki-tomcatd@pki-tomcat-2.service

16.3.4. クローン後の CA-KRA コネクター情報の更新

クローン後の CA-KRA 情報の更新に関する詳細は、「クローン後の CA-KRA コネクター情報の更新」 を参照してください。

第17章 ログの設定

Certificate System サブシステムログファイルは、その特定のサブシステムインスタンス内の操作に関連するイベントを記録します。サブシステムごとに、インストール、アクセス、Web サーバーなどの問題に関する異なるログが保持されます。

すべてのサブシステムには同様のログ設定、オプション、および管理パスがあります。

インストール後のログ管理の詳細は、Red Hat Certificate System 管理ガイドサブシステムログの設定 セクションを参照してください。

ログの概要は、「Logs」 を参照してください。

17.1. Certificate System ログの設定

ログの設定方法は、Certificate System のパフォーマンスに影響を及ぼす可能性があります。たとえば、ログファイルのローテーションにより、ログが大きくなりすぎてサブシステムのパフォーマンスが低下するのを防ぎます。このセクションでは、Certificate System サブシステムによって記録されるさまざまな種類のログを説明し、ログファイルのローテーション、バッファリングされたログ、使用可能なログレベルなどの重要な概念を説明します。

17.1.1. ログに記録されるサービス

Certificate System のすべての主要コンポーネントとプロトコルは、メッセージをログファイルに記録します。次の表は、デフォルトでログに記録されるサービスのリストを示しています。特定のサービスがログに記録するメッセージを表示するには、適宜ログ設定をカスタマイズします。

表17.1 ログに記録されるサービス
サービス説明

ACL

アクセス制御リストに関連するイベントをログに記録します。

管理

コンソールとインスタンス間の HTTPS 通信など、管理アクティビティーに関連するイベントをログに記録します。

すべて

すべてのサービスに関連するイベントをログに記録します。

認証

認証モジュールに関連するアクティビティーに関連するイベントをログに記録します。

認証局

Certificate Manager に関連するイベントをログに記録します。

データベース

内部データベース関連のアクティビティーに関連するイベントをログに記録します。

HTTP

サーバーの HTTP アクティビティーに関連するイベントをログに記録します。HTTP イベントは実際には、HTTP サービスを提供するために Certificate System に組み込まれる Apache サーバーに属するエラーログに記録されることに注意してください。

キーリカバリー認証局

KRA に関連するイベントをログに記録します。

LDAP

証明書と CRL の公開に使用される LDAP ディレクトリーを使用してアクティビティーに関連するイベントをログに記録します。

OCSP

OCSP ステータスの GET 要求など、OCSP に関連するイベントをログに記録します。

その他

コマンドラインユーティリティーやその他のプロセスなどの他のアクティビティーに関連するイベントをログに記録します。

要求キュー

要求キューアクティビティーに関連するイベントをログに記録します。

ユーザーおよびグループ

インスタンスのユーザーおよびグループに関連するイベントをログに記録します。

17.1.2. ログレベル (メッセージカテゴリー)

Certificate System サービスによってログに記録されるさまざまなイベントは、ログレベルによって決定されるため、イベントの識別とフィルタリングが簡単になります。さまざまな Certificate System のログレベルが、表17.2「ログレベルと対応するログメッセージ」 に一覧表示されます。

ログレベルは数字 0 から 10 で表されます。各番号は、サーバーによって実行されるログのレベルを示します。このレベルは、ロギングの詳細を設定します。

優先度が高いほど、優先度の高いイベントのみがログに記録されるため、詳細度が低くなります。

注記

デフォルトのログレベルは 1 です。この値は変更しないでください。デバッグロギングを有効にするには、「デバッグログの追加設定」 を参照してください。

次の表は、ログメッセージを理解するための参考情報として提供されています。

表17.2 ログレベルと対応するログメッセージ
ログレベルメッセージカテゴリー説明

0

デバッグ

これらのメッセージにはデバッグ情報が含まれます。このレベルは、非常に多くの情報を生成するため、通常の使用には推奨されません。

1

情報提供 (監査ログのデフォルト選択)

これらのメッセージは、Certificate System initialization completeRequest for operation succeeded などのステータスメッセージを含む、Certificate System の状態に関する一般的な情報を提供します。

2

警告

これらのメッセージは警告のみであり、サーバーの通常の操作に障害があることを示すものではありません。

3

失敗 - システムおよびエラーログのデフォルト選択

これらのメッセージは、証明書サービス操作の実行の失敗 (User authentication failed または Certificate revoked) や、取り消せないエラーを引き起こす可能性のある予期しない状況 (リクエストがクライアントからされた同じチャネルでクライアントに対して処理された要求を返信できない) など、サーバーが正常に動作することを妨げるエラーおよび障害を示します。

4

誤った設定

これらのメッセージは、サーバーの設定が間違っていることが原因でエラーが発生していることを示します。

5

壊滅的な失敗

これらのメッセージは、エラーにより、サービスの実行を継続できないことを示しています。

6

セキュリティー関連のイベント

これらのメッセージは、サーバーのセキュリティーに影響する発生内容を特定します。たとえば Privileged access attempted by user with revoked or unlisted certificate です。

7

PDU 関連イベント (デバッグ)

これらのメッセージには、PDU イベントのデバッグ情報が含まれます。このレベルは、通常より有用な情報を超える情報を生成するため、通常の使用には推奨していません。

8

PDU 関連イベント

これらのメッセージは、MAC トークンの作成など、PDU で処理されるトランザクションおよびルールに関連するものです。

9

PDU 関連イベント

このログレベルは、MAC トークンの作成など、PDU で処理されるイベントの詳細ログメッセージを提供します。

10

すべてのロギングレベル

このログレベルは、すべてのログレベルを有効にします。

ログレベルを使用すると、イベントの重大度に基づいてログエントリーをフィルターできます。デフォルトでは、すべてのサービスにログレベル 3 (失敗) が設定されます。

ログレベルは連続して行われます。3 の値を指定するとレベル 4、5、および 6 がログに記録されます。ログデータは、特に低い (より冗長な) ログレベルでは広範囲に及ぶ可能性があります。ホストマシンには、すべてのログファイルに十分なディスク領域があることを確認します。また、すべてのログファイルがバックアップされ、ホストシステムが過負荷にならないように、ログレベル、ログローテーション、およびサーバーバックアップポリシーを適切に定義することも重要です。そうしないと、情報が失われる可能性があります。

17.1.3. バッファー付きおよびバッファーなしのロギング

Java サブシステムはすべてのタイプのログに対するバッファーロギングをサポートします。サーバーは、バッファー付きまたはバッファーなしのロギング用に設定できます。

バッファーログが設定されていると、サーバーは対応するログのバッファーを作成し、メッセージを可能な限りバッファーに保持します。サーバーは以下の条件のいずれかが発生した場合に限りログファイルにメッセージをフラッシュします。

  • バッファーが満杯になった場合。バッファーサイズが bufferSize 設定パラメーターで指定された値以上になると、バッファーが満杯になります。このパラメーターのデフォルト値は 512 KB です。
  • バッファーのフラッシュ間隔に到達した場合。最後のバッファーフラッシュからの経過時間、または flushInterval 設定パラメーターで指定された値と以上の場合は、フラッシュ間隔に到達します。このパラメーターのデフォルト値は 5 秒です。
  • 現在のログがコンソールから読み取られる場合。サーバーは現在のログに対するクエリーされる際に最新のログを取得します。

サーバーがバッファーなしロギング用に設定されている場合、サーバーはログファイルに生成されるときにメッセージをフラッシュします。サーバーはメッセージが生成されるたびに I/O 操作 (ログファイルへの書き込み) を実行するため、バッファーなしログ用にサーバーを設定するとパフォーマンスが低下します。

ログパラメーターの設定は、Red Hat Certificate System 管理ガイドコンソールでログの設定 セクションを参照してください。

17.1.4. ログファイルローテーション

サブシステムログにはオプションのログ設定があり、ログファイルを無期限に拡張する代わりに、ログをローテーションして新しいログファイルを開始できます。ログファイルは、以下のいずれかの場合にローテーションされます。

  • 対応するファイルのサイズ制限に到達した場合。対応するログファイルのサイズは、maxFileSize 設定パラメーターで指定された値以上です。このパラメーターのデフォルト値は 100 KB です。
  • 対応するファイルの経過時間制限に到達した場合。対応するログファイルは、rolloverInterval 設定パラメーターで指定された間隔以上です。このパラメーターのデフォルト値は 2592000 秒 (30 日ごと) です。

ログファイルがローテーションされると、追加したタイムスタンプを持つファイルの名前を使用して古いファイルの名前が指定されます。追加されたタイムスタンプは、対応するアクティブなログファイルがローテーションされた日時を示す整数です。日付と時刻の形式は、YYYYMMDD (年、月、日) および HHMMSS (時、分、秒) です。

ログファイル (特に監査ログファイル) には重要な情報が含まれています。log ディレクトリー全体をアーカイブメディアにコピーして、これらのファイルを定期的に一部のバックアップメディアにアーカイブする必要があります。

注記

Certificate System は、ログファイルをアーカイブするためのツールやユーティリティーを提供していません。

Certificate System は、改ざん検出の手段としてログファイルをアーカイブする前にログファイルに署名するコマンドラインユーティリティー signtool を提供します。

ログファイルの署名は、署名された監査ログ機能の代わりに使用されます。署名付き監査ログは、サブシステム署名証明書で自動的に署名される監査ログを作成します。

ローテーションされたログファイルは削除されません。

17.2. オペレーティングシステム (RHCS の外部) のログ設定

17.2.1. OS レベルの監査ログの有効化

警告

以下のセクションではすべての操作は、sudo で root または特権ユーザーとして実行する必要があります。

auditd ロギングフレームワークは、多くの監査機能を追加で提供します。これらの OS レベル監査ログは、Certificate System が提供する機能を補完します。このセクションの手順を実行する前に、audit パッケージがインストールされていることを確認してください。

# sudo yum install audit

システムパッケージの更新 (yum および rpm を使用し、Certificate System を含む) の監査は自動的に実行され、追加の設定は必要ありません。

注記

各監査ルールを追加して auditd サービスを再起動したら、以下のコマンドを実行して新しいルールが追加されたことを確認します。

# auditctl -l

新しいルールの内容が出力に表示されるはずです。

作成された監査ログの表示方法は、Red Hat Certificate System 管理ガイドオペレーティングシステムレベルの監査ログの表示 セクションを参照してください。

17.2.1.1. Certificate System の監査ログ削除の監査

監査ログが削除されたときの監査イベントを受信するには、ターゲットが Certificate System ログであるシステムコールを監査する必要があります。

以下の内容で /etc/audit/rules.d/rhcs-audit-log-deletion.rules ファイルを作成します。

-a always,exit -F arch=b32 -S unlink -F dir=/var/log/pki -F key=rhcs_audit_deletion
-a always,exit -F arch=b32 -S rename -F dir=/var/log/pki -F key=rhcs_audit_deletion
-a always,exit -F arch=b32 -S rmdir -F dir=/var/log/pki -F key=rhcs_audit_deletion
-a always,exit -F arch=b32 -S unlinkat -F dir=/var/log/pki -F key=rhcs_audit_deletion
-a always,exit -F arch=b32 -S renameat -F dir=/var/log/pki -F key=rhcs_audit_deletion
-a always,exit -F arch=b64 -S unlink -F dir=/var/log/pki -F key=rhcs_audit_deletion
-a always,exit -F arch=b64 -S rename -F dir=/var/log/pki -F key=rhcs_audit_deletion
-a always,exit -F arch=b64 -S rmdir -F dir=/var/log/pki -F key=rhcs_audit_deletion
-a always,exit -F arch=b64 -S unlinkat -F dir=/var/log/pki -F key=rhcs_audit_deletion
-a always,exit -F arch=b64 -S renameat -F dir=/var/log/pki -F key=rhcs_audit_deletion

次に auditd を再起動します。

# service auditd restart
17.2.1.2. 秘密鍵の使用が承認されていない Certificate System の監査

Certificate System の秘密または秘密鍵へのすべてのアクセスに対する監査イベントを受け取るには、NSS DB へのファイルシステムアクセスを監査する必要があります。

以下の内容で /etc/audit/rules.d/rhcs-audit-nssdb-access.rules ファイルを作成します。

-w /etc/pki/<instance name>/alias -p warx -k rhcs_audit_nssdb

<instance name> は、現在のインスタンスの名前です。/etc/pki/<instance name>/alias 内の各ファイル (<file>) で、/etc/audit/rules.d/rhcs-audit-nssdb-access.rules に次の行を追加します。

-w /etc/pki/<instance name>/alias/<file> -p warx -k rhcs_audit_nssdb

たとえば、インスタンス名が pki-ca121318ec で、cert9.dbkey4.db, NHSM6000-OCScert9.dbNHSM6000-OCSkey4.db、および pkcs11.txt がファイルである場合には、設定ファイルには以下が含まれます。

-w /etc/pki/pki-ca121318ec/alias -p warx -k rhcs_audit_nssdb
-w /etc/pki/pki-ca121318ec/alias/cert9.db -p warx -k rhcs_audit_nssdb
-w /etc/pki/pki-ca121318ec/alias/key4.db -p warx -k rhcs_audit_nssdb
-w /etc/pki/pki-ca121318ec/alias/NHSM6000-OCScert9.db -p warx -k rhcs_audit_nssdb
-w /etc/pki/pki-ca121318ec/alias/NHSM6000-OCSkey4.db -p warx -k rhcs_audit_nssdb
-w /etc/pki/pki-ca121318ec/alias/pkcs11.txt -p warx -k rhcs_audit_nssdb

次に auditd を再起動します。

# service auditd restart
17.2.1.3. 時間変更イベントの監査

時間変更の監査イベントを受信するには、システム時間を変更する可能性のあるシステムコールアクセスを監査する必要があります。

以下の内容で /etc/audit/rules.d/rhcs-audit-rhcs`audit_time_change.rules ファイルを作成します。

-a always,exit -F arch=b32 -S adjtimex,settimeofday,stime -F key=rhcs_audit_time_change
-a always,exit -F arch=b64 -S adjtimex,settimeofday -F key=rhcs_audit_time_change
-a always,exit -F arch=b32 -S clock_settime -F a0=0x0 -F key=rhcs_audit_time_change
-a always,exit -F arch=b64 -S clock_settime -F a0=0x0 -F key=rhcs_audit_time_change
-a always,exit -F arch=b32 -S clock_adjtime -F key=rhcs_audit_time_change
-a always,exit -F arch=b64 -S clock_adjtime -F key=rhcs_audit_time_change
-w /etc/localtime -p wa -k rhcs_audit_time_change

次に auditd を再起動します。

# service auditd restart

時間の設定方法は、Red Hat Certificate System 管理ガイドRed Hat Enterprise Linux 7 での日時の設定 を参照してください。

17.2.1.4. Certificate System 設定へのアクセスの監査

Certificate System インスタンス設定ファイルへのすべての変更に関する監査イベントを受け取るには、これらのファイルのファイルシステムアクセスを監査します。

以下の内容で /etc/audit/rules.d/rhcs-audit-config-access.rules ファイルを作成します。

-w /etc/pki/ instance_name/server.xml -p wax -k rhcs_audit_config

また、/etc/pki/ instance_name/ ディレクトリーの各サブシステムに次の内容を追加します。

-w /etc/pki/ instance_name/subsystem/CS.cfg -p wax -k rhcs_audit_config

例17.1 rhcs-audit-config-access.rules 設定ファイル

たとえば、インスタンス名が pki-ca121318ec で、CA のみがインストールされている場合に、/etc/audit/rules.d/rhcs-audit-config-access.rules ファイルには以下が含まれます。

-w /etc/pki/pki-ca121318ec/server.xml -p wax -k rhcs_audit_config
-w /etc/pki/pki-ca121318ec/ca/CS.cfg -p wax -k rhcs_audit_config

PKI NSS データベースへのアクセスは rhcs_audit_nssdb の下にすでに監査されていることに注意してください。

17.3. CS.cfg ファイルでのログの設定

インストール設定中に、インスタンスの CS.cfg を直接編集してロギングを設定できます。

  1. サブシステムインスタンスを停止します。

    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
  2. /var/lib/pki/<instance_name>/<subsystem_type>/conf ディレクトリーの CS.cfg ファイルを開きます。
  3. 新しいログを作成するには、システムまたはトランザクションログのすべてのエントリーをコピーします。これらは、log.instance.Transactions または log.instance.System で始まるパラメーターです。ログセクションの下部にすべてのエントリーを貼り付け、各パラメーターの Transactions または System という単語を新しい名前に変更して、このインスタンスの名前を変更します。
  4. ログインスタンスを設定するには、そのログに関連付けられたパラメーターを変更します。これらのパラメーターは log.instance で始まります。

    表17.3 ログエントリーパラメーター
    パラメーター説明

    type

    ログファイルのタイプ。システム はエラーおよびシステムログを作成します。トランザクション は監査ログを記録します。

    enable

    ログがアクティブかどうかを設定します。有効にするログのみがイベントを記録します。

    level

    テキストフィールドにログレベルを設定します。このレベルは、フィールドに手動で入力する必要があります。選択メニューはありません。ログレベル設定は、「ログレベル (メッセージカテゴリー)」 に記載されている数値です。

    fileName

    ログファイルへのファイル名を含む完全パス。サブシステムユーザーには、ファイルへの読み書きパーミッションがなければなりません。

    bufferSize

    ログのキロバイトサイズ (KB) のバッファーサイズ。バッファーがこのサイズに達すると、バッファーの内容はフラッシュされ、ログファイルにコピーされます。デフォルトのサイズは 512 KB です。バッファーロギングの詳細は、「バッファー付きおよびバッファーなしのロギング」 を参照してください。

    flushInterval

    バッファーの内容がフラッシュされてログファイルに追加されるまでの時間 (秒単位)。デフォルトの間隔は 5 秒です。

    maxFileSize

    ローテーションされる前に可能なログファイルのサイズをキロバイト (KB) 単位で設定できます。このサイズに達すると、ファイルはローテーションファイルにコピーされ、ログファイルが新たに開始されます。ログファイルのローテーションに関する詳細は、「ログファイルローテーション」 を参照してください。デフォルトのサイズは 2000 KB です。

    rolloverInterval

    サーバーがアクティブなログファイルをローテーションする頻度。利用可能な選択肢は hourly、daily、weekly、monthly、および yearly です。デフォルトの選択は monthly です。詳細は、「ログファイルローテーション」 を参照してください。

    register

    この変数が false (デフォルト値) に設定されている場合には、セルフテストのメッセージは、selftests.container.logger.fileName で指定されるログファイルにのみログに記録されます。この変数が true に設定されている場合は、セルフテストのメッセージは selftests.container.logger.fileName によって指定したログファイルと、log.instance.Transactions.fileName で指定されたログファイルの両方に書き込まれます。

    logSigning

    署名付きロギングを有効にします。このパラメーターが有効な場合は、signedAuditCertNickname パラメーターの値を指定します。このオプションは、監査人だけがログを表示できることを意味します。値は true または false です。

    signedAuditCertNickname

    監査ログの署名に使用される証明書のニックネーム。この証明書の秘密鍵は、ログに署名するためにサブシステムからアクセスできる必要があります。

    events

    監査ログにログを記録するイベントを指定します。ログイベントは、空白のないコンマで区切ります。

  5. ファイルを保存します。
  6. サブシステムインスタンスを開始します。

    systemctl start pki-tomcatd@instance_name.service

    または (nuxwdog watchdog を使用している場合)

    # systemctl start pki-tomcatd-nuxwdog@instance_name.service

17.3.1. 署名付き監査ログの有効化と設定

17.3.1.1. 署名付き監査ログの有効化

デフォルトでは、監査ロギングはインストール時に有効になります。ただし、インストール後に、ログ署名を手動で有効にする必要があります。

現在の監査ロギング設定を表示するには、以下を実行します。

# pki-server subsystem-audit-config-show
  Enabled: True
  Log File: audit_signing_log_file
  Buffer Size (bytes): 512
  Flush Interval (seconds): 5
  Max File Size (bytes): 2000
  Rollover Interval (seconds): 2592000
  Expiration Time (seconds): 0
  Log Signing: False
  Signing Certificate: audit_signing_certificate

署名付き監査ログを有効にするには、以下を実行します。

  1. pki-server ユーティリティーを使用して、--logSigning オプションを true に設定します。

    # pki-server subsystem-audit-config-mod --logSigning True
      ...
      Log Signing: True
      ...
  2. インスタンスを再起動します。

    # systemctl restart pki-tomcatd@instance_name.service

    または (nuxwdog watchdog を使用している場合)

    # systemctl start pki-tomcatd-nuxwdog@instance_name.service
17.3.1.2. 監査イベントの設定
17.3.1.2.1. 監査イベントの有効化と無効化

監査イベントの有効化および無効化の詳細は、Red Hat Certificate System 管理ガイドコンソールでの署名監査ログの設定 セクションを参照してください。

さらに、監査イベントフィルターは、より詳細な選択に設定できます。「監査イベントのフィルタリング」 を参照してください。

Certificate System で監査可能なイベントの完全リストは、Red Hat Certificate System 監査ガイド監査イベント を参照してください。

17.3.1.2.2. 監査イベントのフィルタリング

Certificate System では、管理者はフィルターを設定して、イベント属性に基づいて監査ファイルに記録される監査イベントを設定できます。

フィルターの形式は LDAP フィルターと同じです。ただし、Certificate System は、以下のフィルターのみをサポートします。

表17.4 サポート対象の監査イベントフィルター
形式

要否

(attribute=*)

(ReqID=*)

等式

(attribute=value)

(Outcome=Failure)

部分文字列

(attribute=initial*any*…​anyfinal)

(SubjectID=admin)

AND 演算

(&(filter_1)(filter_2)…​(filter_n))

(&(SubjectID=admin)(Outcome=Failure))

OR 演算

(|(filter_1)(filter_2)…​(filter_n))

(|(SubjectID=admin)(Outcome=Failure))

NOT 演算

(!(filter))

(!(SubjectID=admin))

LDAP フィルターの詳細は、Red Hat Directory Server 管理ガイド複合検索フィルターの使用 セクションを参照してください。

例17.2 監査イベントのフィルタリング

プロファイル証明書要求と処理された証明書の現在の設定を表示するには、以下のコマンドを実行します。

$ pki-server ca-audit-event-show PROFILE_CERT_REQUEST
  Event Name: PROFILE_CERT_REQUEST
  Enabled: True
  Filter: None

$ pki-server ca-audit-event-show CERT_REQUEST_PROCESSED
  Event Name: CERT_REQUEST_PROCESSED
  Enabled: True
  Filter: None

InfoName フィールドが rejectReason または cancelReason に設定されている処理済み証明書要求のイベントと、プロファイル証明書要求およびイベントの失敗したイベントのみを記録するには、以下を実行します。

  1. 以下のコマンドを実行します。

    $ pki-server ca-audit-event-update PROFILE_CERT_REQUEST --filter "(Outcome=Failure)"
      ...
      Filter: (Outcome=Failure)
    
    $ pki-server ca-audit-event-update CERT_REQUEST_PROCESSED --filter "(|(InfoName=rejectReason)(InfoName=cancelReason))"
      ...
      Filter: (|(InfoName=rejectReason)(InfoName=cancelReason))
  2. Certificate System を再起動します。

    # systemctl restart pki-tomcatd@instance_name.service

    または (nuxwdog watchdog を使用している場合)

    # systemctl start pki-tomcatd-nuxwdog@instance_name.service

17.3.2. セルフテストの設定

セルフテスト機能と個々のセルフテストは、CS.cfg ファイルで登録および設定されます。セルフテストが有効になっている場合、そのセルフテストはオンデマンドまたは起動時に対して一覧表示され、空かまたは critical として設定されます。

重要なセルフテストには、セルフテストの名前の後にコロンと単語 critical があります。それ以外の場合は、何もありません。オンデマンドセルフテスト中に重要なセルフテストが失敗すると、サーバーはシャットダウンします。起動中に重要なセルフテストが失敗すると、サーバーは起動しません。

インスタンスのインストール時に、実装されたセルフテストが自動的に登録され、設定されます。登録および設定されるセルフテストは、サブシステムタイプに関連するものです。

自己テストの重大度は、CS.cfg ファイルのそれぞれの設定を変更することで変更されます。

17.3.2.1. 起動時のデフォルトのセルフテスト

以下の自己テストは、起動時にデフォルトで有効になります。

CA サブシステムでは、起動時に以下のセルフテストがデフォルトで有効になっています。

  • CAPresence: CA サブシステムが存在することを確認するために使用されます。
  • CAValidity: CA サブシステムが現在有効であり、期限切れでないことを確認するために使用されます。これには、CA 証明書の有効期限を確認する必要があります。
  • SystemCertsVerification: システム証明書が現在有効であり、有効期限が切れていないか、または取り消されていないことを確認するために使用されます。CA サブシステムの場合は、各証明書の有効性テストのみが実行され、OCSP 要求が発生する可能性のある証明書検証テストは除外されます。この動作は、以下の設定パラメーターで上書きできます。

    selftests.plugin.SystemCertsVerification.FullCAandOCSPVerify=true

    デフォルトでは、この設定パラメーターが存在しない場合は false と見なされます。

KRA サブシステムの場合は、次のセルフテストが有効になります。

  • KRAPresence: KRA サブシステムが存在することを確認するために使用されます。
  • KRAValidity: KRA サブシステムが現在有効であり、期限切れでないことを確認するために使用されます。これには、KRA 証明書の有効期限を確認する必要があります。
  • SystemCertsVerification: システム証明書が現在有効であり、有効期限が切れていないか、または取り消されていないことを確認するために使用されます。

OCSP サブシステムでは、以下のセルフテストが有効になります。

  • OCSPPresence: OCSP サブシステムの有無を確認するために使用されます。
  • OCSPValidity: OCSP サブシステムが現在有効であり、期限切れでないことを確認するために使用されます。これには、OCSP 証明書の有効期限を確認する必要があります。
  • SystemCertsVerification: システム証明書が現在有効であり、有効期限が切れていないか、または取り消されていないことを確認するために使用されます。OCSP サブシステムの場合は、各証明書の有効性テストのみが実行され、OCSP 要求が発生する可能性のある証明書検証テストは除外されます。この動作は、以下の設定パラメーターで上書きできます。

    selftests.plugin.SystemCertsVerification.FullCAandOCSPVerify=true

    デフォルトでは、この設定パラメーターが存在しない場合は false と見なされます。

TKS サブシステムの場合は、次のセルフテストが有効になります。

  • TKSKnownSessionKey: TKS サブシステムの既知のセッションキーの検証に使用されます。これにより、TKS は、TPS およびサポート対象のスマートカードの代わりに鍵の作成を適切に支援できます。
  • SystemCertsVerification: システム証明書が現在有効であり、有効期限が切れていないか、または取り消されていないことを確認するために使用されます。

TPS サブシステムの場合は、次のセルフテストが有効になります。

  • TPSPresence: TPS サブシステムが存在することを確認するために使用されます。
  • TPSValidity: TPS サブシステムが現在有効であり、期限切れでないことを確認するために使用されます。これには、TPS 証明書の有効期限を確認する必要があります。
  • SystemCertsVerification: システム証明書が現在有効であり、有効期限が切れていないか、または取り消されていないことを確認するために使用されます。
17.3.2.2. セルフテスト設定の変更

デフォルトでは、セルフテスト設定は準拠しています。ただし、一部の設定により、自己テストロギングの表示やパフォーマンスを向上させることができます。セルフテストの設定を変更するには、以下を実行します。

  1. サブシステムインスタンスを停止します。
  2. インスタンスの conf/ ディレクトリーにある CS.cfg ファイルを開きます。
  3. self-test ログの設定を編集するには、selftests.container.logger で始まるエントリーを編集します。指定のない限り、これらのパラメーターはコンプライアンスには影響しません。これには、以下のパラメーターが含まれます。

    • bufferSize: ログのバッファーサイズをキロバイト単位 (KB) で指定します。デフォルトのサイズは 512 KB です。バッファーがこのサイズに達すると、バッファーの内容はフラッシュされ、ログファイルにコピーされます。
    • enable: 有効にする場合は true を指定します。有効にするログのみがイベントを記録します。この値は、コンプライアンスのために有効にする 必要 があります。
    • fileName: ファイル名を含む、メッセージを書き込むファイルの完全パスを指定します。サーバーに、ファイルへの読み取り/書き込み権限が必要です。デフォルトでは、セルフテストのログファイルは /selftest.log です。
    • flushInterval: バッファーをファイルにフラッシュする間隔を秒単位で指定します。デフォルトの間隔は 5 秒です。flushInterval は、バッファーの内容がフラッシュされログファイルに追加されるまでの時間です。
    • level: デフォルトでは 1 が選択されています。このログは、1 以外のレベルでは設定されません。
    • maxFileSize: エラーログのファイルサイズをキロバイト単位 (KB) で指定します。デフォルトのサイズは 100 KB です。maxFileSize は、ログファイルがローテーションされる前のサイズを決定します。このサイズに達すると、ファイルはローテーションファイルにコピーされ、新しいログファイルが起動します。
    • register: この変数が false (デフォルト値) に設定されている場合には、セルフテストのメッセージは、selftests.container.logger.fileName で指定されるログファイルにのみログに記録されます。この変数が true に設定されている場合は、セルフテストのメッセージは selftests.container.logger.fileName によって指定したログファイルと、log.instance.Transactions.fileName で指定されたログファイルの両方に書き込まれます。
    • rolloverInterval: アクティブなエラーログファイルをサーバーがローテーションする頻度を指定します。選択肢は hourly、daily、weekly、monthly、および yearly です。デフォルトの選択は monthly です。
    • type: transaction に設定してください。これは変更しないでください。
  4. セルフテストを実行する順序を編集するには、コンマとスペースで区切った次のパラメーターの値としてセルフテストのいずれかをリストすることにより、順序を指定します。

    セルフテストをクリティカルとしてマークするには、リスト内のセルフテストの名前にコロンとクリティカルという単語を追加します。

    セルフテストを無効にするには、selftests.container.order.onDemand または selftests.container.order.startup のパラメーターの値の設定を削除します。

  5. ファイルを保存します。
  6. サブシステムを起動します。

17.3.3. デバッグログの追加設定

17.3.3.1. デバッグログの有効化および無効化

デフォルトでは、デバッグロギングは Certificate System で有効になっています。ただし、特定の状況では、管理者がこの機能を無効にまたは再有効化する必要があります。

  1. /CS.cfg ファイルを編集し、debug.enabled パラメーターを設定します。

    • デバッグのロギングを無効にするには、以下を設定します。

      debug.enabled=false
      注記

      デバッグログは監査ロギングの一部では ありません。デバッグログは、Certificate System で特定の障害をデバッグする場合や、インストールの失敗時に便利です。

      デフォルトで、デバッグログは有効です。望ましい場合には、管理者はデバッグロギングを安全に無効にして詳細度を下げることができます。

    • デバッグロギングを有効にするには、以下を実行します。

      debug.enabled=true
  2. Certificate System インスタンスを再起動します。

    # systemctl restart pki-tomcatd@instance-name.service

    または (nuxwdog watchdog を使用している場合)

    # systemctl restart pki-tomcatd-nuxwdog@instance-name.service
17.3.3.2. デバッグログファイルのローテーション設定

Certificate System は、デバッグログをローテーションできません。デバッグロギングはデフォルトで有効になり、これらのログはファイルシステムが満杯になるまで増加します。logrotate などの外部ユーティリティーを使用してログをローテーションします。

例17.3 logrotate を使用したデバッグログのローテーション

以下の内容で /etc/logrotate.d/rhcs_debug などの設定ファイルを作成します。

/var/log/pki/ instance_name/subsystem/debug {
     copytruncate
     weekly
     rotate 5
     notifempty
     missingok
}

1 つの設定ファイルで複数のサブシステムのデバッグログをローテーションするには、ログへのパスを空白で区切って、中括弧の前にリストします。以下に例を示します。

/var/log/pki/ instance_name/ca/debug /var/log/pki/ instance_name/kra/debug {
     ...
}

logrotate および、この例で使用するパラメーターの詳細は、logrotate(8) の man ページを参照してください。

17.4. 監査の保持

監査データは、保持カテゴリーに応じた方法で保持する必要があります。

  • 拡張監査保持: 証明書の存続期間 (発行から有効期限または失効日まで) の必要な保守のために保持される監査データ。Certificate System の場合は、以下の項目に表示されます。

    • 署名された監査ログ: Red Hat Certificate System 管理ガイドの付録 E. 監査イベントで定義されているすべてのイベント。
    • CA の内部 LDAP サーバーでは、CA が受け取った証明書要求レコードと、要求が承認されたときの証明書レコード。
  • 通常の監査保持: 通常は、通常の操作をサポートするためにのみ保持される監査データ。これには、拡張された監査保持 カテゴリーに記載されないすべてのイベントが含まれます。
注記

Certificate System は、監査データの修正や削除を行うインターフェイスを提供しません。

17.4.1. 監査データの場所

このセクションでは、Certificate System が監査データを保存する場所と、保持カテゴリーを決定するために重要なロールを果たす有効期限を見つける場所を説明します。

17.4.1.1. 監査ログの場所

Certificate System は監査ログを /signedAudit/ ディレクトリーに保存します。たとえば、CA の監査ログは /ca/logs/signedAudit/ ディレクトリーに保存されます。通常ユーザーは、このディレクトリー内のファイルにアクセスできません。https://trello.com/c/3LuUsheO/373-cc-doc-1425-managing-audit-logs# を参照してください。

拡張された監査保持期間を追跡する必要のある監査ログイベントのリストは、Red Hat Certificate System 管理ガイド監査イベント を参照してください。

重要

付録 "拡張監査イベント" に記載されているイベントが含まれる監査ログは削除しないでください。これらの監査ログは、ディスクパーティションで使用可能なすべてのストレージスペースを消費する可能性があります。

17.4.1.2. 証明書要求および証明書レコードの場所

証明書署名要求 (CSR) が送信されると、CA は CSR を CA の内部 Directory Server によって提供される要求リポジトリーに保存します。これらの要求が承認されると、各証明書が正常に発行され、同じ内部ディレクトリーサーバーによって証明書リポジトリーに LDAP レコードが作成されます。

CA の内部 Directory Server は、pkispawn ユーティリティーを使用して CA が作成されると、以下のパラメーターに指定されました。

  • pki_ds_hostname
  • pki_ds_ldap_port
  • pki_ds_database
  • pki_ds_base_dn

証明書要求が正常に承認されると、証明書の有効性は、要求 ID またはシリアル番号のいずれかで CA EE ポータルにアクセスすることで確認できます。

証明書要求レコードの有効性を表示するには、次のコマンドを実行します。

  1. https://host_name:[rep]port/ca/ee/ca/ で CA EE ポータルにログインします。
  2. Check Request Status をクリックします。
  3. Request Identifier を入力します。
  4. Issued Certificate をクリックします。
  5. Validity を検索します。

証明書レコードからの有効性を表示するには、以下を実行します。

  1. https://host_name:[rep]port/ca/ee/ca/ で CA EE ポータルにログインします。
  2. シリアル番号の範囲を入力します。1 つの特定のレコードを検索する場合は、レコードのシリアル番号を最小値と最大値の両方を、シリアル番号フィールドに入力します。
  3. 検索結果をクリックします。
  4. Validity を検索します。
重要

有効期限が切れていない証明書の証明書レコードの要求を削除しないでください。

第18章 ロールユーザーの作成

「デフォルトの管理ロール」 の説明にあるように、ブートストラップユーザーがインストール時に作成されていました。インストール後に、実際のユーザーを作成して、適切なシステム特権を割り当てます。各ユーザーは、1 つのロール (グループ) のみのメンバーである必要があります。

この章では、次の方法を説明します。

  • オペレーティングシステム上での Certificate System の管理ユーザーの作成
  • Certificate System での PKI ロールの作成

18.1. オペレーティングシステムでの PKI 管理ユーザーの作成

このセクションは、管理者ロールユーザーを対象にしています。Agent および Auditor ロールユーザー。「Certificate System での PKI ロールユーザーの作成」 を参照してください。

一般に、Certificate System の管理者、エージェント、および監査人は、コマンドラインユーティリティー、Java コンソール、ブラウザーなどのクライアントアプリケーションを使用して、Certificate System インスタンスをリモートで管理できます。大多数の CS 管理タスクでは、Certificate System ロールユーザーは、インスタンスを実行するホストマシンにログインする必要はありません。たとえば、監査人のユーザーは検証のために署名された監査ログをリモートで取得でき、エージェントロールのユーザーはエージェントインターフェイスを使用して証明書の発行を承認でき、管理者ロールのユーザーはコマンドラインユーティリティーを使用してプロファイルを設定できます。

ただし、場合によっては、Certificate System 管理者は、ホストシステムにログインして設定ファイルを直接変更するか、Certificate System インスタンスを開始または停止する必要があります。したがって、オペレーティングシステムでは、管理者ロールユーザーは、設定ファイルに変更を加えたり、Red Hat Certificate System に関連付けられたさまざまなログを読み取ったりできるユーザーである必要があります。

注記

Certificate System の管理者または監査人以外の人が監査ログファイルにアクセスすることを許可しないでください。

  1. オペレーティングシステムに pkiadmin グループを作成します。

    # groupadd -r pkiadmin
  2. pkiadmin グループに pkiuser を追加します。

    # usermod -a -G pkiadmin pkiuser
  3. オペレーティングシステムでユーザーを作成します。たとえば、jsmith アカウントを作成するには、以下を実行します。

    # useradd -g pkiadmin -d /home/jsmith -s /bin/bash -c "Red Hat Certificate System Administrator John Smith" -m jsmith

    詳細は、useradd(8) の man ページを参照してください。

  4. ユーザー jsmithpkiadmin グループに追加します。

    # usermod -a -G pkiadmin jsmith

    詳細は、usermod(8) の man ページを参照してください。

    nCipher ハードウェアセキュリティーモジュール (HSM) を使用している場合は、HSM デバイスを管理するユーザーを nfast グループに追加します。

    # usermod -a -G nfast pkiuser
    # usermod -a -G nfast jsmith
  5. 適切な sudo ルールを追加して、pkiadmin グループを Certificate System およびその他のシステムサービスに許可します。

    管理とセキュリティーの両方を簡素化するために、Certificate System と Directory Server のプロセスを設定して、(root だけでなく) PKI 管理者がサービスを開始および停止できるようにすることができます。

    サブシステムを設定する際に pkiadmin システムグループの使用が推奨されるオプションです。(詳細は 「Certificate System のオペレーティングシステムのユーザーおよびグループ」 を参照)。Certificate System 管理者であるすべてのオペレーティングシステムユーザーがこのグループに追加されます。pkiadmin のシステムグループが存在する場合は、特定のタスクを実行するための sudo アクセスを付与することができます。

    1. /etc/sudoers ファイルを編集します。Red Hat Enterprise Linux では、visudo コマンドを使用して実行できます。

      # visudo
    2. マシンにインストールされているものに応じて、Directory Server、{ADS}、PKI 管理ツール、および各 PKI サブシステムインスタンスの行を追加して、pkiadmin グループに sudo 権限を付与します。

      # For Directory Server services
      %pkiadmin ALL = PASSWD: /usr/bin/systemctl * dirsrv.target
      %pkiadmin ALL = PASSWD: /usr/bin/systemctl * dirsrv-admin.service
      
      # For PKI instance management
      %pkiadmin ALL = PASSWD: /usr/sbin/pkispawn *
      %pkiadmin ALL = PASSWD: /usr/sbin/pkidestroy *
      
      # For PKI instance services
      %pkiadmin ALL = PASSWD: /usr/bin/systemctl * pki-tomcatd@instance_name.service
    重要

    マシン上のすべての Certificate System、Directory Server、{ADS} と、マシン上のそれらのインスタンスに対して のみ、sudo パーミッションを設定してください。マシンに同じサブシステムタイプのインスタンスが複数存在する場合と、サブシステムタイプのインスタンスが存在しない場合があります。これはデプロイメントによって異なります。

  6. 以下のファイルのグループを pkiadmin に設定します。

    # chgrp pkiadmin /etc/pki/ instance_name/server.xml
    # chgrp -R pkiadmin /etc/pki/ instance_name/alias
    # chgrp pkiadmin /etc/pki/ instance_name/subsystem/CS.cfg
    # chgrp pkiadmin /var/log/pki/ instance_name/subsystem/debug

オペレーティングシステムで管理ユーザーを作成したら、「Certificate System での PKI ロールユーザーの作成」 の手順に従います。

18.2. Certificate System での PKI ロールユーザーの作成

PKI ロールユーザーを作成するには、Red Hat Certificate System 管理ガイドのCertificate System ユーザーおよびグループ の管理セクションを参照してください

第19章 Bootstrap ユーザーの削除

重要

ブートストラップユーザーを削除する前に、18章ロールユーザーの作成 の説明に従って実際の PKI 管理ユーザーを作成します。

ブートストラップユーザーを削除するには、Red Hat Certificate System 管理ガイドCertificate System ユーザーの削除 セクションで説明されている手順に従います。

19.1. マルチロールサポートの無効化

デフォルトでは、ユーザーは一度に複数のサブシステムグループに属することができ、ユーザーは複数のロールとして機能できます。たとえば、John Smith はエージェントと管理者グループの両方に属する可能性があります。ただし、安全性の高い環境では、サブシステムのロールを制限して、ユーザーが 1 つのロールにしか所属できないようにする必要があります。そのためには、インスタンスの設定で multirole 属性を無効にします。

すべてのサブシステムの場合:

  1. サーバーを停止します。

    # systemctl stop pki-tomcatd@instance_name.service

    または (nuxwdog watchdog を使用している場合)

    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
  2. CS.cfg ファイルを開きます。

    # vim /var/lib/pki/ instance_name/ca/conf/CS.cfg
  3. multiroles.enable パラメーターの値を true から false に変更します。
  4. マルチロール設定に影響のある Certificate System のデフォルトロールリストを追加または編集します。複数のロールが無効になっており、ユーザーが multiroles.false.groupEnforceList パラメーターにリストされているロールの 1 つ に属している場合、そのユーザーはリスト内の他のロールのグループに追加できません。

    multiroles.false.groupEnforceList=Administrators,Auditors,Trusted Managers,Certificate Manager Agents,Registration Manager Agents,Key Recovery Authority Agents,Online Certificate Status Manager Agents,Token Key Service Manager Agents,Enterprise CA Administrators,Enterprise KRA Adminstrators,Enterprise OCSP Administrators,Enterprise TKS Administrators,Enterprise TPS Administrators,Security Domain Administrators,Subsystem Group
  5. サービスを再起動します。

    systemctl start pki-tomcatd@instance_name.service

    または (nuxwdog watchdog を使用している場合)

    # systemctl start pki-tomcatd-nuxwdog@instance_name.service

パート IV. Certificate System 10.x へのアップグレード

ここでは、Red Hat Certificate System のメンテナンスに関する情報を提供します。

第20章 Certificate System 9 から Certificate System 10 へのアップグレード

ユーザーは、Errata-Support チャネルを通じてセキュリティーとバグ修正を入手するために、Red Hat Certificate System の最新バージョンにアップグレードすることを推奨します。現在、最新バージョンは RHEL 7.9 の RHCS 9.7 と RHEL 8.10 の RHCS 10.8 です。

20.1. CA の移行

既存の証明書ファイルを使用した Certificate System の移行には、以下の手順が必要です。

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

新しい Certificate System インスタンスをセットアップする前に、以下の手順を使用して、現在の認証局 (CA) のデータをエクスポートします。この例では、CA のインスタンス名は <pki-rootCA> で、/var/lib/pki/<instance_name> にあります。

  1. CA 署名証明書とキーをエクスポートします。

    # grep internal= /var/lib/pki/<instance_name>/conf/password.conf | awk -F= '{print $2;}' > internal.txt
    # echo <Secret.123> > password.txt
    # PKCS12Export -d /var/lib/pki/<instance_name>/alias -p internal.txt -o ca.p12 -w password.txt
  2. 証明書署名要求 (CSR) をエクスポートします。

    # echo "-----BEGIN NEW CERTIFICATE REQUEST-----" > ca_signing.csr
    # sed -n "/^ca.signing.certreq=/ s/[=]*=// p" < /var/lib/pki/<instance_name>/ca/conf/CS.cfg >> ca_signing.csr
    # echo "-----END NEW CERTIFICATE REQUEST-----" >> ca_signing.csr
  3. 古い CA が (チェーン内に単一のルート CA を持つ) 中間 CA である場合は、NSS データベースからルート CA を抽出します。

    # certutil -L -d /var/lib/pki/<instance_name>/alias/ -n root_CA_nickname -a > ca_rootca_signing.crt
  4. 内部 LDAP データベースをバックアップします。

    1. CA の CS.cfginternaldb.database の値をチェックして、CA データベースの名前を見つけます。

      # grep internaldb.database /etc/pki/<instance_name>/ca/CS.cfg
      	internaldb.database=<CS_database_name>
    2. インスタンスが作成されたら、setup-ds.pl によって生成されたインスタンス固有のスクリプトを使用して、このデータベースを .ldif ファイルにエクスポートします。

      # cd /usr/lib64/dirsrv/<instance_name>
      # ./db2ldif -n "<CS_database_name>" -a /tmp/old_ca.ldif

      db2ldif コマンドは DB ユーザーとして実行されるため、書き込みパーミッションを持つ宛先フォルダーが必要になります。

  5. old_ca.ldifca_p12ca_signing.csr ファイルを新しい CA マシンに転送します。移行する CA が中間 CA でもある場合は、ca_rootca_signing.crt も転送します。

20.1.2. PKCS12 ファイルの確認

新しい CA では、新しいデータベースインスタンスが標準ポート (389) で実行されます。PKCS12 ファイルには、古いシステムのすべてのシステム証明書が含まれています。ファイルに CA 署名証明書およびキーが含まれていることを確認します。

注記

FIPS モードでは、NSS データベースを使用して pki pkcs12 コマンドを実行する必要があります。詳細は、pki-pkcs12 CLI を参照してください。

  1. CA 署名証明書およびキーを見つけます。

    $ echo "<Secret.123>" > password.txt
    $ pki pkcs12-cert-find --pkcs12-file ca.p12 --pkcs12-password-file password.txt
    $ pki pkcs12-key-find --pkcs12-file ca.p12 --pkcs12-password-file password.txt
  2. CA 署名証明書の信頼フラグが存在することを確認します。フラグが "CTu,Cu,Cu" ではない、またはそれらがない場合は追加します。

    $ pki pkcs12-cert-mod "<caSigningCert cert-pki-rootCA>" \ --pkcs12-file ca.p12 --pkcs12-password-file password.txt \ --trust-flags "CTu,Cu,Cu"
  3. 他の証明書およびキーを削除します。

    $ pki pkcs12-cert-del "<Server-Cert cert-pki-rootCA>" --pkcs12-file ca.p12 --pkcs12-password-file password.txt
    $ pki pkcs12-cert-del "<subsystemCert cert-pki-rootCA>" --pkcs12-file ca.p12 --pkcs12-password-file password.txt
    $ pki pkcs12-cert-del "<ocspSigningCert cert-pki-rootCA>" --pkcs12-file ca.p12 --pkcs12-password-file password.txt
    $ pki pkcs12-cert-del "<auditSigningCert cert-pki-rootCA>" --pkcs12-file ca.p12 --pkcs12-password-file password.txt
  4. 移行する CA も中間 CA の場合は、ルート CA 証明書を PKCS#12 ファイルから削除します。

    $ pki pkcs12-cert-del "<Top-level Root CA Signing Certificate>" --pkcs12-file ca.p12 --pkcs12-password-file password.txt

20.1.3. 新規ホストでの CA の設定

既存のインスタンスからデータをエクスポートしたら、新しいホストに認証局 (CA) を作成してセットアップします。

  1. 古い CA のパラメーターを使用して、pkispawn の設定ファイル (例: CA.cfg) を作成します。このインスタンスは標準ポート (389) で実行されます。

    [DEFAULT]
    	pki_instance_name=<new_instance_name>
    	pki_admin_password=<caadmin_password>
    	pki_client_pkcs12_password=<pkcs12_file_password>
    	pki_ds_password=<DS_password>
    	pki_ds_ldap_port=389
    	pki_existing=True
    
    [CA]
    	pki_ca_signing_csr_path=<path/to/ca_signing.csr>
    	pki_ca_signing_cert_path=<path/to/ca_signing.crt>
    	pki_ca_signing_nickname=<caSigningCert cert-nickname>
    	pki_ds_base_dn=<o=pki-tomcat-CA>
    	pki_ds_database=<instance_name-CA>
    	pki_master_crl_enable=False

    古い CA が中間 CA の場合は、以下の 2 行を設定ファイルに追加します。これらは、ルート CA 証明書へのパスと、NSS データベースに証明書を保存するときに使用するニックネームに対応します。

    pki_cert_chain_path=<rootca_signing.crt>
    pki_cert_chain_nickname=<caSigningCert cert-pki-ca>
  2. 新規ホストで pkispawn を実行して、新規 CA インスタンスを作成します。

    # pkispawn -s CA -f ca.cfg -vv
注記

新規 CA 用に新しい DS インスタンスをセットアップする方法は、Red Hat Directory Server のインストール を参照してください。

20.1.4. 古いデータの新規 CA へのインポート

新しい CA インスタンスを作成した後、データを新しい CA データベースにインポートします。

  1. CA サービスを停止します。

    # systemctl stop pki-tomcatd@<instance_name>.service
  2. オプション: 新しいホストで CA データベースをバックアップします。

    # dsctl -v idm-qe-01 db2bak

    バックアップは、/var/lib/dirsrv/<instance_name>/bak/<host_name-time_stamp>/ ディレクトリーに保存されます。

  3. 新しい RHEL 8 内部データベースから、署名証明書の証明書エントリーを削除します。

    # ldapdelete -x -w <password< -D 'cn=Directory Manager' "cn=<serial_number<,ou=certificateRepository,ou=ca,o=pki-tomcat-CA"

    エントリーが古いデータからインポートされ、そのエントリーの CRL 属性が正しいエントリーをポイントするようになりました。

  4. データを新しいデータベースにインポートします。

    # ldapmodify -x -W <password> -D 'cn=Directory Manager' -a -c -f <path/to/old_ca.ldif>

    ldapmodify ユーティリティーは新しいエントリーのみを追加し、CA のインストール時に作成された既存のエントリーを更新しません。

  5. オプション: import.log ファイルの出力を確認します。ldap_add: Invalid syntax (21) など、失敗したアクションを検索できます。
  6. 古いセキュリティードメインのディレクトリーエントリーを削除します。

    # ldapmodify -W <password> -x -D "cn=Directory Manager"
    dn: cn=<server.example.com:9445>,cn=CAList,ou=Security Domain,<o=pki-tomcat-CA>
    changetype: delete
  7. CA が証明書失効リスト (CRL) マスターとして機能するように、/etc/pki/<instance_name>/ca/CS.cfg ファイルで ca.crl.MasterCRL.enable パラメーターを有効にします。

    ca.crl.MasterCRL.enable=true
  8. CA サービスを起動します。

    # systemctl start pki-tomcatd@<instance_name>

20.1.5. デフォルトグループにユーザーの再割り当て

ldapmodify ユーティリティーまたは pki ユーティリティーを使用して、デフォルトのグループにメンバーを手動で追加します。

  1. クライアントを設定します。

    # pki -c <password> client-init
    Client initialized
    # pk12util -i ~/.dogtag/<instance_name>/ca_admin_cert.p12 -d ~/.dogtag/nssdb/
    Enter Password or Pin for "NSS Certificate DB":
    Enter password for PKCS12 file:
    pk12util: PKCS12 IMPORT SUCCESSFUL
  2. ユーザー アカウントを Administrators および Security Domain Administrators グループに追加します。

    # pki -n "<PKI Administrator for example.com>" -c <password> \
    user-membership-add <user_name> "Certificate Manager Agents"

    RHCS 9 と RHCS 10 のデフォルト (ブートストラップ) 管理者ユーザーは、同じデフォルトのロール、つまり同じグループメンバーシップを持っています。ただし、デフォルト以外の管理者ユーザーがいる場合や、RHCS 9 で管理者ロールをカスタマイズしている場合は、これらの変更が適切に移行されない可能性があります。この場合は、RHCS 10 でロールを再設定します。

    # pki -n "<PKI Administrator for example.com>" -c <password> \
    user-membership-add <user> "Administrators"
    # pki -n "<PKI Administrator for example.com>" -c <password> \
    user-membership-add <user> "Security Domain Administrators"

証明書が正常に移行されたことを確認する場合は、ca-cert-find コマンドを実行して、新しいホストに存在することを確認します。

20.2. KRA の移行

単純な KRA 移行には、次の手順が必要です。

alpha.example.com にある KRA にはデータが含まれていますが、omega.example.com にある KRA はまだ存在しません。

HostnamePKI KRA バージョン

alpha.example.com

PKI KRA 10.5 on RHCS 9.7

omega.example.com

PKI KRA 10.13 on RHCS 10.4

20.2.1. 新しいホストでの KRA の設定

omega.example.comroot ユーザーとして、以下のように設定します。

  1. omega.example.com に新しい PKI 10.13 KRA をインストールして設定します。
  2. KRA インスタンスを停止します。

    # systemctl stop pki-tomcatd@<pki-kra>
  3. 必要なファイルをすべてエクスポートするディレクトリーを作成します。

    # mkdir -p /export/pki
  4. KRA ストレージ証明書をファイルにエクスポートします。アルファ上の KRA から復号化された古いデータを再暗号化するには、後で KRA ストレージ証明書が必要になります。以下の例では、ファイルの名前は omega.crt です。

    # cd /var/lib/pki/<pki-kra>/alias/
    # pki-server cert-export kra_storage -i <pki-kra> --cert-file <omega.crt>
    Certificate:
        Data:
            Version: 3 (0x2)
            Serial Number: 8 (0x8)
            Signature Algorithm: sha256WithRSAEncryption
            Issuer: O = example.com Security Domain, OU = topology-02-CA, CN = CA Signing Certificate
            Validity
                Not Before: Dec 19 10:58:02 2019 GMT
                Not After : Dec  8 10:58:02 2021 GMT
            Subject: O = example.com Security Domain, OU = topology-02-KRA, CN = DRM Storage Certificate
            Subject Public Key Info:
                Public Key Algorithm: rsaEncryption
                    RSA Public-Key: (2048 bit)
                    Modulus:
                        00:99:c1:f6:f4:0d:75:67:ff:58:3a:28:ee:34:f1:
                        40:0a:e1:5b:f3:9d:f4:c2:5a:1e:d0:d5:0c:62:c1:
  5. omega.crt ファイルを /export/pki ディレクトリーに移動します。
  6. Directory Server を停止します。

    # systemctl stop dirsrv@omega
    注記

    db2ldif が見つからない場合、389-ds-base-legacy-tools パッケージをインストールします。

  7. KRA LDAP データベース設定を抽出します。古いデータを新しいデータに変換するには、新しい KRA LDAP データベース設定が必要になります。

    # /usr/lib64/dirsrv/slapd-omega/db2ldif -n <pki-kra-KRA> -a /tmp/omega.ldif
  8. /tmp/omega.ldif ファイルを /export/pki ディレクトリーに移動します。

    # mv /tmp/omega.ldif /export/pki/

20.2.2. 以前のシステムからのコンテンツのエクスポート

alpha.example.com で root ユーザーとして以下を行います。

  1. 共通のディレクトリーを作成します。

    # mkdir -p /export/pki
  2. Directory Server を停止します。以下の例では、サーバーの名前は alpha です。

    # systemctl stop dirsrv@alpha
  3. KRA LDAP データベースから LDIF を生成します。

    # /usr/lib64/dirsrv/slapd-alpha/db2ldif -n <pki-kra-KRA> -a /tmp/alpha.ldif
  4. /tmp/alpha.ldif ファイルを /export/pki ディレクトリーに移動します。

    # mv /tmp/alpha.ldif /export/pki/
  5. KRA NSS セキュリティーデータベースをデータ領域にコピーします。

    # cp -p /var/lib/pki/<pki-kra>/alias/* /export/pki/
  6. /export/pki ディレクトリーに移動します。

    # cd /export/pki
  7. omega.example.com から、新しい KRA のストレージ証明書が含まれるフラットファイを取得します。

    sftp root@omega.example.com
    sftp> cd /export/pki
    sftp> get omega.crt
    sftp> quit
  8. 内部パスワードを取得します。

    # cat /var/lib/<instance_name>/conf/password.conf
  9. alpha.example.comKRATool を実行します。

    # KRATool \
        -kratool_config_file /usr/share/pki/java-tools/KRATool.cfg \
        -source_ldif_file /export/pki/alpha.ldif \
        -target_ldif_file /export/pki/alpha2omega.ldif \
        -log_file /tmp/KRATool_26_05_2023.log \
        -source_pki_security_database_path /export/pki/ \
        -source_storage_token_name "Internal Key Storage Token" \
        -source_storage_certificate_nickname "<storageCert cert-pki-tomcat KRA>" \
        -target_storage_certificate_file /export/pki/omega.crt \
        -source_kra_naming_context alpha.example.com \
        -target_kra_naming_context omega.example.com \
        -unwrap_algorithm AES \
        -process_requests_and_key_records_only
    
    PROCESSING KRATOOL CONFIG FILE: ................................... FINISHED.
    SUCCESSFULLY processed kratool config file!
    Initializing source PKI security databases in '/export/pki/'.
    Retrieving token from CryptoManager.
    Retrieving source storage token called 'Internal Key Storage Token'.
    Retrieving source storage cert with nickname of 'storageCert cert-pki-tomcat KRA'.
    
    BEGIN: Obtaining the private key from the source storage token . . .
    Enter password for Internal Key Storage Token
    **
    
    FINISHED: Obtaining the private key from the source storage token.
    BEGIN: Obtaining the public key from the target storage certificate . . .
    FINISHED: Obtaining the public key from the target storage certificate.
    PROCESSING: xxxxxxxxxxxxxxxxxxxxxxxxx......
    SUCCESSFULLY converted source LDIF file --> target LDIF file!
    
    FINISHED "KRATool -kratool_config_file /usr/share/pki/java-tools/KRATool.cfg -source_ldif_file /export/pki/alpha.ldif -target_ldif_file /export/pki/alpha2omega.ldif -log_file /tmp/DRMTool_20_05_2021.log -source_pki_security_database_path /export/pki/ -source_storage_token_name 'Internal Key Storage Token' -source_storage_certificate_nickname 'storageCert cert-pki-tomcat KRA' -target_storage_certificate_file /export/pki/omega.crt -source_pki_security_database_pwdfile '/export/pki/password.cfg' -source_kra_naming_context 'alpha.example.com' -target_kra_naming_context 'omega.example.com' -process_requests_and_key_records_only"
    注記

    あるいは、証明書または証明書データベースによって自動的にアクセスされる唯一のパスワードを含む、不正アクセスから保護されたプレーンテキストファイルを作成することもできます。-source_pki_security_database_pwdfile <path_to_PKI_password_file> コマンドラインオプションを使用して、このファイルを KRATool に追加します。

  10. alpha2omega.ldif ファイルを omega.example.com にコピーします。

    sftp root@omega.example.com
    sftp> cd /export/pki
    sftp> put alpha2omega.ldif
    sftp> quit

20.2.3. 新規 KRA へのデータのインポート

omega.example.comroot ユーザーとして、以下のように設定します。

  1. /export/pki ディレクトリーに移動します。

    # cd /export/pki
  2. ldif ファイルを連結します。

    # cat omega.ldif alpha2omega.ldif > omega_alpha.ldif
  3. omega_alpha.ldif ファイルを、PKI KRA に関連付けられた LDAP データベースにインポートします。

    # /usr/lib64/dirsrv/slapd-omega/ldif2db -n <pki-kra-KRA> -i /export/pki/omega_alpha.ldif
  4. Directory Server を起動します。

    # systemctl start dirsrv@omega
  5. KRA インスタンスを起動します。

    # systemctl start pki-tomcatd@<pki-kra>

20.2.4. KRA エージェントページから移行したキーの存在の検証

最後に、KRA エージェントページから移行した鍵のキーリカバリーを実行します。

[root@pki1 pki]# pki -d /root/nssdb/ -p 21080 -n '<PKI Administrator - example.com Security Domain>' kra-key-find
Enter password for Internal Key Storage Token

----------------
3 key(s) matched
----------------
  Key ID: 0x1
  Algorithm: 1.2.840.113549.1.1.1
  Size: 1024
  Owner: UID=alpha1

  Key ID: 0x2
  Algorithm: 1.2.840.113549.1.1.1
  Size: 1024
  Owner: UID=alpha2

  Key ID: 0x3
  Algorithm: 1.2.840.113549.1.1.1
  Size: 1024
  Owner: UID=alpha3
----------------------------
Number of entries returned 3
----------------------------

20.2.5. アップグレード後のテスト

アップグレード前にアーカイブされたユーザーキーのキーリカバリー操作を実行します。

手順 21.1. キーリカバリーテスト

  1. アップグレード前に作成された base64 ユーザー証明書を表示します。

    # <pki -n 'PKI Administrator - example.com>' -c <Secret.123> ca-cert-export <0xd>
      Serial Number: 0xd
      Subject DN: UID=alpha
      Issuer DN: CN=CA Signing Certificate,OU=pki-tomcat,O=example.com Security Domain
      Status: VALID
      Not Valid Before: Wed Jun 07 01:49:07 EDT 2023
      Not Valid After: Mon Dec 04 01:49:
    
    ----BEGIN CERTIFICATE----
    MIIDODCCAiCgAwIBAgIBDTANBgkqhkiG9w0BAQsFADBtMTUwMwYDVQQKDCxpZG1xZS5sYWIuZW5n
    LmJvcy5yZWRoYXQuY29tIFNlY3VyaXR5IERvbWFpbjETMBEGA1UECwwKcGtpLXRvbWNhdDEfMB0G
    A1UEAwwWQ0EgU2lnbmluZyBDZXJ0aWZpY2F0ZTAeFw0yMzA2MDcwNTQ5MDdaFw0yMzEyMDQwNjQ5
    
                [...output truncated...]
    
    EJyoMFM+RaAcTh+C3S0JZEoKlAS3UlJOMxk3BFZdWpv7ia+1faV6LFPZSCZ/m8i2c3KZNxFW2xv1
    DTIIVc7a1uEDApVDHf5aFcm0nGpEVeK+yvP4r1eD
    ----END CERTIFICATE----
  2. この証明書を使用して、KRA エージェント UI を通じてキーリカバリー要求を生成します。
  3. リカバリー要求を承認します。

    # pki -c <Secret.123> -n '<PKI Administrator - example.com Security Domain>' -p 8443 -P https kra-key-request-review <0x2> --action approve
    -----
    Result
    ------
    Request ID: 0x2
    Type: recovery
    Status: approved
  4. KRA UI からキーをダウンロードします。

第21章 Certificate System 10 の最新のマイナーバージョンへのアップグレード

Red Hat Certificate System 10 を最新のマイナーバージョン (10.5 など) にアップグレードするには、パッケージと設定ファイルを更新する必要があります。

  1. サーバーのパッケージをすべてアップグレードします。

    # yum update

    更新時に、/etc/pki/<instance_name>/subsystem/CS.cfg/etc/pki/<instance_name>/server.xml などの証明書システムの設定ファイルが、新規バージョンに自動的に変更されます。

    Certificate System のアップグレード時に生成されるログファイルは以下の通りです。

    • /var/log/pki/pki-server-upgrade-version.log
    • /var/log/pki/pki-upgrade-version.log

      ログファイル名のバージョン番号は、Certificate System のバージョンではなく、pki* パッケージのバージョンを表します。

      注記

      Directory Server が別のホストにインストールされている場合は、そのホストのパッケージも更新します。Directory Server の更新に関する詳細は、以下を参照してください。

  2. Certificate System インスタンスを再起動します。

    # systemctl restart pki-tomcatd@<instance_name>.service
注記

9.7 などの下位メジャーバージョンから Certificate System 10 に移行するには、20章Certificate System 9 から Certificate System 10 へのアップグレード を参照してください。

パート V. Certificate System サブシステムのアンインストール

ここでは、Red Hat Certificate System のメンテナンスに関する情報を提供します。

第22章 Certificate System サブシステムのアンインストール

個々のサブシステムを削除するか、サブシステム全体に関連するすべてのパッケージをアンインストールできます。サブシステムは個別にインストールおよびアンインストールされます。たとえば、インストールおよび設定された CA サブシステムを残したまま、KRA サブシステムをアンインストールすることができます。また、単一の CA サブシステムを削除して、他の CA サブシステムをマシン上で残すこともできます。

22.1. サブシステムの削除

サブシステムを削除するには、サブシステムのタイプと、サブシステムが実行されているサーバーの名前を指定する必要があります。このコマンドは、サブシステムに関連付けられているすべてのファイルを削除します (サブシステムパッケージは削除しません)。

pkidestroy -s subsystem_type -i instance_name

-s オプションは、削除するサブシステムを指定します (CA、KRA、OCSP、TKS、または TPS など)。-i オプションは、pki-tomcat などのインスタンス名を指定します。

たとえば、CA サブシステムを削除するには、以下を実行します。

$ pkidestroy -s CA -i pki-tomcat

Loading deployment configuration from /var/lib/pki/pki-tomcat/ca/registry/ca/deployment.cfg.
Uninstalling CA from /var/lib/pki/pki-tomcat.
Removed symlink /etc/systemd/system/multi-user.target.wants/pki-tomcatd.target.

Uninstallation complete.

pkidestroy ユーティリティーは、サブシステムと、証明書データベース、証明書、キー、関連ユーザーなどの関連ファイルを削除します。サブシステムパッケージをアンインストールしません。サブシステムがサーバーインスタンスの最後のサブシステムである場合は、サーバーインスタンスも削除されます。

22.2. Certificate System のサブシステムパッケージの削除

多くのサブシステム関連のパッケージと依存関係が Red Hat Certificate System とともにインストールされます。リストは 「Certificate System パッケージ」 に記載されています。サブシステムを削除すると、その特定のサブシステムに関連するファイルおよびディレクトリーのみが削除されます。このインスタンスが使用する、実際にインストールされているパッケージは削除されません。Red Hat Certificate System またはそのサブシステムの 1 つを完全にアンインストールするには、yum のようなパッケージ管理ツールを使用して、各パッケージを個別に削除する必要があります。

個々の Certificate System サブシステムパッケージをアンインストールするには、以下を実行します。

  1. 関連するサブシステムをすべて削除します。以下に例を示します。

    pkidestroy -s CA -i pki-tomcat
  2. uninstall ユーティリティーを実行します。以下に例を示します。

    yum remove pki-subsystem_type

    サブシステムタイプは cakraocsptks、または tps に設定できます。

  3. その他のパッケージおよび依存関係を削除するには、yum を使用して、パッケージを具体的に削除します。インストールされているパッケージの完全なリストは、「Certificate System パッケージ」 を参照してください。

パート VI. 付録: サンプル設定ファイル

第23章 pkispawn のサンプル設定ファイル

このセクションには、さまざまなインストール方法に対応する pkispawn のサンプル設定ファイルが含まれています。

23.1. ca-clone.cfg

[DEFAULT]
pki_server_database_password=Secret.123
pki_cert_chain_path=ca_signing.crt

[CA]
pki_admin_email=caadmin@example.com
pki_admin_name=caadmin
pki_admin_nickname=caadmin
pki_admin_password=Secret.123
pki_admin_uid=caadmin

pki_client_pkcs12_password=Secret.123

pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com
pki_ds_database=ca
pki_ds_password=Secret.123

pki_security_domain_hostname=primary.example.com
pki_security_domain_https_port=8443
pki_security_domain_user=caadmin
pki_security_domain_password=Secret.123

pki_ca_signing_nickname=ca_signing
pki_ocsp_signing_nickname=ca_ocsp_signing
pki_audit_signing_nickname=ca_audit_signing
pki_sslserver_nickname=sslserver
pki_subsystem_nickname=subsystem

pki_clone=True
pki_clone_replicate_schema=True
pki_clone_uri=https://primary.example.com:8443

# To clone with PKCS #12 file, specify the following parameters:
# pki_clone_pkcs12_path=ca-certs.p12
# pki_clone_pkcs12_password=Secret.123

23.2. ca-ecc.cfg

[DEFAULT]
pki_instance_name=pki-tomcat
pki_https_port=8443
pki_http_port=8080
pki_server_database_password=Secret.123

[Tomcat]
pki_ajp_port=8009
pki_tomcat_server_port=8005

[CA]
pki_admin_email=caadmin@example.com
pki_admin_name=caadmin
pki_admin_nickname=caadmin
pki_admin_password=Secret.123
pki_admin_uid=caadmin
pki_admin_key_type=ecc
pki_admin_key_size=nistp521
pki_admin_key_algorithm=SHA384withEC

pki_client_pkcs12_password=Secret.123

pki_ds_url=ldap://localhost.localdomain:389
pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com
pki_ds_database=ca
pki_ds_password=Secret.123

pki_security_domain_name=EXAMPLE

pki_ca_signing_nickname=ca_signing
pki_ca_signing_key_type=ecc
pki_ca_signing_key_algorithm=SHA384withEC
pki_ca_signing_key_size=nistp521
pki_ca_signing_signing_algorithm=SHA512withEC

pki_ocsp_signing_nickname=ca_ocsp_signing
pki_ocsp_signing_key_type=ecc
pki_ocsp_signing_key_algorithm=SHA384withEC
pki_ocsp_signing_key_size=nistp521
pki_ocsp_signing_signing_algorithm=SHA384withEC

pki_audit_signing_nickname=ca_audit_signing
pki_audit_signing_key_type=ecc
pki_audit_signing_key_algorithm=SHA384withEC
pki_audit_signing_key_size=nistp521
pki_audit_signing_signing_algorithm=SHA384withEC

pki_sslserver_nickname=sslserver
pki_sslserver_key_type=ecc
pki_sslserver_key_algorithm=SHA384withEC
pki_sslserver_key_size=nistp521

pki_subsystem_nickname=subsystem
pki_subsystem_key_type=ecc
pki_subsystem_key_algorithm=SHA384withEC
pki_subsystem_key_size=nistp521

23.3. ca-existing-certs-step1.cfg

[DEFAULT]
pki_instance_name=pki-tomcat
pki_https_port=8443
pki_http_port=8080
pki_server_database_password=Secret.123

[Tomcat]
pki_ajp_port=8009
pki_tomcat_server_port=8005

[CA]
pki_admin_email=caadmin@example.com
pki_admin_name=caadmin
pki_admin_nickname=caadmin
pki_admin_password=Secret.123
pki_admin_uid=caadmin

pki_client_pkcs12_password=Secret.123

pki_ds_url=ldap://localhost.localdomain:389
pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com
pki_ds_database=ca
pki_ds_password=Secret.123

pki_security_domain_name=EXAMPLE

pki_ca_signing_nickname=ca_signing
pki_ocsp_signing_nickname=ca_ocsp_signing
pki_audit_signing_nickname=ca_audit_signing
pki_sslserver_nickname=sslserver
pki_subsystem_nickname=subsystem

pki_external=True
pki_external_step_two=False

23.4. ca-existing-certs-step2.cfg

[DEFAULT]
pki_instance_name=pki-tomcat
pki_https_port=8443
pki_http_port=8080
pki_server_database_password=Secret.123

[Tomcat]
pki_ajp_port=8009
pki_tomcat_server_port=8005

[CA]
pki_admin_email=caadmin@example.com
pki_admin_name=caadmin
pki_admin_nickname=caadmin
pki_admin_password=Secret.123
pki_admin_uid=caadmin

pki_client_pkcs12_password=Secret.123

pki_ds_url=ldap://localhost.localdomain:389
pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com
pki_ds_database=ca
pki_ds_password=Secret.123

pki_security_domain_name=EXAMPLE

pki_ca_signing_nickname=ca_signing
pki_ocsp_signing_nickname=ca_ocsp_signing
pki_audit_signing_nickname=ca_audit_signing
pki_sslserver_nickname=sslserver
pki_subsystem_nickname=subsystem

pki_external=True
pki_external_step_two=True

pki_pkcs12_path=ca-certs.p12
pki_pkcs12_password=Secret.123

pki_ca_signing_csr_path=ca_signing.csr
pki_ocsp_signing_csr_path=ca_ocsp_signing.csr
pki_audit_signing_csr_path=ca_audit_signing.csr

23.5. ca-external-cert-step1.cfg

[DEFAULT]
pki_instance_name=pki-tomcat
pki_https_port=8443
pki_http_port=8080
pki_server_database_password=Secret.123

[Tomcat]
pki_ajp_port=8009
pki_tomcat_server_port=8005

[CA]
pki_admin_email=caadmin@example.com
pki_admin_name=caadmin
pki_admin_nickname=caadmin
pki_admin_password=Secret.123
pki_admin_uid=caadmin

pki_client_pkcs12_password=Secret.123

pki_ds_url=ldap://localhost.localdomain:389
pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com
pki_ds_database=ca
pki_ds_password=Secret.123

pki_security_domain_name=EXAMPLE

pki_ca_signing_nickname=ca_signing
pki_ocsp_signing_nickname=ca_ocsp_signing
pki_audit_signing_nickname=ca_audit_signing
pki_sslserver_nickname=sslserver
pki_subsystem_nickname=subsystem

pki_external=True
pki_external_step_two=False

pki_ca_signing_csr_path=ca_signing.csr

23.6. ca-external-cert-step2.cfg

[DEFAULT]
pki_instance_name=pki-tomcat
pki_https_port=8443
pki_http_port=8080
pki_server_database_password=Secret.123
pki_cert_chain_nickname=root-ca_signing
pki_cert_chain_path=root-ca_signing.crt

[Tomcat]
pki_ajp_port=8009
pki_tomcat_server_port=8005

[CA]
pki_admin_email=caadmin@example.com
pki_admin_name=caadmin
pki_admin_nickname=caadmin
pki_admin_password=Secret.123
pki_admin_uid=caadmin

pki_client_pkcs12_password=Secret.123

pki_ds_url=ldap://localhost.localdomain:389
pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com
pki_ds_database=ca
pki_ds_password=Secret.123

pki_security_domain_name=EXAMPLE

pki_ca_signing_nickname=ca_signing
pki_ocsp_signing_nickname=ca_ocsp_signing
pki_audit_signing_nickname=ca_audit_signing
pki_sslserver_nickname=sslserver
pki_subsystem_nickname=subsystem

pki_external=True
pki_external_step_two=True

pki_ca_signing_csr_path=ca_signing.csr
pki_ca_signing_cert_path=ca_signing.crt

23.7. ca-secure-ds-secondary.cfg

[DEFAULT]
pki_instance_name=pki-tomcat
pki_https_port=8443
pki_http_port=8080

pki_server_database_password=Secret.123
pki_cert_chain_path=ca_signing.crt

[Tomcat]
pki_ajp_port=8009
pki_tomcat_server_port=8005

[CA]
pki_admin_email=caadmin@example.com
pki_admin_name=caadmin
pki_admin_nickname=caadmin
pki_admin_password=Secret.123
pki_admin_uid=caadmin

pki_client_pkcs12_password=Secret.123

pki_ds_url=ldaps://secondary.example.com:636
pki_ds_secure_connection_ca_nickname=ds_signing
pki_ds_secure_connection_ca_pem_file=ds_signing.crt

pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com
pki_ds_database=ca
pki_ds_password=Secret.123

pki_security_domain_hostname=primary.example.com
pki_security_domain_https_port=8443
pki_security_domain_user=caadmin
pki_security_domain_password=Secret.123

pki_ca_signing_nickname=ca_signing
pki_ocsp_signing_nickname=ca_ocsp_signing
pki_audit_signing_nickname=ca_audit_signing
pki_sslserver_nickname=sslserver
pki_subsystem_nickname=subsystem

pki_clone=True
pki_clone_replicate_schema=True
pki_clone_uri=https://primary.example.com:8443
pki_clone_pkcs12_path=ca-certs.p12
pki_clone_pkcs12_password=Secret.123
pki_clone_replication_security=SSL

23.8. ca-secure-ds.cfg

[DEFAULT]
pki_instance_name=pki-tomcat
pki_https_port=8443
pki_http_port=8080
pki_server_database_password=Secret.123

[Tomcat]
pki_ajp_port=8009
pki_tomcat_server_port=8005

[CA]
pki_admin_email=caadmin@example.com
pki_admin_name=caadmin
pki_admin_nickname=caadmin
pki_admin_password=Secret.123
pki_admin_uid=caadmin

pki_client_pkcs12_password=Secret.123

pki_ds_url=ldaps://pki.example.com:636
pki_ds_secure_connection_ca_nickname=ds_signing
pki_ds_secure_connection_ca_pem_file=ds_signing.crt

pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com
pki_ds_database=ca
pki_ds_password=Secret.123

pki_security_domain_name=EXAMPLE

pki_ca_signing_nickname=ca_signing
pki_ocsp_signing_nickname=ca_ocsp_signing
pki_audit_signing_nickname=ca_audit_signing
pki_sslserver_nickname=sslserver
pki_subsystem_nickname=subsystem

23.9. ca.cfg

[DEFAULT]

pki_instance_name=pki-tomcat
pki_https_port=8443
pki_http_port=8080
pki_server_database_password=Secret.123

[Tomcat]
pki_ajp_port=8009
pki_tomcat_server_port=8005

[CA]
pki_admin_email=caadmin@example.com
pki_admin_name=caadmin
pki_admin_nickname=caadmin
pki_admin_password=Secret.123
pki_admin_uid=caadmin

pki_client_pkcs12_password=Secret.123

pki_ds_url=ldap://localhost.localdomain:389
pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com
pki_ds_database=ca
pki_ds_password=Secret.123

pki_security_domain_name=EXAMPLE

pki_ca_signing_nickname=ca_signing
pki_ocsp_signing_nickname=ca_ocsp_signing
pki_audit_signing_nickname=ca_audit_signing
pki_sslserver_nickname=sslserver
pki_subsystem_nickname=subsystem

23.10. ocsp.cfg

[DEFAULT]
pki_instance_name=pki-tomcat
pki_https_port=8443
pki_http_port=8080
pki_server_database_password=Secret.123

[Tomcat]
pki_ajp_port=8009
pki_tomcat_server_port=8005

[OCSP]
pki_admin_email=ocspadmin@example.com
pki_admin_name=ocspadmin
pki_admin_nickname=ocspadmin
pki_admin_password=Secret.123
pki_admin_uid=ocspadmin

pki_client_pkcs12_password=Secret.123

pki_ds_url=ldap://localhost.localdomain:389
pki_ds_base_dn=dc=ocsp,dc=pki,dc=example,dc=com
pki_ds_database=ocsp
pki_ds_password=Secret.123

pki_security_domain_name=EXAMPLE
pki_security_domain_user=caadmin
pki_security_domain_password=Secret.123

pki_ocsp_signing_nickname=ocsp_signing
pki_audit_signing_nickname=ocsp_audit_signing
pki_sslserver_nickname=sslserver
pki_subsystem_nickname=subsystem

23.11. ocsp-standalone-step1.cfg

[DEFAULT]
pki_instance_name=pki-tomcat
pki_https_port=8443
pki_http_port=8080
pki_server_database_password=Secret.123

[Tomcat]
pki_ajp_port=8009
pki_tomcat_server_port=8005

[OCSP]
pki_admin_email=ocspadmin@example.com
pki_admin_name=ocspadmin
pki_admin_nickname=ocspadmin
pki_admin_password=Secret.123
pki_admin_uid=ocspadmin

pki_client_database_password=Secret.123
pki_client_pkcs12_password=Secret.123

pki_ds_url=ldap://localhost.localdomain:389
pki_ds_base_dn=dc=ocsp,dc=pki,dc=example,dc=com
pki_ds_database=ocsp
pki_ds_password=Secret.123

pki_ocsp_signing_nickname=ocsp_signing
pki_subsystem_nickname=subsystem
pki_sslserver_nickname=sslserver
pki_audit_signing_nickname=ocsp_audit_signing

pki_standalone=True
pki_external_step_two=False

pki_ocsp_signing_csr_path=ocsp_signing.csr
pki_subsystem_csr_path=subsystem.csr
pki_sslserver_csr_path=sslserver.csr
pki_audit_signing_csr_path=ocsp_audit_signing.csr
pki_admin_csr_path=ocsp_admin.csr

23.12. ocsp-standalone-step2.cfg

[DEFAULT]
pki_instance_name=pki-tomcat
pki_https_port=8443
pki_http_port=8080

pki_server_database_password=Secret.123
pki_cert_chain_nickname=ca_signing
pki_cert_chain_path=ca_signing.crt

[Tomcat]
pki_ajp_port=8009
pki_tomcat_server_port=8005

[OCSP]
pki_admin_email=ocspadmin@example.com
pki_admin_name=ocspadmin
pki_admin_nickname=ocspadmin
pki_admin_password=Secret.123
pki_admin_uid=ocspadmin

pki_client_database_password=Secret.123
pki_client_pkcs12_password=Secret.123

pki_ds_url=ldap://localhost.localdomain:389
pki_ds_base_dn=dc=ocsp,dc=pki,dc=example,dc=com
pki_ds_database=ocsp
pki_ds_password=Secret.123

pki_ocsp_signing_nickname=ocsp_signing
pki_subsystem_nickname=subsystem
pki_sslserver_nickname=sslserver
pki_audit_signing_nickname=ocsp_audit_signing

pki_standalone=True
pki_external_step_two=True

pki_ocsp_signing_csr_path=ocsp_signing.csr
pki_subsystem_csr_path=subsystem.csr
pki_sslserver_csr_path=sslserver.csr
pki_audit_signing_csr_path=ocsp_audit_signing.csr
pki_admin_csr_path=ocsp_admin.csr

pki_ocsp_signing_cert_path=ocsp_signing.crt
pki_subsystem_cert_path=subsystem.crt
pki_sslserver_cert_path=sslserver.crt
pki_audit_signing_cert_path=ocsp_audit_signing.crt
pki_admin_cert_path=ocsp_admin.crt

23.13. kra-clone.cfg

[DEFAULT]
pki_server_database_password=Secret.123
pki_cert_chain_path=ca_signing.crt

[KRA]
pki_admin_email=kraadmin@example.com
pki_admin_name=kraadmin
pki_admin_nickname=kraadmin
pki_admin_password=Secret.123
pki_admin_uid=kraadmin

pki_client_pkcs12_password=Secret.123

pki_ds_base_dn=dc=kra,dc=pki,dc=example,dc=com
pki_ds_database=kra
pki_ds_password=Secret.123

pki_security_domain_hostname=primary.example.com
pki_security_domain_name=EXAMPLE
pki_security_domain_user=caadmin
pki_security_domain_password=Secret.123

pki_storage_nickname=kra_storage
pki_transport_nickname=kra_transport
pki_audit_signing_nickname=kra_audit_signing
pki_sslserver_nickname=sslserver
pki_subsystem_nickname=subsystem

pki_clone=True
pki_clone_replicate_schema=True
pki_clone_uri=https://primary.example.com:8443

# To clone with PKCS #12 file, specify the following parameters:
# pki_clone_pkcs12_path=kra-certs.p12
# pki_clone_pkcs12_password=Secret.123

23.14. kra.cfg

[DEFAULT]
pki_server_database_password=Secret.123

[KRA]
pki_admin_email=kraadmin@example.com
pki_admin_name=kraadmin
pki_admin_nickname=kraadmin
pki_admin_password=Secret.123
pki_admin_uid=kraadmin

pki_client_pkcs12_password=Secret.123

pki_ds_base_dn=dc=kra,dc=pki,dc=example,dc=com
pki_ds_database=kra
pki_ds_password=Secret.123

pki_security_domain_name=EXAMPLE
pki_security_domain_user=caadmin
pki_security_domain_password=Secret.123

pki_storage_nickname=kra_storage
pki_transport_nickname=kra_transport
pki_audit_signing_nickname=kra_audit_signing
pki_sslserver_nickname=sslserver
pki_subsystem_nickname=subsystem

23.15. kra-standalone-step1.cfg

[DEFAULT]
pki_server_database_password=Secret.123

[KRA]
pki_admin_email=kraadmin@example.com
pki_admin_name=kraadmin
pki_admin_nickname=kraadmin
pki_admin_password=Secret.123
pki_admin_uid=kraadmin

pki_client_database_password=Secret.123
pki_client_pkcs12_password=Secret.123

pki_ds_base_dn=dc=kra,dc=pki,dc=example,dc=com
pki_ds_database=kra
pki_ds_password=Secret.123

pki_storage_nickname=kra_storage
pki_transport_nickname=kra_transport
pki_subsystem_nickname=subsystem
pki_sslserver_nickname=sslserver
pki_audit_signing_nickname=kra_audit_signing

pki_standalone=True
pki_external_step_two=False

pki_storage_csr_path=kra_storage.csr
pki_transport_csr_path=kra_transport.csr
pki_subsystem_csr_path=subsystem.csr
pki_sslserver_csr_path=sslserver.csr
pki_audit_signing_csr_path=kra_audit_signing.csr
pki_admin_csr_path=kra_admin.csr

23.16. kra-standalone-step2.cfg

[DEFAULT]
pki_server_database_password=Secret.123
pki_cert_chain_nickname=ca_signing
pki_cert_chain_path=ca_signing.crt

[KRA]
pki_admin_email=kraadmin@example.com
pki_admin_name=kraadmin
pki_admin_nickname=kraadmin
pki_admin_password=Secret.123
pki_admin_uid=kraadmin

pki_client_database_password=Secret.123
pki_client_pkcs12_password=Secret.123

pki_ds_base_dn=dc=kra,dc=pki,dc=example,dc=com
pki_ds_database=kra
pki_ds_password=Secret.123

pki_storage_nickname=kra_storage
pki_transport_nickname=kra_transport
pki_subsystem_nickname=subsystem
pki_sslserver_nickname=sslserver
pki_audit_signing_nickname=kra_audit_signing

pki_standalone=True
pki_external_step_two=True

pki_storage_csr_path=kra_storage.csr
pki_transport_csr_path=kra_transport.csr
pki_subsystem_csr_path=subsystem.csr
pki_sslserver_csr_path=sslserver.csr
pki_audit_signing_csr_path=kra_audit_signing.csr
pki_admin_csr_path=kra_admin.csr

pki_storage_cert_path=kra_storage.crt
pki_transport_cert_path=kra_transport.crt
pki_subsystem_cert_path=subsystem.crt
pki_sslserver_cert_path=sslserver.crt
pki_audit_signing_cert_path=kra_audit_signing.crt
pki_admin_cert_path=kra_admin.crt

23.17. subca.cfg

[DEFAULT]
pki_instance_name=pki-tomcat
pki_https_port=8443
pki_http_port=8080
pki_server_database_password=Secret.123
pki_cert_chain_path=root-ca_signing.crt

[Tomcat]
pki_ajp_port=8009
pki_tomcat_server_port=8005

[CA]
pki_admin_email=caadmin@example.com
pki_admin_name=caadmin
pki_admin_nickname=caadmin
pki_admin_password=Secret.123
pki_admin_uid=caadmin

pki_client_pkcs12_password=Secret.123

pki_ds_url=ldap://localhost.localdomain:389
pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com
pki_ds_database=ca
pki_ds_password=Secret.123

pki_security_domain_hostname=root.example.com
pki_security_domain_user=caadmin
pki_security_domain_password=Secret.123

pki_subordinate=True

pki_issuing_ca_hostname=root.example.com

pki_ca_signing_nickname=ca_signing
pki_ca_signing_subject_dn=cn=Subordinate CA Signing Certificate,o=EXAMPLE

pki_ocsp_signing_nickname=ca_ocsp_signing
pki_audit_signing_nickname=ca_audit_signing
pki_sslserver_nickname=sslserver
pki_subsystem_nickname=subsystem

23.18. tks.cfg

[DEFAULT]
pki_server_database_password=Secret.123

[TKS]
pki_admin_email=tksadmin@example.com
pki_admin_name=tksadmin
pki_admin_nickname=tksadmin
pki_admin_password=Secret.123
pki_admin_uid=tksadmin

pki_client_pkcs12_password=Secret.123

pki_ds_base_dn=dc=tks,dc=pki,dc=example,dc=com
pki_ds_database=tks
pki_ds_password=Secret.123

pki_security_domain_name=EXAMPLE
pki_security_domain_user=caadmin
pki_security_domain_password=Secret.123

pki_audit_signing_nickname=tks_audit_signing
pki_sslserver_nickname=sslserver
pki_subsystem_nickname=subsystem

23.19. tps.cfg

[DEFAULT]
pki_server_database_password=Secret.123

[TPS]
pki_admin_email=tpsadmin@example.com
pki_admin_name=tpsadmin
pki_admin_nickname=tpsadmin
pki_admin_password=Secret.123
pki_admin_uid=tpsadmin

pki_client_pkcs12_password=Secret.123

pki_ds_base_dn=dc=tps,dc=pki,dc=example,dc=com
pki_ds_database=tps
pki_ds_password=Secret.123

pki_security_domain_name=EXAMPLE
pki_security_domain_user=caadmin
pki_security_domain_password=Secret.123

pki_audit_signing_nickname=tps_audit_signing
pki_sslserver_nickname=sslserver
pki_subsystem_nickname=subsystem

pki_authdb_basedn=dc=pki,dc=example,dc=com

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat, Inc.