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 証明書を送信する必要があります。証明書チェーンが適切に証明書を有効にするには、以下のプロパティーが必要です。
証明書とその拡張の詳細は、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 -d nssdb -n 'optional client cert nickname' https://server.example.com:8443/ca
注記pkiconsole
は非推奨となり、今後のメジャーリリースで新しいブラウザーベースの UI に置き換えられます。pkiconsole
は代替 UI がリリースされるまで引き続き使用できますが、今後新しいブラウザーベースの UI が使用可能になった場合でも pki CLI のサポートおよび改良は継続されるため、現時点ではpkiconsole
に相当するコマンドラインの使用が推奨されます。- 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 署名証明書に設定された制約を確認してください。
証明書の発行ルールを変更するには、次のコマンドを実行します。
Certificate System コンソールの起動
# pkiconsole -d nssdb -n 'optional client cert nickname' https://server.example.com:8443/ca
注記pkiconsole
は非推奨となり、今後のメジャーリリースで新しいブラウザーベースの UI に置き換えられます。pkiconsole
は代替 UI がリリースされるまで引き続き使用できますが、今後新しいブラウザーベースの UI が使用可能になった場合でも pki CLI のサポートおよび改良は継続されるため、現時点ではpkiconsole
に相当するコマンドラインの使用が推奨されます。Configuration タブの左側のナビゲーションツリーで、Certificate Manager アイテムを選択します。
図3.1 非従属 CA におけるデフォルトの General Settings タブ
非複製 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 に対して有効にできます。ただし、デフォルトでは、システムが自動的に有効になった場合にシステムのクローンが作成されない限り、シリアル番号の管理が無効になります。
シリアル番号の範囲は、コンソールで手動で更新することはできません。シリアル番号の範囲は読み取り専用フィールドです。
Default Signing Algorithm。Certificate Manager が証明書の署名に使用する署名アルゴリズムを指定します。CA の署名鍵タイプが RSA の場合、オプションは
SHA256withRSA
とSHA512withRSA
です。証明書プロファイル設定に指定された署名アルゴリズムは、ここに設定されたアルゴリズムよりも優先されます。
複製 CA の場合、Certificate Manager メニュー項目の General Settings タブにはデフォルトで以下のオプションが含まれます。
- Enable serial number management
Enable random certificate serial numbers
両方のチェックボックスを選択します。
図3.2 複製 CA のデフォルトの General Settings タブ
- Save をクリックします。
3.6.3. ランダムな証明書シリアル番号の使用
Red Hat Certificate System には、要求、証明書、レプリカ ID に対するシリアル番号の範囲管理が含まれています。これにより、Identity Management
(IdM) インストール時のクローン作成を自動化できます。
ハッシュベースの攻撃の可能性が低くなるには、以下の方法を使用できます。
- 攻撃者に予測できない証明書のシリアル番号の一部にする
- ランダムに選択されたコンポーネントを ID に追加する
- それぞれを前後に歪めることにより、攻撃者が有効期限を予測できないようにする
ランダムな証明書シリアル番号の割り当て 方法では、無作為に選択されたコンポーネントが ID に追加されます。この方法には以下があてはまります。
- クローン作成で機能する
- 競合の解決を許可する
- 現在のシリアル番号管理方法との互換性がある
- 管理者、エージェント、およびエンドエンティティーの現在のワークフローと互換性がある
- 連続するシリアル番号管理で既存のバグを修正する
管理者は、証明書のシリアル番号を有効にする必要があります。
ランダムな証明書シリアル番号の有効化
コマンドラインまたはコンソール UI から自動シリアル番号範囲管理を有効にすることができます。
コンソール UI から自動シリアル番号管理を有効にするには、以下を行います。
General Settings タブで、Enable serial number management オプションを選択します。
図3.3 ランダムなシリアル番号の割り当てが有効な場合の General Settings タブ
- Enable random certificate serial numbers オプションをオンにします。