3.6. CA 関連プロファイルの管理
証明書プロファイルと拡張機能を使用して、下位 CA が証明書を発行する方法にルールを設定する必要があります。これには 2 つの部分があります。
- CA 署名証明書の管理
- 発行ルールの定義
3.6.1. CA 証明書での制限の設定
下位 CA が作成されると、ルート CA は下位 CA に制限または制限を課できます。たとえば、ルート CA は、CA 署名証明書の Basic Constraints 拡張機能の pathLenConstraint フィールドを設定することにより、有効な認証パスの最大深度 (新しい CA の下にチェーンできる下位 CA の数) を指定できます。
証明書チェーンは、通常エンティティー証明書、ゼロまたは中間 CA 証明書、ルート CA 証明書で設定されます。ルート CA 証明書は、自己署名型または外部の信頼できる CA によって署名されます。ルート CA 証明書は、信頼できる CA として証明書データベースに読み込まれます。
証明書の交換は、TLS ハンドシェイクの実行時、S/MIME メッセージの送信時、または署名済みオブジェクトを送信するときに行われます。ハンドシェイクの一部として、送信者は、サブジェクト証明書と、サブジェクト証明書を信頼されたルートにリンクするために必要な中間 CA 証明書を送信する必要があります。証明書チェーンが適切に証明書を有効にするには、以下のプロパティーが必要です。
- CA 証明書には、基本的な制約の拡張子が必要です。
- CA 証明書の鍵用途拡張に keyCertSign ビットが設定されている必要があります。
証明書とその拡張の詳細は、RFC 5280 で利用可能な 『Internet X.509 Public Key Infrastructure - Certificate and Certificate Revocation List (CRL) Profile (RFC 5280)』 を参照してください。
これらの拡張機能は、証明書プロファイルの登録ページで設定できます。デフォルトでは、CA には必須かつ合理的な設定設定が含まれますが、これらの設定をカスタマイズすることは可能です。
注記
この手順では、CA が使用する CA 証明書プロファイルを編集して、下位 CA に CA 証明書を発行する方法を説明します。
CA インスタンスの初期設定時に使用されるプロファイルは、
/var/lib/pki/instance_name/ca/conf/caCert.profile
です。このプロファイルは、pkiconsole で編集することはできません (インスタンスを設定する前のみ利用可能)。テキストエディターで CA を設定する前に、テンプレートファイルでこのプロファイルのポリシーを編集することができます。
CA が使用する CA 署名証明書プロファイルでデフォルトを変更するには、以下を実行します。
- プロファイルが有効になっている場合は、編集する前に無効にする必要があります。エージェントサービスページを開き、左側のナビゲーションメニューから Manage Certificate Profile を選択してプロファイルを選択し、Disable profile をクリックします。
- CA コンソールを開きます。
pkiconsole https://server.example.com:8443/ca
- Configuration タブの左側のナビゲーションツリーで、Certificate Manager を選択し、Certificate Profiles を選択します。
- 右側のウィンドウから caCACert または該当する CA 署名証明書プロファイルを選択して、Edit/View をクリックします。
- Certificate Profile Rule Editor の Policies タブで、キー使用法または拡張キー使用法拡張機能のデフォルトが存在する場合はそれを選択して編集するか、プロファイルに追加します。
- 必要に応じて、デフォルトとして、Key Usage または Extended Key Usage Extension Constraint を選択します。
- CA 証明書のデフォルト値を設定します。詳細は、「Key Usage 拡張機能のデフォルト」および「Extended Key Usage 拡張機能のデフォルト」を参照してください。
- CA 証明書の制約値を設定します。キー使用拡張に設定する制約はありません。拡張キーの使用の拡張機能の場合は、CA に適切な OID 制約を設定します。詳細は、「Extended Key Usage 拡張機能のデフォルト」 を参照してください。
- プロファイルに変更を加えたら、エージェントサービスページを再度ログインして、証明書プロファイルを再度有効にします。
証明書プロファイルの変更の詳細は、「証明書プロファイルの設定」 を参照してください。
3.6.2. 証明書の発行における CA の制限の変更
発行された証明書の制限は、サブシステムの設定後にデフォルトで設定されます。これには、以下が含まれます。
- CA 署名証明書よりも長い有効期間で証明書を発行できるかどうか。デフォルトでは、これを無効にします。
- 証明書の署名に使用される署名アルゴリズム。
- CA が証明書を発行するために使用するシリアル番号の範囲。
下位 CA には、有効期間、証明書の種類、および発行可能な拡張の種類に制約があります。下位 CA はこれらの制約に違反する証明書を発行できますが、これらの制約に違反する証明書を認証するクライアントはその証明書を受け入れません。下位 CA の発行ルールを変更する前に、CA 署名証明書に設定された制約を確認してください。
証明書の発行ルールを変更するには、次のコマンドを実行します。
- 証明書システムコンソールの起動
pkiconsole https://server.example.com:8443/ca
- Configuration タブの左側のナビゲーションツリーで、Certificate Manager アイテムを選択します。
図3.1 デフォルトでは、非従属 CA の一般設定タブ
- デフォルトでは、クローン以外の CA では、Certificate Manager メニュー項目の General Settings タブに以下のオプションが含まれます。
- Override validity nesting requirement。このチェックボックスでは、Certificate Manager が、CA 署名の証明書有効期間よりも長い有効期間の証明書を発行できるかどうかを設定します。このチェックボックスを選択しておらず、CA が CA 署名証明書の有効期間よりも長い期間要求を受け取ると、CA 署名証明書の期限が切れる時点で自動的に終了するように有効期間が切り捨てられます。
- Certificate Serial Number。これらのフィールドは、Certificate Manager が発行する証明書のシリアル番号の範囲を表示します。サーバーは、Next serial number を、次に発行する証明書に割り当て、Ending serial number を、最後に発行した証明書に割り当てます。シリアル番号の範囲により、複数の CA をデプロイでき、各 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.ldap=internaldb dbs.newSchemaEntryAdded=true dbs.replicaCloneTransferNumber=5
シリアル番号管理は、クローンされていない CA に対して有効にできます。 ただし、デフォルトでは、システムが自動的に有効になった場合にシステムのクローンが作成されない限り、シリアル番号の管理が無効になります。シリアル番号の範囲は、コンソールで手動で更新することはできません。シリアル番号の範囲は読み取り専用フィールドです。 - 署名アルゴリズムのデフォルト。Certificate Manager が証明書の署名に使用する署名アルゴリズムを指定します。このオプションは、CA の署名鍵タイプが RSA の場合は、SHA256withRSA および SHA512withRSA です。証明書プロファイル設定に指定された署名アルゴリズムは、ここに設定されたアルゴリズムよりも優先されます。
- デフォルトでは、クローン作成された CA では、Certificate Manager メニュー項目の General Settings タブに以下のオプションが含まれます。
- ランダムなシリアル番号管理
- Enable random certificate serial numbers
両方のチェックボックスを選択します。図3.2 デフォルトでクローン作成された CA の General Settings タブ
- Save をクリックします。
3.6.3. ランダム証明書のシリアル番号の使用
Red Hat Certificate System には、要求、証明書、レプリカ ID に対するシリアル番号の範囲管理が含まれています。これにより、
Identity Management
(IdM) インストール時のクローン作成を自動化できます。
ハッシュベースの攻撃の可能性が低くなるには、以下の方法を使用できます。
- 攻撃者に予測できない証明書のシリアル番号の一部にする
- ランダムに選択されたコンポーネントを ID に追加する
- それぞれを前後に歪めることにより、攻撃者が有効期限を予測できないようにする
ランダムな証明書のシリアル番号割り当て 方法は、無作為に選択されたコンポーネントを ID に追加します。この方法は以下の通りです。
- クローン作成で機能
- 競合の解決を許可する
- 現在のシリアル番号管理方法との互換性がある
- 管理者、エージェント、およびエンドエンティティーの現在のワークフローと互換性がある
- 連続するシリアル番号管理で既存のバグを修正。
備考
管理者は、証明書のシリアル番号を有効にする必要があります。
3.6.3.1. ランダム証明書のシリアル番号の有効化
コマンドラインまたはコンソール UI から自動シリアル番号範囲管理を有効にすることができます。
コンソール UI から自動シリアル番号管理を有効にするには、以下を行います。
- General Settings タブで、Enable serial number management オプションを選択します。
図3.3 乱数の割り当てが有効な場合の General Settings タブ
- Enable random certificate serial numbers オプションをオンにします。
3.6.4. 認証局の有効期間を過ぎた認証局証明書の更新の許可
通常、証明書は、発行先の CA 証明書の有効期限 後 に終わる有効期間では発行できません。CA 証明書の有効期限が 2015 年 12 月 31 日である場合、証明書はすべて 2015 年 12 月 31 日または 2015 年 12 月 31 日より前に有効期限が切れる必要があります。
このルールは、CA が発行する他の CA 署名証明書に適用されます。これにより、ルート CA 証明書はほとんど更新できなくなります。CA 署名証明書を更新するということは、それ自体の有効期限を過ぎた有効期間が必ず必要になることを意味します。
この動作は CA Validity Default を使用して変更できます。このデフォルト設定では、発行している CA の有効期限 (notAfter) の期間を拡張する有効期間で CA 証明書を発行できる設定 (bypassCAnotafter) が許可されます。
図3.4 CA 有効性のデフォルト設定
実際のデプロイメントでは、これが意味するのは、ルート CA の CA 証明書は、他の方法では防止できる場合でも更新できるということです。
元の CA の有効期間前に CA 証明書の更新を有効にするには、以下を実行します。
caCACert.cfg
ファイルを開きます。vim /var/lib/pki/instance_name/ca/conf/caCACert.cfg
- CA Validity デフォルトはデフォルトで存在する必要があります。値を true に設定して、発行 CA の有効期間を過ぎて CA 証明書を更新できるようにします。
policyset.caCertSet.2.default.name=CA Certificate Validity Default policyset.caCertSet.2.default.params.range=2922 policyset.caCertSet.2.default.params.startTime=0
policyset.caCertSet.2.default.params.bypassCAnotafter=true
- CA を再起動して変更を適用します。
エージェントが更新要求を確認すると、通常の有効期間制約をバイパスすることを可能にする Extensions/Fields エリアにオプションがあります。エージェントが false を選択すると、プロファイルで bypassCAnotafter=true が設定されていても制約が適用されます。bypassCAnotafter 値が有効になっていない時にエージェントが true を選択すると、更新要求は CA によって拒否されます。
図3.5 エージェントサービスページの CA 制約オプションを回避
注記
CA Validity のデフォルトは、CA 署名の証明書の更新にのみ適用されます。その他の証明書は、引き続き CA の有効期間内で発行および更新する必要があります。
CA の ca.enablePastCATime の個別の設定を使用すると、CA の有効期間を過去に証明書を更新することができます。ただし、これは、その CA が発行する すべて の証明書に適用されます。セキュリティーの問題が発生する可能性があるため、実稼働環境でこの設定は推奨されません。