検索

Planning, Installation, and Deployment Guide (Common Criteria Edition)

download PDF
Red Hat Certificate System 9

Red Hat Certificate System 9.4 Common Criteria 認定の更新

9.4-1 エディッション

Red Hat

Customer Content Services
February 2021

概要

本ガイドでは、Common Criteria 環境で Red Hat Certificate System 9.4 の理解、インストール、および設定に関するドキュメントが含まれています。

パート I. Red Hat Certificate System と導入計画の概要

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

第1章 このガイダンス文書について

このガイドには、Red Hat Certificate System の理解、インストール、および設定に関するドキュメントが含まれています。これは、次の部分で設定されています。
注記
Red Hat Certificate System に精通していない管理者は、RHCS を十分に理解するために、パートI「Red Hat Certificate System と導入計画の概要」 を一読することを強くお勧めします。パート II に従ってインストールする前に、事前に計画を立ててください。
2章Red Hat Certificate System の概要 は、証明書システムのいくつかの異なる部分のトピックの概要を提供します。4章サポート対象のプラットフォーム は、さまざまなコンポーネントと、Red Hat がサポートするそれらのバージョンを一覧表示します。5章証明書システムの計画 には、Red Hat Certificate System のインストールを計画する際に役立つ情報が含まれています。
準拠対応する規格やプロトコルの一覧は、3章許可された規格とプロトコル を参照してください。
準拠した方法で Red Hat Certificate System をインストールするには、次の手順に従います。パートII「Red Hat Certificate System のインストール」6章インストールの前提条件および準備 から始めて、ベースとなるオペレーティングシステムを準備します。pkispawn ユーティリティーを使用したインストール」 に従ってください。その後、「インストール後のタスク」 にある必要なインストール後の手順に従って、インストールが完全に適合していることを確認します。この最後のセクションでは、完全に準拠するために実行する手順を説明するガイドの関連部分にリンクしています。
重要
pkispawn フェーズ( pkispawn ユーティリティーを使用したインストール」で説明)でインストールが失敗した場合は、設定を慎重にチェックして、エラーログを参照することが推奨されます。pkispawn ユーティリティーを再実行してインストールを再試行する前に、古いインスタンスを完全に削除する必要があります。サブシステムの削除については、16章サブシステムの削除 を参照してください。
サポートされ、準拠している設定オプションの完全なリストについては、次を参照してください。パートIII「Certificate System の設定」この部分は、インストールが完了した後にのみ実行できます。

第2章 Red Hat Certificate System の概要

注記
この章では、システムの概要について説明します。評価済みの製品機能の詳細については、NIAP 製品準拠リストを参照してください。https://www.niap-ccevs.org/Product/PCL.cfm
証明書の発行、更新、取り消しなど、すべての一般的な 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 Installation Guideを参照してください。

2.2.2.2. PKI パッケージ

Red Hat Certificate System は、以下のパッケージで設定されています。
  • 以下のベースパッケージは Certificate System のコアを形成し、ベースの Red Hat Enterprise Linux リポジトリーで利用できます。
    • pki-core.el7
      • pki-base
      • pki-base-java
      • pki-ca
      • pki-javadoc
      • pki-kra
      • pki-server
      • pki-symkey
      • pki-tools
  • 以下に記載するパッケージは、ベースの Red Hat Enterprise Linux サブスクリプションチャンネルでは利用 できません。これらのパッケージをインストールするには、最初に Subscription Manager を使用して Red Hat Certificate System サブスクリプションプールを割り当て、RHCS9 リポジトリーを有効にする必要があります。手順については、Red Hat Enterprise Linux 7 システム管理者ガイドの Subscription Manager の章を参照してください。
    • pki-console.el7pki
      • pki-console
    • pki-core.el7pki
      • pki-ocsp
      • pki-tks
      • pki-tps
    • redhat-pki.el7pki
      • redhat-pki
    • redhat-pki-theme.el7pki
      • redhat-pki-console-theme
      • redhat-pki-server-theme
Red Hat Enterprise Linux 7.5 以降のシステムを使用 (必要に応じて 4章サポート対象のプラットフォーム に記載されているサポート対象のハードウェアセキュリティーモジュールで設定されているものを使用) して、Red Hat Certificate System をインストールする前に、すべてのパッケージが最新の状態であることを確認します。
すべての Certificate System パッケージをインストールするには( pki-javadocを除く)、Yum を使用して redhat-pki メタパッケージをインストールします。
# yum install redhat-pki
必要に応じて 1 つ以上の最上位の PKI サブシステムパッケージをインストールしてください。実際のパッケージ名については、上記の一覧を参照してください。このアプローチを使用する場合は、必ず redhat-pki-server-theme パッケージもインストールし、必要に応じて redhat-pki-console-theme および pki-console で PKI コンソールを使用するようにしてください。
最後に、開発者および管理者は JSS および PKI javadoc (jss-javadoc および pki-javadoc) をインストールすることもできます。
注記
jss-javadoc パッケージには、Subscription Manager で Server-Optional リポジトリーを有効にする必要があります。

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

pkispawn コマンドラインツールを使用して、新しい PKI インスタンスをインストールおよび設定します。これにより、個別のインストールおよび設定手順が不要になるため、バッチプロセスとして実行する必要があります。このユーティリティーは、ブラウザーベースのグラフィカルインターフェイスをインストールまたは設定する方法を提供していません。
使用方法は、pkispawn --help コマンドを使用します。
pkispawn コマンド:
  1. プレーンテキスト設定ファイル(/etc/pki/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 ページを参照してください。
デフォルトの設定ファイル /etc/pki/default.cfg は、上記のプロセスの開始時に読み込まれるデフォルトのインストールおよび設定値を含むプレーンテキストファイルです。これは、[DEFAULT ]、[ Tomcat]、[ CA ]、[KRA]、[ KRA]、[ OCSP ]、[ TKS ] セクション、および [TPS] セクションに分割された name=value ペアで設定されます。
pkispawn-s オプションを使用してサブシステム名を指定すると、そのサブシステムのセクションのみが読み込まれます。
セクションには階層があります。サブシステムセクションで指定した name=value ペアは、[Tomcat] セクションのペアを上書きし、[DEFAULT] セクションのペアを上書きします。デフォルトのペアは、指定された PKI インスタンス設定ファイル内のペアによってさらにオーバーライドできます。
注記
pkispawn 設定ファイルを使用してデフォルトの name=value ペアを上書きする場合は常に、任意の場所に保存され、いつでも指定できます。これらのファイルは、pkispawn の man ページで myconfig.txt と呼ばれますが、通常は .ini ファイルとも呼ばれます。または、通常は PKI インスタンス設定のオーバーライドファイルと呼ばれます。
詳細は、pki_default.cfg の man ページを参照してください。
設定サーブレット は、com/netscape/certsrv/system/ConfigurationRequest.class として /usr/share/java/pki/pki-certsrv.jar に保存されている Java バイトコードで設定されます。サーブレットは、pkispawn を使用して設定スクリプトレットから JSON オブジェクトとして渡されるデータを処理し、com/netscape/certsrv/system/ConfigurationResponse.class と同じファイルで提供される Java バイトコードを使用して pkispawn に戻ります。
対話型インストールの例では、root としてコマンドラインで pkispawn コマンドを実行するだけです。
# pkispawn
重要
pkispawn(8) の man ページに記載されている対話型のインストール方法は、Common Criteria 環境ではサポートされていません。
非対話的なインストールでは、PKI インスタンス設定の上書きファイルが必要ですが、プロセスは以下の例のようになります。
  1. # 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 インスタンスを削除します。詳細は、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.

2.2.3. 実行管理 (systemctl)

2.2.3.1. 起動、停止、再起動、およびステータスの取得

Red Hat Certificate System サブシステムインスタンスは、Red Hat Enterprise Linux 7 で 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

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

Red Hat Enterprise Linux 7 の systemctl ユーティリティーは、サーバー上の各プロセスの自動起動およびシャットダウン設定を管理します。これは、システムが再起動すると、一部のサービスを自動的に再起動できることを意味します。システムユニットファイルは、サービスの起動を制御し、サービスが正しい順序で起動されるようにします。systemd サービスおよび systemctl ユーティリティーについては、Red Hat Enterprise Linux System Administrator's Guideで説明されています。
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
コマンドにはサブコマンドがあります。それらを一覧表示するには、コマンド名を指定し、追加オプションを指定せずに CLI を実行します。以下に例を示します。
$ 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 サービスページには、利用可能なサービスページの一覧があります。これらは、表2.1「デフォルトの 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 サービスページ
Port TLS に使用 クライアント認証に使用[a] Web サービス Web サービスの場所
Certificate Manager     
8080 いいえ エンドエンティティー ca/ee/ca
8443 はい いいえ エンドエンティティー ca/ee/ca
8443 はい はい エージェント ca/agent/ca
8443 はい いいえ サービス ca/services
8443 はい いいえ コンソール pkiconsole https://host:port/ca
キーリカバリー認証局     
8080 いいえ エンドエンティティー[b] kra/ee/kra
8443 はい いいえ エンドエンティティー[b] kra/ee/kra
8443 はい はい エージェント kra/agent/kra
8443 はい いいえ サービス kra/services
8443 はい いいえ コンソール pkiconsole https://host:port/kra
オンライン証明書ステータスマネージャー     
8080 いいえ エンドエンティティー[c] ocsp/ee/ocsp
8443 はい いいえ エンドエンティティー[c] ocsp/ee/ocsp
8443 はい はい エージェント ocsp/agent/ocsp
8443 はい いいえ サービス ocsp/services
8443 はい いいえ コンソール pkiconsole https://host:port/ocsp
トークンキーサービス     
8080 いいえ エンドエンティティー[b] tks/ee/tks
8443 はい いいえ エンドエンティティー[b] 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 サービス [d] tps/ui
[a] クライアント認証値が No のサービスは、クライアント認証を要求するように再設定できます。Yes または No のいずれかの値を持たないサービスは、クライアント認証を使用するように設定することはできません。
[b] このサブシステムタイプにはエンドエンティティーポートとインターフェイスがありますが、他のエンドエンティティーサービスとは異なり、これらのエンドエンティティーサービスには Web ブラウザーからはアクセスできません。
[c] OCSP にはエンドエンティティーポートおよびインターフェイスがありますが、他のエンドクリティーサービスも Web ブラウザーを介してアクセスすることはできません。エンドユーザー OCSP サービスには、OCSP 要求を送信するクライアントがアクセスします。
[d] エージェント、管理者、および Operator サービスはすべて、同じ Web サービスページを介してアクセスされます。各ロールは、そのロールのメンバーにのみ表示される特定のセクションにのみアクセスできます。

2.2.4.5. 証明書システムコンソールの起動

CA、KRA、OCSP、および TKS サブシステムには、管理機能を実行するための Java インターフェイスがあります。KRA、OCSP、および TKS では、ユーザーおよびグループのログ設定や管理など、非常に基本的なタスクが含まれます。CA の場合は、証明書プロファイルの作成や公開の設定など、その他の設定が含まれます。
pkiconsole ユーティリティーを使用して TLS ポート経由でサブシステムインスタンスに接続すると、コンソールが開きます。このユーティリティーは、以下の形式を使用します。
pkiconsole https://server.example.com:admin_port/subsystem_type
subsystem_type は、cakraocsp、または 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. 証明書システムのアーキテクチャーの概要

それぞれのサービスが異なるサービスを提供しますが、すべての RHCS サブシステム (CA、KRA、OCSP、TKS、TPS) が共通のアーキテクチャーを共有します。

2.3.1. Java Application Server

Java アプリケーションサーバーは、サーバーアプリケーションを実行する Java フレームワークです。Certificate System は、Java アプリケーションサーバー内で実行されるように作られています。現在、サポートされている唯一の Java アプリケーションサーバーは Tomcat 8 です。他のアプリケーションサーバーのサポートは今後追加される可能性があります。詳細は、http://tomcat.apache.org/ を参照してください。
Certificate System の各インスタンスは Tomcat サーバーインスタンスです。Tomcat 設定は server.xml に保存されます。https://tomcat.apache.org/tomcat-8.0-doc/config/ では、Tomcat 設定の詳細情報が提供されています。
各 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

Java サービスには、アプリケーションを実行するための安全でない操作と安全な操作を定義する Security Manager オプションがあります。サブシステムがインストールされると、Security Manager が自動的に有効になります。つまり、各 Tomcat インスタンスは Security Manager が実行されている状態で起動します。
pkispawn を実行し、独自の Tomcat セクションで pki_security_manager=false オプションを指定するオーバーライド設定ファイルを使用すると、Security Manager が無効になります。
以下の手順に従って、インストールされたインスタンスから Security Manager を無効にすることができます。
  1. # systemctl stop pki-tomcatd@instance_name.service
    または
    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
    ( nuxwdog ウォッチドッグを使用する場合)
  2. /etc/sysconfig/instance_name ファイルを開き、SECURITY_MANAGER="false"を設定します。
  3. # systemctl start pki-tomcatd@instance_name.service
    または
    # systemctl start pki-tomcatd-nuxwdog@instance_name.service
    ( nuxwdog ウォッチドッグを使用する場合)
インスタンスが起動または再起動すると、Java セキュリティーポリシーは、以下のファイルから pkidaemon により構築または再構築されます。
/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.2.1. Java Security Manager でのサブシステムの実行

Java サービスには、アプリケーションを実行するための安全でない操作と安全な操作を定義する Security Manager オプションがあります。サブシステムがインストールされると、Security Manager が自動的に有効になります。つまり、各 Tomcat インスタンスは Security Manager が実行されている状態で起動します。
2.3.2.1.1. Security Manager ポリシーファイルについて
5 つの Java サブシステム (CA、OCSP、KRA、TKS、および TPS) が Java Security Manager 内で実行されると、以下の 3 つのポリシーの組み合わせを使用します。
  • /usr/share/tomcat/conf ディレクトリーにあるデフォルトの Tomcat ポリシーからの catalina.policy ファイル。これは、一般的な Tomcat ファイルが更新されるたびに更新されます。
  • サブシステムインスタンスで提供される /var/lib/pki/instance_name/conf ディレクトリーの pki.policy ファイル。
  • ユーザー定義のセキュリティーポリシーを含む /var/lib/pki/instance_name/conf ディレクトリーの custom.policy ファイル。
これらの 3 つのファイルは、Tomcat サービスが修正した catalina.policy ファイルの作成を開始するたびに連結されます。また、インスタンスに使用される /var/lib/pki/instance_name/conf ディレクトリーにも連結されます。
デフォルトの pki.policy ファイルには、PKI サブシステムが使用する Tomcat、LDAP、およびシンボリックリンクサービスへの無制限のアクセスを付与するパーミッションが含まれます。以下に例を示します。
   // These permissions apply to Tomcat java as utilized by PKI instances
	 grant codeBase "file:/usr/share/java/tomcat/-" {
       permission java.security.AllPermission;
   };
この custom.policy ファイルはデフォルトでは空になっています。管理者は、指定の PKI ポリシーおよび Tomcat ポリシーに加えて、このファイルでポリシーを作成することができます。
2.3.2.1.2. Java Security Manager を使用しないサブシステムインスタンスの起動
PKI Tomcat インスタンスで設定されたすべての Java サブシステムは、Java Security Manager で自動的に実行されます (インスタンスが、/etc/pki/default.cfg ファイルの [Tomcat] セクションの下の pki_security_manager=true をオーバーライドすることによって作成された場合を除く)。ただし、以下のように、インスタンスを起動または再起動して、Java Security Manager を起動 せず に実行することができます。

手順2.1 Java Security Manager を使用しないインスタンスの起動

  1. インスタンスを停止します。
    # systemctl stop pki-tomcatd@instance_name.service
    または
    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service (if using the nuxwdog watchdog)
  2. /etc/sysconfig/instance_name ファイルを編集し、セキュリティーマネージャーをオフにします。
    SECURITY_MANAGER="false"
  3. インスタンスを起動します。
    # systemctl start pki-tomcatd@instance_name.service
    または
    systemctl start pki-tomcatd-nuxwdog@instance_name.service (if using the nuxwdog watchdog)

2.3.3. インターフェイス

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

各サブシステムには、サブシステムのさまざまな部分との対話を可能にするインターフェイスが含まれています。すべてのサブシステムが共通の管理インターフェイスを共有し、エージェントに割り当てられたタスクを実行するエージェントインターフェイスがあります。CA サブシステムには、エンドエンティティーを PKI に登録することができるエンドエンティティーのインターフェイスがあります。OCSP Responder サブシステムには、エンドエンティティーとアプリケーションが現在の証明書失効ステータスをチェックできるエンドエンティティーのインターフェイスがあります。最後に、TPS には Operator インターフェイスがあります。
アプリケーションサーバーは接続エントリーポイントを提供しますが、Certificate System は各インターフェイスに固有のサーブレットを提供してインターフェイスを完了します。
各サブシステムのサーブレットは、対応する web.xml ファイル( /usr/share/pki/ca/webapps/ca/WEB-INF/web.xml )で定義されます。同じファイルは各サーブレットの URL と、サーブレットにアクセスするセキュリティー要件も定義します。詳細は、「Java Application Server」を参照してください。

2.3.3.2. 管理インターフェイス

エージェントインターフェイスは、エージェントのエントリーポイントからの HTML フォームの送信を処理する Java サーブレットを提供します。エージェントサーブレットは、各フォーム送信で提供された情報に基づいて、証明書の承認、証明書の更新、証明書の失効の要求の編集と承認、証明書プロファイルの承認などのエージェントタスクを実行できるようにします。KRA サブシステム、TKS サブシステム、OCSP Responder、または TPS サブシステムのエージェントインターフェイスは、サブシステムに固有です。
非 TMS セットアップでは、エージェントインターフェイスは、CA から KRA への信頼できる接続の CIMC 間境界通信にも使用されます。この接続は TLS クライアント認証によって保護され、Trusted Manager と呼ばれる信頼されている個別のロールによって区別されます。エージェントロールと同様、Trusted Manager (CIMC 間境界接続専用に作成された疑似ユーザー) は、TLS クライアント認証を受ける必要があります。ただし、エージェントのロールとは異なり、エージェント機能は提供されません。
TMS 設定では、CIMC 間境界通信は、TPS から CA、TPS から KRA、および TPS から TKS に送信されます。

2.3.3.3. エンドエンティティーインターフェイス

CA サブシステムでは、エンドエンティティーのインターフェイスは、エンドエンティティーエントリーポイントからの HTML フォームの送信を処理する Java サーブレットを提供します。フォーム送信から受け取った情報に基づいて、エンドエンティティーサーブレットは、エンドエンティティーが発行された証明書を取得したり、CA 証明書チェーンをインポートしたり、証明書失効リスト (CRL) をダウンロードしたりできるようにします。OCSP Responder サブシステムの End-Entity インターフェイスは、OCSP リクエストを許可および処理するための Java サーブレットを提供します。KRA、TKS、および TPS サブシステムは、End-Entity サービスを提供しません。

2.3.3.4. Operator インターフェイス

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

2.3.4. REST インターフェイス

Hitsal 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& gt; : &lt;port> /ca/rest/certs/
  • KRA キーサービス : http:// &lt;host_name&gt; : &lt;port> /kra/rest/agent/keys/
  • TKS ユーザーサービス : http:// &lt;host_name&gt; : &lt;port> /tks/rest/admin/users/
  • TPS グループサービス : http:// &lt;host_name&gt; : &lt;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. NSS

Network Security Services (NSS) は、セキュリティー対応通信アプリケーションのクロスプラットフォーム開発をサポートするために設計された一連のライブラリーです。NSS ライブラリーで構築されたアプリケーションは、認証、改ざん検出、および暗号化のための TLS プロトコルと、暗号化トークンインターフェイスのための PKCS #11 インターフェイスをサポートします。Red Hat は NSS を使用して、Certificate System を含む幅広い製品でこれらの機能をサポートしています。NSS の詳細は、次を参照してください。http://www.mozilla.org/projects/security/pki/nss/overview.html

2.3.6. 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.7. Tomcatjss

Red Hat Certificate System の Java ベースのサブシステムは、tomcatjss と呼ばれる単一の JAR ファイルを Tomcat Server HTTP エンジンと JSS 間のブリッジとして使用します。これは、NSS が実行するセキュリティー操作の Java インターフェイスです。to mcatjss は、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.8. 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 モジュールの各スロットには、トークンを追加できます。このトークンは、暗号化サービスを実際に提供し、必要に応じて証明書と鍵を保存するハードウェアまたはソフトウェアのデバイスです。
Certificate System は、内部外部 の 2 種類のトークンを定義します。内部トークンは、証明書トラストアンカーを保存するために使用されます。外部トークンは、Certificate System サブシステムに属するキーペアと証明書を保存するために使用されます。

2.3.8.1. NSS Soft Token (内部トークン)

注記
Certificate System は、証明書のトラストアンカーを保存する NSS ソフトトークンを使用します。
NSS Soft トークンは、内部トークンまたはソフトウェアトークンとも呼ばれます。ソフトウェアトークンは 2 つのファイルで設定されており、通常は証明書データベース (cert8.db) とキーデータベース (key3.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 ソフトトークンに証明書をインポートする方法の具体的な手順は、10章証明書/キー暗号トークンの管理を参照してください。
Network Security Services (NSS) の詳細は、同じ名前の Mozilla Developer の Web ページを参照してください。

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

注記
Certificate System は、HSM を使用して、Certificate System サブシステムに属する鍵のペアと証明書を格納します。
PKCS #11 モジュールは、Certificate System で使用できます。サブシステムで外部ハードウェアトークンを使用するには、サブシステムの設定前に PKCS #11 モジュールを読み込み、新しいトークンをサブシステムで利用できるようになります。
利用可能な PKCS #11 モジュールは、サブシステムの secmod.db データベースで追跡されます。modutil ユーティリティーは、署名操作に使用するハードウェアアクセラレーターのインストールなど、システムへの変更時にこのファイルを変更するために使用されます。modutil の詳細は、Mozilla Developer の Web ページで Network Security Services (NSS)を参照してください。
PKCS #11 ハードウェアデバイスは、ハードウェアトークンに保存されている情報に、主要なバックアップと復旧機能を提供します。トークンから鍵を取得する方法は、PKCS #11 ベンダーのドキュメントを参照してください。
証明書のインポートおよび HSM の管理方法の方法は、10章証明書/キー暗号トークンの管理を参照してください。
サポート対象のハードウェアセキュリティーモジュールは、「サポート対象のハードウェアセキュリティーモジュール」に記載されています。

2.3.9. 証明書システムのシリアル番号管理

2.3.9.1. シリアル番号の範囲

証明書要求とシリアル番号は Java の大きな整数 で表されます。
デフォルトでは、効率性のために、証明書要求番号、証明書シリアル番号、およびレプリカ ID が CA サブシステムに順番に割り当てられます。
シリアル番号の範囲は、要求、証明書、およびレプリカ ID によって異なります。
  • 現在のシリアル番号管理は、連続したシリアル番号範囲の割り当てに基づいています。
  • インスタンスは、定義されたしきい値を下回る場合に新しい範囲を要求します。
  • インスタンスは、インスタンスに割り当てられたら、新たに取得した範囲に関する情報を保存します。
  • インスタンスは、すべての数字が使い切られるまで古い範囲を引き続き使用し、新しい範囲に移動します。
  • クローン作成されたサブシステムは、レプリケーションの競合を使用して範囲割り当てを同期します。
新しいクローンの場合
  • マスターの現在の範囲には、クローン作成のプロセスの新しいクローンに転送されます。
  • 転送範囲が定義されたしきい値を下回る場合に、新規クローンが新しい範囲を要求する可能性があります。
すべての範囲は CA インスタンスのインストール時に設定可能です。これは、PKI インスタンスの上書き設定ファイルに [CA] セクションを追加し、必要に応じて以下の name=value ペアをそのセクションに追記します。/etc/pki/default.cfg にすでに存在するデフォルト値を以下の例に示します。
[CA]
pki_serial_number_range_start=1
pki_serial_number_range_end=10000000
pki_request_number_range_start=1
pki_request_number_range_end=10000000
pki_replica_number_range_start=1
pki_replica_number_range_end=100

2.3.9.2. ランダムなシリアル番号管理

順次シリアル番号管理に加えて、Red Hat Certificate System は任意のランダムシリアル番号管理を提供します。乱数の使用は、PKI インスタンスの上書きファイルに [CA] セクションを追加し、そのセクションに次の name=value ペアを追加することにより、CA インスタンスのインストール時に選択できます。
[CA]
pki_random_serial_numbers_enable=True
このチェックボックスを選択した場合、証明書要求番号と証明書のシリアル番号は、指定した範囲内で無作為に選択されます。

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

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

2.3.11. パスワードおよびウォッチドッグ (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.12. 内部 LDAP データベース

Red Hat Certificate System は、証明書、要求、ユーザー、ロール、ACL、およびその他のさまざまな内部情報などの情報を格納するための内部データベースとして Red Hat Directory Server (RHDS) を採用しています。Certificate System インスタンスと Directory Server の間で TLS クライアント認証が必要です。したがって、これら 2 つのエンティティー間の信頼を確立するための指示に従うことが重要です。
このような Certificate System インスタンスのインストールにも、pkispawn の適切なオプションが必要です。
詳細は、「Red Hat Directory Server のインストール」 を参照してください。

2.3.13. SELinux (Security Enhanced Linux)

SELinux は、承認されていないアクセスと改ざんを制限するためにシステム全体で実施される、必須のアクセス制御ルールのコレクションです。SELinux の詳細は、Red Hat Enterprise Linux 7 SELinux ユーザーおよび管理者のガイド を参照してください。
基本的に、SELinux はシステム上の オブジェクト を識別します。これは、ファイル、ディレクトリー、ユーザー、プロセス、ソケット、または Linux ホスト上その他のリソースになります。これらのオブジェクトは Linux API オブジェクトに対応します。各オブジェクトは セキュリティーコンテキスト にマッピングされ、オブジェクトのタイプと、Linux サーバーでの機能が可能になります。
オブジェクトはドメインにグループ化でき、各ドメインには適切なルールが割り当てられます。各セキュリティーコンテキストには、実行できる操作、アクセスできるリソース、および所有するアクセス許可に制限を設定するルールがあります。
Certificate System の SELinux ポリシーは、標準のシステムの SELinux ポリシーに組み込まれています。これらの SELinux ポリシーは、Certificate System が使用するすべてのサブシステムとサービスに適用されます。SELinux で Certificate System を実行すると、Certificate System で作成および維持される情報のセキュリティーが強化されます。

図2.1 CA SELinux ポートポリシー

CA SELinux ポートポリシー
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.14. セルフテスト

Red Hat Certificate System は、起動時またはオンデマンド、あるいはその両方で PKI システムの整合性をチェックできるセルフテストフレームワークを提供します。クリティカルでない自己テストに失敗すると、メッセージはログファイルに保存されますが、重大なセルフテストに失敗すると、メッセージはログファイルに保存されますが、Certificate System サブシステムは適切にシャットダウンします。管理者は、起動時にセルフテストレポートを確認する場合、サブシステムの起動時にセルフテストログを監視する必要があります。起動後にログを表示することもできます。
セルフテストの失敗によりサブシステムがシャットダウンすると、自動的に無効になります。これは、サブシステムが部分的に実行されなくなり、誤解を招く応答を生成するために行われます。問題が解決されると、サーバーで以下のコマンドを実行してサブシステムを再度有効にできます。
# pki-server subsystem-enable <subsystem>
セルフテストの設定方法の詳細は、「セルフテストの設定」 を参照してください。

2.3.15. ログ

Certificate System サブシステムは、管理、サーバーがサポートするプロトコルを使用した通信、およびサブシステムで使用されるその他のさまざまなプロセスなどのアクティビティーに関連するイベントを記録するログファイルを作成します。サブシステムインスタンスが実行中に、それが管理するすべてのコンポーネントの情報およびエラーメッセージのログを保持します。また、Apache および Tomcat の Web サーバーはエラーを生成し、ログにアクセスします。
各サブシステムインスタンスは、インストール、監査、およびその他のログに記録された機能に対する独自のログファイルを維持します。
ログプラグインモジュールは、Java™ クラスとして実装され、設定フレームワークに登録されるリスナーです。
監査ログを除くすべてのログファイルとローテーションされたログファイルは、pkispawn によるインスタンスの作成時に、pki_subsystem_log_path に指定されているすべてのディレクトリーに配置されます。 通常の監査ログは他のログタイプとともにログディレクトリーに置かれ、署名された監査ログは /var/log/pki/instance_name/subsystem_name/signedAudit に書き込まれます。ログのデフォルトの場所を変更するには、設定を変更してください。
インストール中のログ設定の詳細および追加情報は、13章ログの設定を参照してください。
インストール後のログ管理の詳細は、『Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『サブシステムログの設定』 セクションを参照してください。

2.3.15.1. 監査ログ

監査ログには、記録可能なイベントとして設定された選択可能なイベントのレコードが含まれます。監査ログを整合性チェック目的で署名するように設定することもできます。
注記
監査レコードは、「監査の保持」 に指定された監査保持ルールに従って維持する必要があります。

2.3.15.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/2021:14:16:51 CDT] [11] [3] UGSubsystem: Get User Error User not found
このログはデフォルトで有効になっています。

2.3.15.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/2021: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.15.4. デバッグログ

デフォルトで有効になっているデバッグログは、さまざまな程度と種類の情報とともに、すべてのサブシステムに対して維持されます。
各サブシステムのデバッグログは、システム、トランザクション、およびアクセスログよりも詳細な情報を記録します。デバッグログには、実行されるプラグインとサーブレット、接続情報、サーバーの要求と応答のメッセージなど、サブシステムによって実行されるすべての操作に関する非常に具体的な情報が含まれています。
デバッグログに記録されるサービスには、承認要求、証明書要求の処理、証明書ステータスの確認、キーのアーカイブおよび復元、Web サービスへのアクセスが含まれます。
デバッグログは、サブシステムのプロセスの詳細情報を記録します。各ログエントリーの形式は以下のとおりです。
[date:time] [processor]: servlet: message
メッセージ はサブシステムから返されたメッセージになるか、サブシステムに送信された値を含めることができます。
たとえば、TKS は、LDAP サーバーに接続するためにこのメッセージを記録します。
[10/Jun/2021: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/2021: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/2021:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.profileapprovedby$ value=admin
[06/Jun/2021:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.cert_request$ value=MIIBozCCAZ8wggEFAgQqTfoHMIHHgAECpQ4wDDEKMAgGA1UEAxMBeKaBnzANBgkqhkiG9w0BAQEFAAOB...
[06/Jun/2021:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.profile$ value=true
[06/Jun/2021:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.cert_request_type$ value=crmf
[06/Jun/2021:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.requestversion$ value=1.0.0
[06/Jun/2021:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.req_locale$ value=en
[06/Jun/2021:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.requestowner$ value=KRA-server.example.com-8443
[06/Jun/2021:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.dbstatus$ value=NOT_UPDATED
[06/Jun/2021:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.subject$ value=uid=jsmith, e=jsmith@example.com
[06/Jun/2021:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.requeststatus$ value=begin
[06/Jun/2021: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/2021: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/2021:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.auth_token.authmgrinstname$ value=raCertAuth
[06/Jun/2021:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.auth_token.uid$ value=KRA-server.example.com-8443
[06/Jun/2021:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.auth_token.userid$ value=KRA-server.example.com-8443
[06/Jun/2021:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.requestor_name$ value=
[06/Jun/2021:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.profileid$ value=caUserCert
[06/Jun/2021: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/2021:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.requestid$ value=20
[06/Jun/2021:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.auth_token.authtime$ value=1212782378071
[06/Jun/2021: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/2021:06:25:40][http-11180-Processor25]: OCSPServlet: OCSP Request:
[07/Jul/2021:06:25:40][http-11180-Processor25]: OCSPServlet:
MEUwQwIBADA+MDwwOjAJBgUrDgMCGgUABBSEWjCarLE6/BiSiENSsV9kHjqB3QQU

2.3.15.5. インストールログ

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

例2.4 CA インストールログ

...
2015-07-22 20:43:13 pkispawn    : INFO     ... finalizing 'pki.server.deployment.scriptlets.finalization'
2015-07-22 20:43:13 pkispawn    : INFO     ....... cp -p /etc/sysconfig/pki/tomcat/pki-tomcat/ca/deployment.cfg /var/log/pki/pki-tomcat/ca/archive/spawn_deployment.cfg.20150722204136
2015-07-22 20:43:13 pkispawn    : DEBUG    ........... chmod 660 /var/log/pki/pki-tomcat/ca/archive/spawn_deployment.cfg.20150722204136
2015-07-22 20:43:13 pkispawn    : DEBUG    ........... chown 26445:26445 /var/log/pki/pki-tomcat/ca/archive/spawn_deployment.cfg.20150722204136
2015-07-22 20:43:13 pkispawn    : INFO     ....... generating manifest file called '/etc/sysconfig/pki/tomcat/pki-tomcat/ca/manifest'
2015-07-22 20:43:13 pkispawn    : INFO     ....... cp -p /etc/sysconfig/pki/tomcat/pki-tomcat/ca/manifest /var/log/pki/pki-tomcat/ca/archive/spawn_manifest.20150722204136
2015-07-22 20:43:13 pkispawn    : DEBUG    ........... chmod 660 /var/log/pki/pki-tomcat/ca/archive/spawn_manifest.20150722204136
2015-07-22 20:43:13 pkispawn    : DEBUG    ........... chown 26445:26445 /var/log/pki/pki-tomcat/ca/archive/spawn_manifest.20150722204136
2015-07-22 20:43:13 pkispawn    : INFO     ....... executing 'systemctl enable pki-tomcatd.target'
2015-07-22 20:43:13 pkispawn    : INFO     ....... executing 'systemctl daemon-reload'
2015-07-22 20:43:13 pkispawn    : INFO     ....... executing 'systemctl restart pki-tomcatd@pki-tomcat.service'
2015-07-22 20:43:14 pkispawn    : INFO     END spawning subsystem 'CA' of instance 'pki-tomcat'
2015-07-22 20:43:14 pkispawn    : DEBUG

2.3.15.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.15.7. セルフテストログ

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

2.3.15.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.16. インスタンスのレイアウト

各 Certificate System インスタンスは、多数のファイルによって異なります。その一部はインスタンス固有のフォルダーにありますが、他のサーバーインスタンスと共有される共通フォルダーに置かれています。
たとえば、サーバー設定ファイルは、インスタンス固有の /etc/pki/instance_name/server.xml に保存されますが、CA サーブレットは /usr/share/pki/ca/webapps/ca/WEB-INF/web.xml で定義されます。これは、システム上のすべてのサーバーインスタンスで共有されます。

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

Certificate System サーバーは、1 つ以上の Certificate System サブシステムで設定される Tomcat インスタンスです。Certificate System サブシステムは、特定の PKI 機能を提供する Web アプリケーションです。一般的な共有サブシステム情報は、再配置不可能な RPM 定義の共有ライブラリー、Java アーカイブファイル、バイナリー、およびテンプレートに含まれています。これらは固定された場所に保存されます。
ディレクトリーはインスタンスに固有のものでり、インスタンス名に関連付けられています。この例では、インスタンス名は pki-tomcat です。true の値は、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
サブシステム証明書
TLS サーバー証明書
サブシステム証明書[a]
ログファイル /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 ライブラリー
[a] サブシステム証明書はセキュリティードメインによって常に発行されるため、クライアント認証を必要とするドメインレベルの操作はこのサブシステム証明書をベースにします。
注記
/var/lib/pki/instance_name/conf/ ディレクトリーは、/etc/pki/instance_name/ ディレクトリーへのシンボリックリンクです。

2.3.16.2. CA サブシステム情報

ディレクトリーはインスタンスに固有のものでり、インスタンス名に関連付けられています。この例では、インスタンス名は pki-tomcat です。true の値は、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.16.3. KRA サブシステム情報

ディレクトリーはインスタンスに固有のものでり、インスタンス名に関連付けられています。この例では、インスタンス名は pki-tomcat です。true の値は、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.16.4. OCSP サブシステム情報

ディレクトリーはインスタンスに固有のものでり、インスタンス名に関連付けられています。この例では、インスタンス名は pki-tomcat です。true の値は、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.16.5. TKS サブシステム情報

ディレクトリーはインスタンスに固有のものでり、インスタンス名に関連付けられています。この例では、インスタンス名は pki-tomcat です。true の値は、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.16.6. TPS サブシステム情報

ディレクトリーはインスタンスに固有のものでり、インスタンス名に関連付けられています。この例では、インスタンス名は pki-tomcat です。true の値は、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.16.7. 共有 Certificate System サブシステムファイルの場所

表2.8「サブシステムファイルの場所」 に記載されている、一般的なサーバー操作のためにすべての Certificate System サブシステムインスタンスで使用されるディレクトリーまたは共通するディレクトリーがあります。
表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 はサブシステムで設定されており、各サブシステムが公開鍵インフラストラクチャーのさまざまな機能を提供します。PKI 環境は、サブシステムにさまざまな機能を実装することで、個々のニーズに合わせてカスタマイズできます。
注記
従来の PKI 環境は、ソフトウェアデータベースに保存されている証明書を管理する基本的なフレームワークを提供します。これは、スマートカードで証明書を管理しないため、TMS 以外 の環境です。TMS 環境では、スマートカードで証明書を管理します。
少なくとも、TMS 以外の環境では CA のみが必要ですが、TMS 以外の環境では OCSP レスポンダーと KRA インスタンスも使用できます。

2.4.1. 証明書の発行

通常、Certificate Manager は Certificate System の中核となります。リクエストから登録 (発行)、更新、失効まで、あらゆる段階で証明書を管理します。
Certificate System は、証明書の登録と発行、および Web ブラウザー、サーバー、仮想プライベートネットワーク (VPN) クライアントなどのさまざまなエンドエンティティーからの証明書要求の処理をサポートします。発行した証明書は X.509 バージョン 3 標準仕様に準拠します。証明書システムは、評価されたインターフェイスを介してのみ CMC 要求を処理するように設定する必要があります。

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

本セクションでは、コマンドラインを使用して証明書を登録する際の一般的なワークフローを説明します。
2.4.1.1.1. CMC を使用した登録
CMC に証明書を登録するには、次の手順に従います。
  1. certutilopensslPKCS10Client、または CRMFPopClient などのユーティリティーを使用して、PKCS #10 または CRMF 証明書署名要求(CSR)を生成します。詳細については、『Red Hat Certificate System 管理ガイドガイド (Common Criteria Edition)』 の 『証明書署名リクエストの作成』 のセクションを参照してください。
    注記
    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 応答で CMC ステータス制御を備えた PKCS #7 チェーンを受け取ります。
    ユーティリティーが提供するパラメーターの詳細は、パラメーターを指定せずに HttpClient コマンドを入力します。
  4. CMCResponse ユーティリティーを使用して、HttpClient によって生成された CMC 応答ファイルの発行結果を確認します。要求が正常に行われると、CMCResponse は証明書チェーンを読み取り可能な形式でステータス情報とともに表示します。
    詳細は、CMCResponse(1) の man ページをご覧ください。
  5. 新しい証明書をアプリケーションにインポートします。詳細は、証明書をインポートするアプリケーションの手順に従います。
    注記
    HttpClient によって取得された証明書は、PKCS #7 を含む CMC 応答形式です。アプリケーションが Base64 でエンコードされた証明書のみに対応している場合は、BtoA ユーティリティーを使用して証明書を変換します。
    また、一部のアプリケーションでは、PEM (Privacy Enhanced Mail) 形式の証明書にヘッダーとフッターが必要です。必要な場合は、証明書を変換した後に PEM ファイルに手動で追加します。
2.4.1.1.2. POP なしの CMC 登録
POP (Proof Of Possession)がない場合、HttpClient ユーティリティーは EncryptedPOP CMC ステータスを受け取ります。これは、CMCResponse コマンドで表示されます。この場合は、設定ファイルに異なるパラメーターを指定して CMCRequest コマンドを再度入力します。
詳細は、『Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『CMC 登録プロセス』 セクションを参照してください。
2.4.1.1.3. 署名付き CMC 要求
CMC 要求は、ユーザーまたは CA エージェントのいずれかによって署名できます。
  • エージェントが要求に署名する場合は、プロファイルの認証方法を CMCAuth に設定します。
  • ユーザーが要求に署名する場合は、プロファイルの認証方法を CMCUserSignedAuth に設定します。
詳細は、『Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『CMC 認証プラグイン』 のセクションを参照してください。
2.4.1.1.4. 署名なしの CMC 要求
CMCUserSignedAuth 認証プラグインがプロファイルで設定されている場合は、共有秘密認証メカニズムと組み合わせて署名されていない CMC 要求を使用する必要があります。
注記
署名のない要求は、自己署名 CMC 要求 とも呼ばれます。
詳細は、『Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『CMC 認証プラグイン』 および 『CMC 共有シークレット機能』 のセクションを参照してください。
2.4.1.1.5. 共有シークレットのワークフロー
Certificate System は、RFC 5272 に従って、CMC リクエストの共有シークレット認証メカニズムを提供します。パスフレーズを保護するには、CMCSharedToken コマンドの使用時に発行保護証明書を提供する必要があります。保証保護証明書は、KRA トランスポート証明書と同じように機能します。詳細は、CMCSharedToken(1) man ページおよび 『Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『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.6. 単純な 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 に再送信します。更新された証明書は、1 つの例外を除いて、元の証明書と同じです (同じプロファイルから同じキーマテリアルを使用して作成されたため)。有効期限は異なり、遅くなります。
更新された証明書は古い証明書とまったく同じように機能するため、更新により、証明書の管理とユーザーとサーバー間の関係がはるかにスムーズになります。ユーザー証明書の更新により、暗号化されたデータには失われなくてもアクセスすることができます。

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. 証明書の取り消し

ユーザーは、コマンドラインで CMCRequest ユーティリティーを使用して証明書を取り消すことができます。詳細は、『Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『CMC の取り消しの実行』 セクションを参照してください。

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 設定に次の要素を含める必要があります。
  • キーと CSR を CRMF 形式で生成できるクライアント。詳細については、『Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『証明書署名リクエストの作成』 のセクションを参照してください。
  • CMCRequest ユーティリティーなど、CRMF 要求を CMC に変換できるクライアント。
  • 指定された登録プロファイルを通じて、CRMF リクエストが埋め込まれた CMC リクエストを CA に送信できるクライアント。
  • インストールおよび設定された KRA。
データの暗号化にのみ使用されるキーのみをアーカイブする必要があります。特に署名キーは決してアーカイブされるべきではありません。署名キーのコピーが 2 つあると、誰がキーを使用したかを確実に特定することができなくなります。2 番目にアーカイブされたコピーを使用して、元のキー所有者のデジタル ID を偽装することができます。

2.4.5.1. キーのアーカイブ

アーカイブが設定されている場合、KRA は秘密鍵を自動的にアーカイブします。
エンドエンティティーが秘密暗号化キーを紛失した場合、または秘密キーを使用できない場合、対応する公開キーで暗号化されたデータを読み取る前にキーを回復する必要があります。キーが生成されたときに秘密キーがアーカイブされていれば、回復が可能です。
暗号化キーを回復する必要がある一般的な状況がいくつかあります。
  • 従業員が秘密暗号化キーを紛失し、暗号化されたメールメッセージを読むことができなくなりました。
  • 従業員が長期休暇中で、誰かが暗号化されたドキュメントにアクセスする必要があります。
  • 従業員が会社を退職し、会社の役人は従業員の暗号化されたメールへのアクセスを必要とする監査を実行する必要があります。
KRA は、秘密暗号化キーを内部データベースの安全なキーリポジトリーに格納します。各キーは暗号化されてキーレコードとして保存され、一意のキー識別子が与えられます。
鍵のアーカイブコピーは、KRA のストレージキーでラップされます。ストレージ証明書の対応する秘密鍵ペアを使用することによってのみ、復号またはラップ解除が可能になります。1 つ以上のキーリカバリー (または KRA) エージェントの証明書の組み合わせは、KRA で鍵のリカバリーを完了して秘密鍵を取得し、その証明書を使用してアーカイブされた秘密鍵を復号または再作成できるようにします。
KRA インデックスは、キー番号、所有者名、および公開鍵のハッシュ別に保存されるため、非常に効率的な検索を可能にします。キーリカバリーエージェントには、キーレコードの挿入、削除、および検索を行うための特権があります。
  • キーリカバリーエージェントがキー ID で検索されると、その ID に対応するキーのみが返されます。
  • ユーザー名でエージェントを検索すると、その所有者に属する保存されたすべてのキーが返されます。
  • 証明書の公開鍵でエージェントを検索すると、対応する秘密鍵のみが返されます。
Certificate Manager がキーのアーカイブオプションを含む証明書要求を受信すると、自動的に要求を KRA に転送して暗号鍵をアーカイブします。秘密鍵はトランスポートキーで暗号化され、KRA は暗号化されたコピーを受け取り、キーをキーリポジトリーに保存します。キーをアーカイブするには、KRA は以下の 2 つの特別なキーペアを使用します。
  • トランスポートキーペアと対応する証明書。
  • ストレージキーペア
図2.2「キーアーカイブプロセスのしくみ」 は、エンドエンティティーが証明書を要求したときにキーアーカイブプロセスがどのように発生するかを示しています。

図2.2 キーアーカイブプロセスのしくみ

キーアーカイブプロセスのしくみ
  1. クライアントは CRMF リクエストを生成し、CA の登録ポータルを介して送信します。
    この手順の詳細については、『Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『鍵のアーカイブ手順を使用して暗号化のみの証明書を取得する例』 を参照してください。
  2. 証明書の要求を承認し、証明書を発行した後、Certificate Manager はそれを KRA に送信して、公開キーと共に保管します。Certificate Manager は、秘密鍵が受信および保存され、それが公開暗号化鍵に対応するという KRA からの確認を待ちます。
  3. KRA は、秘密鍵を使用して暗号化を解除します。秘密暗号化キーが公開暗号化キーに対応することを確認した後、KRA は内部データベースに保存する前に、ストレージキーの公開キーペアを使用して再度暗号化します。
  4. 秘密暗号化キーが正常に保存されると、KRA はトランスポートキーペアの秘密キーを使用して、キーが正常に保存されたことを確認するトークンに署名します。次に、KRA はトークンを Certificate Manager に送信します。
  5. Certificate Manager は、署名キーと暗号化キーのペアに対して 2 つの証明書を発行し、それらをエンドエンティティーに返します。
両方のサブシステムは、適切な段階で設定された証明書プロファイルの制約に従ってリクエストを行います。リクエストがプロファイルの制約を満たさない場合、サブシステムはリクエストを拒否します。

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 非同期リカバリー

非同期リカバリー
KRA は、認可のステータスキーリカバリープロセスを開始したエージェントに通知します。
すべての承認を入力すると、KRA は情報をチェックします。提示された情報が正しい場合は、要求されたキーを取得し、PKCS #12 パッケージの形式で、キーリカバリープロセスを開始したエージェントに、対応する証明書を返します。
警告
PKCS #12 パッケージには秘密鍵が含まれています。キーの不正使用のリスクを最小限に抑えるには、リカバリーエージェントはセキュアな方法を使用して PKCS #12 パッケージおよびパスワードを鍵受信者に提供する必要があります。このエージェントは、PKCS #12 パッケージを暗号化するために適切なパスワードを使用し、適切な配信メカニズムを設定する必要があります。
キーリカバリーエージェントスキーム は、キーリカバリーエージェントが属するグループを認識するように KRA を設定し、アーカイブされた鍵を復元する前にキーリカバリー要求を承認するために必要なこれらのエージェントの数を指定します。
証明書システムは、秘密分割ベースのリカバリースキームではなく、m-of-n ACL ベースのリカバリースキーム を使用します。その既存のアクセス制御スキームは、リカバリーエージェントが TLS 経由で適切に認証されることを保証し、エージェントが特定のリカバリーエージェントグループ (既定ではキーリカバリー認証局エージェントグループ) に属していることを要求します。リカバリーリクエストは、m-of-n (必要な数) のリカバリーエージェントがリクエストに許可を与えた場合にのみ実行されます。
重要
上記の情報は、Firefox などの Web ブラウザーを使用することを指します。ただし、KRA の使用に重要な機能は、Red Hat Enterprise Linux 7 プラットフォームでリリースされた Firefox バージョン 31.6 に含まれなくなりました。このような場合は、pki ユーティリティーを使用してこの動作を複製する必要があります。詳細は pki(1) および pki-key(1)の man ページを参照してください。
対称キーの保存とは別に、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 トランスポート証明書を要求します。
    1. KRA を停止します。
      systemctl stop pki-tomcatd@pki-kra.service
      または
      systemctl stop pki-tomcatd-nuxwdog@pki-kra.service (if using the nuxwdog watchdog)
    2. KRA NSS データベースディレクトリーに移動します。
      cd /etc/pki/pki-kra/alias
    3. サブディレクトリーを作成し、すべての NSS データベースファイルを保存します。以下に例を示します。
      mkdir nss_db_backup
      cp *.db nss_db_backup
    4. 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
    5. CA エンドエンティティーページの 手動データリカバリーマネージャートランスポート証明書の登録 ページで、トランスポート証明書要求を送信します。
    6. End-Entity 取得ページで要求ステータスをチェックして、送信した要求のエージェント承認が証明書を取得するのを待ちます。
  2. CA Agent Services インターフェイスを使用して KRA トランスポート証明書を承認します。
  3. KRA トランスポート証明書を取得します。
    1. KRA NSS データベースディレクトリーに移動します。
      cd /etc/pki/pki-kra/alias
    2. End-Entity 取得ページで要求ステータスをチェックして、送信した要求のエージェント承認が証明書を取得するのを待ちます。
    3. 新しい KRA トランスポート証明書が利用可能になったら、その Base64 でエンコードされた値をテキストファイル(例: cert-serial_number.txt ファイル)に貼り付けます。ヘッダー(-----BEGIN CERTIFICATE-----)またはフッター(-----END CERTIFICATE-----)を含めないでください。
  4. KRA トランスポート証明書を要求します。
    1. KRA NSS データベースディレクトリーに移動します。
      cd /etc/pki/pki-kra/alias
    2. トランスポート証明書を 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 トランスポート証明書設定を更新します。
    1. KRA NSS データベースディレクトリーに移動します。
      cd /etc/pki/pki-kra/alias
    2. 新しい KRA トランスポート証明書がインポートされていることを確認します。
      certutil -d . -L
      certutil -d . -L -n 'transportCert-serial_number cert-pki-kra KRA'
    3. /var/lib/pki/pki-kra/kra/conf/CS.cfg ファイルを開き、以下の行を追加します。
      kra.transportUnit.newNickName=transportCert-serial_number cert-pki-kra KRA
新しいトランスポートキーおよび証明書の KRA クローンへの伝搬
  1. KRA を起動します。
    systemctl start pki-tomcatd@pki-kra.service
    または
    systemctl start pki-tomcatd-nuxwdog@pki-kra.service (if using the nuxwdog watchdog)
  2. クローンに伝播するために、新しいトランスポートキーと証明書を抽出します。
    1. KRA NSS データベースディレクトリーに移動します。
      cd /etc/pki/pki-kra/alias
    2. KRA を停止します。
      systemctl stop pki-tomcatd@pki-kra.service
      または
      systemctl stop pki-tomcatd-nuxwdog@pki-kra.service (if using the nuxwdog watchdog)
    3. 新しい KRA トランスポート証明書が存在することを確認します。
      certutil -d . -L
      certutil -d . -L -n 'transportCert-serial_number cert-pki-kra KRA'
    4. KRA の新規トランスポートキーおよび証明書をエクスポートします。
      pk12util -o transport.p12 -d . -n 'transportCert-serial_number cert-pki-kra KRA'
    5. エクスポートした KRA トランスポート鍵および証明書を確認します。
      pk12util -l transport.p12
  3. 各 KRA クローンで以下の手順を実行します。
    1. トランスポートキーおよび証明書を含む transport.p12 ファイルを KRA クローンの場所にコピーします。
    2. クローンの NSS データベースディレクトリーに移動します。
      cd /etc/pki/pki-kra/alias
    3. KRA のクローンを停止します。
      systemctl stop pki-tomcatd@pki-kra.service
      または
      systemctl stop pki-tomcatd-nuxwdog@pki-kra.service (if using the nuxwdog watchdog)
    4. クローン NSS データベースの内容を確認します。
      certutil -d . -L
    5. クローンの新規トランスポートキーと証明書をインポートします。
      pk12util -i transport.p12 -d .
    6. クローンの /var/lib/pki/pki-kra/kra/conf/CS.cfg ファイルに以下の行を追加します。
      kra.transportUnit.newNickName=transportCert-serial_number cert-pki-kra KRA
    7. KRA のクローンを起動します。
      systemctl start pki-tomcatd@pki-kra.service
      または
      systemctl start pki-tomcatd-nuxwdog@pki-kra.service (if using the nuxwdog watchdog)
新しい KRA トランスポート証明書を使用した CA 設定の更新
  1. CA に組み込む新しい KRA トランスポート証明書をフォーマットします。
    1. 直前の手順で KRA トランスポート証明書を取得する際に作成された cert-serial_number.txt KRA トランスポート証明書ファイルを取得します。
    2. cert-serial_number.txt に含まれる Base64 でエンコードされた証明書を 1 行に変換します。
      tr -d '\n' < cert-serial_number.txt > cert-one-line-serial_number.txt
  2. CA と、上記の KRA に対応するすべてのクローンに対して以下を行います。
    1. CA を停止します。
      systemctl stop pki-tomcatd@pki-ca.service
      または
      systemctl stop pki-tomcatd-nuxwdog@pki-ca.service (if using the nuxwdog watchdog)
    2. /var/lib/pki/pki-ca/ca/conf/CS.cfg ファイルで、以下の行に含まれる証明書を見つけます。
      ca.connector.KRA.transportCert=certificate
      その証明書を、cert-one-line-serial_number.txt に含まれる証明書に置き換えます。
    3. CA を起動します。
      systemctl start pki-tomcatd@pki-ca.service
      または
      systemctl start pki-tomcatd-nuxwdog@pki-ca.service (if using the nuxwdog watchdog)
注記
CA とそのすべてのクローンが新しい KRA トランスポート証明書で更新されている間、移行を完了した CA インスタンスは新しい KRA トランスポート証明書を使用し、まだ更新されていない CA インスタンスは引き続き古い KRA トランスポート証明書を使用します。対応する KRA とそのクローンが両方のトランスポート証明書を使用するよう更新されているため、ダウンタイムは発生しません。
新しいトランスポートキーおよび証明書のみを使用するように KRA 設定を更新
KRA とその各クローンについて、以下を実行します。
  1. KRA NSS データベースディレクトリーに移動します。
    cd /etc/pki/pki-kra/alias
  2. KRA を停止します。
    systemctl stop pki-tomcatd@pki-kra.service
    または
    systemctl stop pki-tomcatd-nuxwdog@pki-kra.service (if using the nuxwdog watchdog)
  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 を起動します。
    systemctl start pki-tomcatd@pki-kra.service
    または
    systemctl start pki-tomcatd-nuxwdog@pki-kra.service (if using the nuxwdog watchdog)

2.5. 証明書システムを使用したスマートカードトークン管理

スマートカード は、暗号化証明書および鍵を含むハードウェア暗号化デバイスです。ユーザーは、セキュアな 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 キーセットに登録を指示する設定が含まれています。
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 管理ガイド (Common Criteria Edition)』 にあります。
考慮すべきもう 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 考えられるトークンの状態
名前 コード ラベル
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> : <new code&gt; の形式で記述され ます。このコードは 表2.9「考えられるトークンの状態」 で説明されています。デフォルト設定は /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> : <new code&gt; の形式で記述され ます。このコードは 表2.9「考えられるトークンの状態」 で説明されています。デフォルト設定は /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
  • トークン 操作を使用して許可される移行のリストをカスタマイズするための tp.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 アクティビティーログイベント
アクティビティー 説明
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. マッピングリゾルバー

Mapping Resolver は、設定可能な基準に基づいて特定のトークンに割り当てるトークンプロファイルを決定するために 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)です。
  • token cuid - 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) デバイスでのキーの保持をサポートする計画があります。この機能が実装されたら、キーを HSM に転送するように tkstool を使用して Key Ceremony を実行するように指示します。

2.5.4. Enterprise Security Client (ESC)

Enterprise Security Client は、TPS と通信し、クライアント側からスマートカードトークンを処理する Web ブラウザーと同様に HTTP クライアントアプリケーションです。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 サブシステムが、証明書プロファイルまたはサービスインターフェイスのいずれかに対して認証されているか、クライアントのアイデンティティーを検証するのに使用されます。単純なユーザー名/パスワード、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 の特別なロールが自動的に付与されます。これにより、サブシステムはセキュリティードメインとその中のサブシステムインスタンスを管理できます。他のセキュリティードメイン管理者ロールは、異なるサブシステムインスタンスに対して作成できます。これらの特別なロールは、実際のユーザーをメンバーとして持てません。

第3章 許可された規格とプロトコル

Red Hat Certificate System は、可能な限りパフォーマンスと相互運用性を確保できるように、多くのパブリックプロトコルおよび標準プロトコル RFC に基づいています。本章では、Certificate System 9 で使用または対応している主な標準およびプロトコルについて、管理者がクライアントサービスを効果的に計画できるように、本章で概説しています。

3.1. 許可された TLS 暗号スイート

Transport Layer Security (TLS) プロトコルは、クライアントとサーバー間の認証と暗号化された通信の汎用的な標準です。Red Hat Certificate System は TLS 1.1 および 1.2 をサポートします。
サーバーがサーバーまたはクライアントとして機能している場合、Red Hat Certificate System は以下の暗号スイートをサポートします。

ECC

  • 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_GCM_SHA384

RSA

  • 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

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. 許可されている PKIX 形式とプロトコル

Certificate System は、IETF により Public-Key Infrastructure (X.509) で定義された多くのプロトコルとフォーマットをサポートします。以下に示す PKIX 標準に加えて、その他の PKIX リスト化された標準は IETF Datatracker の Web サイトから入手できます。
表3.1 Certificate System 9 で許可されている PKIX 規格
形式またはプロトコル RFC またはドラフト 説明
X.509 バージョン 3 国際電気通信連合 (ITU) が推奨するデジタル証明書形式。
Certificate Request Message Format (CRMF) RFC 4211 CA に証明書要求を送信するためのメッセージ形式。
CS を介した証明書管理メッセージ (CMC) RFC 5272 Cryptographic Message Syntax (CMS) を使用した証明書管理プロトコル。CMC には CRMF と PKCS #10 が組み込まれています。
暗号化メッセージ構文 (CMS) RFC 2630 デジタル署名と暗号化に使用される PKCS #7 構文のスーパーセット。
PKIX 証明書および CRL プロファイル RFC 5280 インターネット用の公開鍵インフラストラクチャー向けに IETF により開発された標準規格です。証明書および CRL のプロファイルを指定します。
オンライン証明書ステータスプロトコル (OCSP) RFC 6960 CRL を使用せずにデジタル署名の現在のステータスを決定するプロトコルは便利です。

第4章 サポート対象のプラットフォーム

本セクションでは、Red Hat Certificate System 9.4 でサポートされているさまざまなサーバープラットフォーム、ハードウェア、トークン、およびソフトウェアを説明します。

4.1. サーバーサポート

Certificate System 9.4 の認証局 (CA)、Key Recovery Authority (KRA)、オンライン証明書ステータスプロトコル (OCSP)、トークンキーサービス (TKS)、およびトークン処理システム (TPS) サブシステムの実行は、Red Hat Enterprise Linux 7.6 以降でサポートされています。サポートされる Directory Server バージョンは 10.3 以降です。
注記
Certificate System 9.4 は、認定済みのハイパーバイザーの Red Hat Enterprise Linux 仮想ゲストでの実行に対応します。詳細は、ナレッジベースの記事Red Hat Enterprise Linux の実行が認定されているハイパーバイザーを参照してください。

4.2. サポートされる Web ブラウザー

Certificate System 9.4 は、以下のブラウザーに対応しています。
表4.1 プラットフォームでサポートされる Web ブラウザー
プラットフォーム エージェントサービス エンドユーザーページ
Red Hat Enterprise Linux Firefox 60 以降 [a] Firefox 60 以降 [a]
Windows 7 Firefox 60 以降 [a]
Firefox 60 以降
Internet Explorer 10 [b]
[a] この Firefox バージョンは、ブラウザーからキーの生成およびアーカイブに使用される 暗号化 Web オブジェクトに対応しなくなりました。そのため、このエリアでは機能が限定されるはずです。
[b] 現在、Internet Explorer 11 では、Red Hat Certificate System 9.4 ではサポートされていません。この Web ブラウザーの登録コードは、Internet Explorer 11 で非推奨となった Visual Basic スクリプトにより異なります。
注記
HTML ベースのインスタンス設定に完全に対応するブラウザーは Mozilla Firefox のみです。

4.3. サポート対象のハードウェアセキュリティーモジュール

以下の表は、Red Hat Certificate System がサポートする Hardware Security Modules (HSM) を示しています。
HSM ファームウェア アプライアンスソフトウェア クライアントソフトウェア
nCipher nCipher nShield Connect 6000 2.61.2 CipherTools-linux64-dev-12.30.00 CipherTools-linux64-dev-12.30.00
Gemalto SafeNet Luna SA 1700 / 7000 (制限)
(サポートは限定的です )
6.24.0 6.2.0-15 libcryptoki-6.2.x86_64

第5章 証明書システムの計画

各 Red Hat Certificate System サブシステムは同じサーバーマシンにインストールするか、別のサーバーにインストールするか、組織全体で複数のインスタンスをインストールすることができます。サブシステムをインストールする前に、デプロイメントを計画することが重要です。どのような種類の PKI サービスが必要ですか。ネットワーク要件証明書システムにアクセスするために必要な人、そのロール、および物理的な場所は何ですか。発行する証明書の種類と、それらの制約またはルールを設定する必要があるか。
本章では、Certificate System のデプロイメントプランニングに関する基本的な質問を説明します。これらのデシジョンの多くは相互関連です。たとえば、スマートカードを使用して TPS サブシステムおよび TKS サブシステムをインストールするかどうかを決定するかどうかを決定するなど、別の選択肢に影響します。

5.1. 必要なサブシステムの決定

Certificate System サブシステムは、証明書管理のさまざまな側面に対応しています。インストールするサブシステムのプランニングは、デプロイメントが必要な PKI 操作を定義する方法の 1 つです。
ソフトウェアや設備などの証明書は、定義されたステージでライフサイクルを持ちます。最も基本的な手順は以下のとおりです。
  • 要求および発行されます。
  • これは有効です。
  • 期限切れになります。
ただし、このシンプルなシナリオでは、証明書に関する多くの共通問題について説明しません。
  • 証明書の有効期限が切れる前に従業員が退職するかどうか
  • CA 署名証明書の有効期限が切れると、その証明書を使用して発行および署名されたすべての証明書も有効期限が切れます。これにより、CA 署名証明書が更新され、発行された証明書が有効に保つか、または再発行されますか ?
  • 従業員がスマートカードを失ったか、またはスマートカードに残るかどうか。元の証明書キーを使用して代替証明書が発行されますか。他の証明書は一時停止または取り消されるか。一時的な証明書は許可されますか。
  • 証明書の有効期限が切れると、新しい証明書を発行するか、元の証明書が更新されますか ?
これにより、証明書の管理に関する他の 3 つの考慮事項 (失効、更新、および代替) を紹介します。
他の考慮事項は、認証局への負荷です。発行や更新のリクエストはたくさんありますか。証明書が有効かどうかの検証を試みるクライアントから大量のトラフィックがありますか。ID を認証するための証明書を要求する人はどのようになっていますか。また、そのプロセスによって発行プロセスが遅くなりますか。

5.1.1. 単一証明書マネージャーの使用

Certificate System PKI の中核は、Certificate Manager (認証局) です。CA は証明書要求を受け取り、すべての証明書を発行します。

図5.1 CA のみの証明書システム

CA のみの証明書システム
要求および発行のための基本処理はすべて、Certificate Manager が処理でき、これは唯一の必須サブシステムです。組織の要求に応じて、単一または多数の Certificate Manager をさまざまな関係で配置することができます。
証明書の発行に加えて、Certificate Manager は証明書を取り消すこともできます。管理者にとっての 1 つの質問は、証明書が紛失、侵害された場合、または証明書が発行された人や機器が会社をいなくなった場合に、証明書をどのように処理するかです。証明書要求を失効すると、失効日前に証明書を無効化し、失効した証明書の一覧がコンパイルされ、発行 CA によって公開され、クライアントが証明書のステータスを検証できるようになります。

5.1.2. 紛失したキーの計画: キーのアーカイブと回復

CA が実行できない 1 つの操作はキーのアーカイブとリカバリーです。非常に現実的なシナリオは、ユーザーが秘密鍵を紛失することです。たとえば、鍵がブラウザーデータベースから削除されたり、スマートカードが家に残されたりする可能性があります。多くの一般的なビジネスオペレーションでは、暗号化された電子メールなどの暗号化されたデータが使用され、そのデータのロックを解除するキーを失うと、データ自体が失われます。会社のポリシーによっては、交換用の証明書を再生成または再インポートするためにキーをリカバリーする方法が必要になる可能性があり、どちらの操作にも秘密キーが必要です。
これには、キーを特別にアーカイブおよび取得するサブシステムである KRA が必要です。

図5.2 CA および KRA

CA および KRA
キーリカバリー機関は暗号鍵 (キーアーカイブ) を保存し、CA が証明書 (キーのリカバリー) を再発行できるようにこれらのキーを取得できます。KRA は、通常の証明書に対して実行される場合でも、スマートカードを登録する場合でも、証明書システムによって生成された証明書のキーを格納できます。
キーのアーカイブおよびリカバリーのプロセスは、「キーのアーカイブ、リカバリー、およびローテーション」 で詳細に説明されています。
注記
KRA は、秘密鍵のアーカイブおよび復元を目的としています。したがって、エンドユーザーは、公開鍵と秘密鍵のペアを格納するために、デュアルキー生成をサポートするブラウザーを使用する必要があります。

5.1.3. 証明書要求の処理の分散

サブシステムを連携させる方法のもう 1 つが負荷分散です。サイトのトラフィックが多い場合は、相互のクローンとして、またはフラット階層 (各 CA が独立している場合) またはツリー階層 (一部の CA が他の CA に従属している場合) として、多数の CA を簡単にインストールできます。詳細は、「認証局階層の定義」 を参照してください。

5.1.4. クライアント OCSP 要求の分散

証明書が有効期間内にありますが無効にする必要がある場合は、取り消すことができます。Certificate Manager は、取り消された証明書の一覧を公開することができます。これにより、クライアントが証明書が有効であることを確認する必要がある場合は、一覧を確認できます。これらの要求は、オンライン証明書ステータスプロトコル要求 で、特定の要求と応答の形式を持ちます。Certificate Manager には、OCSP レスポンダーが組み込まれており、OCSP 要求を自分で検証できます。
ただし、証明書要求トラフィックと同様に、サイトには、証明書のステータスを確認するためのクライアントの要求が多数ある可能性があります。Example Corp. には大規模な Web ストアがあり、各顧客のブラウザーは TLS 証明書の有効性を検証しようとします。ここでも、CA は証明書の発行数を処理することができますが、要求トラフィックが高いとパフォーマンスに影響します。この場合、Example Corp. は外部の OCSP Manager サブシステムを使用して証明書のステータスを確認し、Certificate Manager は更新された CRL を頻繁に公開するだけで済みます。

図5.3 CA および OCSP

CA および OCSP

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 は、TLS サーバー証明書ではなく、S/MIME (Secure Multipurpose Internet Mail Extensions) および TLS クライアント認証証明書のみの発行に制限される可能性があります。パブリック CA を使用する方法は他にもあります。これは一部の PKI デプロイメントに許可されないことがあります。
パブリック CA にチェーンする利点の 1 つは、サードパーティーがルート CA 証明書を Web ブラウザーまたは他のクライアントソフトウェアに送信することです。これは、管理者が制御できないブラウザーを使用してさまざまな企業がアクセスする証明書を持つエクストラネットにとって大きな利点になる可能性があります。CA 階層にルート CA を作成するということは、ローカル組織が、Certificate System によって発行された証明書を使用するすべてのブラウザーにルート証明書を取得する必要があることを意味します。イントラネット内でこれを行うためのツールはありますが、エクストラネットでは実現が難しい場合があります。

5.2.2. 証明書システム CA への従属

Certificate System CA は ルート CA として機能するため、サーバーは独自の CA 署名証明書、およびその他の CA 署名証明書に署名し、組織固有の CA 階層を作成します。このサーバーは、下位 CA として設定することもできます。つまり、サーバーの 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.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 署名証明書
  • TLS サーバー証明書
  • サブシステム証明書
  • ユーザー (エージェント/管理者) 証明書
  • 監査ログ署名証明書
OCSP
  • OCSP 署名証明書
  • TLS サーバー証明書
  • サブシステム証明書
  • ユーザー (エージェント/管理者) 証明書
  • 監査ログ署名証明書
KRA
  • トランスポート証明書
  • ストレージ証明書
  • TLS サーバー証明書
  • サブシステム証明書
  • ユーザー (エージェント/管理者) 証明書
  • 監査ログ署名証明書
TKS
  • TLS サーバー証明書
  • ユーザー (エージェント/管理者) 証明書
  • 監査ログ署名証明書
TPS
  • 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 の新しい TLS サーバー証明書を作成するときに、クローン CA の証明書データベースが新しい TLS サーバーの全証明書で更新する必要があります。
  • Certificate Manager が証明書と CRL を LDAP ディレクトリーに公開するように設定されており、TLS クライアント認証に TLS サーバー証明書を使用する場合は、適切な拡張子を付けて新しい TLS サーバー証明書を要求する必要があります。証明書をインストールしたら、公開ディレクトリーが新しいサーバー証明書を使用するように設定する必要があります。
  • サブシステムインスタンスに対して任意の数の TLS サーバー証明書を発行できますが、実際には 1 つの 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
  • SHA384withRSA
  • SHA512withRSA
  • SHA256withEC
  • SHA384withEC
  • SHA512withEC
注記
Certificate System には、ネイティブの ECC サポートが含まれています。ECC 対応サードパーティーの PKCS #11 モジュールを読み込み、使用することも可能です。
キー タイプ とともに、各キーには特定の ビット長 があります。キーは、より短い鍵よりも暗号で強力なと見なされます。ただし、キーの署名操作にはより長い時間がかかります。
インストール時のデフォルトの 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 5280、および 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 は、ユーザーまたはマシンが証明書を要求するときに登録フォームとして使用する一連の証明書プロファイルを定義します。
参考として、『Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『証明書プロファイルの設定』 セクションを参照してください。

証明書プロファイル

証明書プロファイルは、認証方法、証明書の内容 (デフォルト)、内容の値の制約、証明書プロファイルの入力と出力の内容など、特定の種類の証明書の発行に関連するすべてを定義します。登録要求は証明書プロファイルに送信され、その証明書プロファイルで設定されたデフォルトと制約の対象となります。これらの制約は、要求が証明書プロファイルに関連付けられた入力フォームを介して送信されるか、他の手段を介して送信されるかに関係なく適用されます。証明書プロファイル要求から発行される証明書には、デフォルトで必要なコンテンツと、デフォルトのパラメーターで必要な情報が含まれています。制約は、証明書で許可されるコンテンツに対するルールを提供します。
たとえば、ユーザー証明書の証明書プロファイルは、証明書の有効期間を含む、その証明書のすべての側面を定義します。デフォルトの有効期間は 2 年に設定でき、この証明書プロファイルを介して要求された証明書の有効期間が 2 年を超えてはならないという制約をプロファイルに設定できます。ユーザーがこの証明書プロファイルに関連付けられた入力フォームを使用して証明書を要求すると、発行された証明書にはデフォルトで指定された情報が含まれ、2 年間有効です。ユーザーが、有効期間が 4 年の証明書を事前にフォーマットされた要求を提出した場合、制約により、このタイプの証明書の有効期間は最大 2 年となるため、要求は拒否されます。
発行する最も一般的な証明書プロファイルのセットが事前定義されました。これらの証明書プロファイルは、デフォルトと制約を定義し、認証方法を関連付け、証明書プロファイルに必要な入力と出力を定義します。

証明書プロファイルパラメーターの変更

デフォルトの証明書プロファイルのパラメーターは変更できます。これには、認証方法、デフォルト、各プロファイルで使用される制約、プロファイル内の任意のパラメーターに割り当てられた値、入力、および出力が含まれます。他のタイプの証明書用に新しい証明書プロファイルを作成したり、証明書タイプ用に複数の証明書プロファイルを作成したりすることもできます。特定のタイプの証明書に複数の証明書プロファイルがあり、同じタイプの証明書を異なる認証方法またはデフォルトと制約の異なる定義で発行できます。たとえば、TLS サーバー証明書の登録用に 2 つの証明書プロファイルがあり、1 つの証明書プロファイルは 6 カ月の有効期間の証明書を発行し、もう 1 つの証明書プロファイルは 2 年の有効期間の証明書を発行します。
入力は、登録フォームのテキストフィールドと、エンドエンティティーから収集する必要のある情報の種類を設定します。これには、証明書要求を貼り付けるためのテキスト領域の設定が含まれます。これにより、必要な要求情報を使用して、入力フォームの外部で要求を作成できます。入力値は、証明書の値として設定されます。デフォルトの入力は、Certificate System で設定できません。CMC リクエストのみが受け入れられます。
出力は、正常な登録に対する応答ページがどのように表示されるかを指定します。通常は、ユーザーが読み取り可能な形式で証明書を表示します。デフォルトの出力には、結果の証明書の印刷可能なバージョンが表示されるものがあります。他の出力は、PKCS #7 など、登録の最後に生成される情報のタイプを設定します。CMC フルレスポンスの場合は CMC レスポンス出力のみが返され、CMC シンプルレスポンスの場合は PKCS #7 が返されます。
ポリシーセットは、プロファイルを通じて処理されるすべての証明書に付加される制約とデフォルトの拡張機能のセットです。拡張機能は、有効期間やサブジェクト名の要件などの証明書の内容を定義します。

証明書プロファイルの管理

管理者は、既存の認証プラグインまたはメソッドを証明書プロファイルに関連付けることにより、証明書プロファイルを設定します。デフォルトと制約を有効にして設定し、入力と出力を定義します。管理者は、既存の証明書プロファイルを使用したり、既存の証明書プロファイルを変更したり、新しい証明書プロファイルを作成したり、この PKI で使用されない証明書プロファイルを削除したりできます。
証明書プロファイルが設定されると、エージェントサービスページの Manage Certificate Profiles ページに表示され、エージェントは証明書プロファイルを承認して有効にすることができます。証明書プロファイルを有効にすると、エンドエンティティーページの Certificate Profile タブに表示され、エンドエンティティーは証明書プロファイルを使用して証明書を登録できます。
エンドエンティティーインターフェイスの証明書プロファイル登録ページには、エージェントによって有効にされた各証明書プロファイルへのリンクが含まれています。エンドエンティティーがこれらのリンクの 1 つを選択すると、その証明書プロファイルに固有の登録フォームを含む登録ページが表示されます。登録ページは、プロファイルに定義された入力から動的に生成されます。認証プラグインが設定されている場合、ユーザーを認証するために追加のフィールドが追加される場合があります。
エンドエンティティーが、エージェントが承認した (手動) 登録 (認証プラグインが設定されていない登録) に関連付けられた証明書プロファイル要求を送信すると、証明書要求はエージェントサービスインターフェイスのキューに入れられます。エージェントは、登録のいくつかの側面を変更、要求、検証、キャンセル、拒否、更新、または承認することができます。エージェントは、リクエストを送信せずに更新したり、リクエストがプロファイルのデフォルトと制約に準拠していることを検証したりできます。この検証手順は検証のみを目的としており、リクエストが送信されることはありません。エージェントは、設定された制約に拘束されます。制約に違反するような方法でリクエストを変更することはできません。署名付き承認は即座に処理され、証明書が発行されます。
証明書プロファイルが認証方法に関連付けられている場合は、要求がすぐに承認され、ユーザーが認証に成功し、必要なすべての情報が提供され、要求が証明書プロファイルに設定された制約に違反しない場合は、証明書が自動的に生成されます。サブジェクト名や有効期間など、ユーザーが指定した設定を許可するプロファイルポリシーがあります。証明書プロファイルフレームワークは、発行した証明書の元の証明書要求に設定されたユーザー定義のコンテンツを保持することもできます。
発行された証明書には、証明書の延長や有効期間など、この証明書プロファイルのデフォルトで定義されたコンテンツが含まれています。証明書の内容は、デフォルトごとに設定された制約によって制限されます。1 つのプロファイルに複数のポリシー (デフォルトと制約) を設定し、ポリシーセット ID で同じ値を使用して各セットを区別できます。これは、暗号鍵と署名鍵が同じプロファイルに送信されるデュアルキー登録を処理する場合に特に便利です。サーバーは、受け取る各リクエストで各セットを評価します。1 つの証明書が発行されると、1 つのセットが評価され、その他のセットは無視されます。デュアルキーペアが発行されると、最初のセットは最初の証明書要求で評価され、2 番目のセットは 2 番目の証明書要求で評価されます。単一の証明書を発行するために複数のセット、またはデュアルキーペアを発行するために複数のセットは必要ありません。

証明書プロファイルのカスタマイズガイドライン

組織のプロファイルを、組織が使用する実際のニーズと予想される証明書の種類に合わせて調整します。
  • PKI で必要となる証明書プロファイルを決定します。発行される証明書のタイプごとに、少なくとも 1 つのプロファイルが必要です。証明書の種類ごとに複数の証明書プロファイルを用意して、特定の種類の証明書に対して異なる認証方法や異なるデフォルトや制約を設定することができます。管理インターフェイスで使用可能な証明書プロファイルはすべて、エージェントによって承認され、エンドエンティティーによって登録に使用されます。
  • 使用されていない証明書プロファイルを削除します。
  • 会社の証明書の特定の特性について、既存の証明書プロファイルを変更します。
    • 証明書プロファイルに設定されているデフォルト、デフォルトに設定されているパラメーターの値、または証明書の内容を制御する制約を変更します。
    • パラメーターの値を変更して、設定された制約を変更します。
    • 認証方法を変更します。
    • 入力ページのフィールドを制御する証明書プロファイルの入力を追加または削除して、入力を変更します。
    • 出力を追加または削除します。

5.4.6.1. TLS サーバー証明書への SAN 拡張機能の追加

Certificate System を使用すると、ルート以外の CA またはその他の Certificate System インスタンスのインストール時に、TLS サーバー証明書にサブジェクト代替名 (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. 認証方法の計画

「証明書プロファイルの使用およびカスタマイズ」 で暗示されるように、証明書プロセスの 認証 とは、証明書を要求するユーザーまたはエンティティーが、自分が本人であることを証明する方法を意味します。
Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『証明書登録のための認証』 セクションを参照してください。

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

CA は、証明書と CRL の両方を公開できます。証明書は、プレーンファイルまたは LDAP ディレクトリーに公開できます。CRL は、ファイルまたは LDAP ディレクトリーに公開することもできます。また、証明書の検証を処理するために OCSP レスポンダーに公開することもできます。
パブリッシュの設定は非常にシンプルで、簡単に調整できます。ただし、継続性とアクセシビリティーのためには、証明書および CRL をどこで公開する必要があるか、およびクライアントがそれらにアクセスできるようにする必要があるかを計画することが推奨されます。
LDAP ディレクトリーに公開するには、公開が機能するようにディレクトリーの特別な設定が必要です。
  • 証明書がディレクトリーに公開されている場合、証明書が発行されるすべてのユーザーまたはサーバーに、LDAP ディレクトリーに対応するエントリーがある必要があります。
  • CRL がディレクトリーに公開されている場合は、CRL を発行した CA のエントリーに公開する必要があります。
  • TLS の場合、ディレクトリーサービスは 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 の設定は、Red Hat セキュリティーガイドを参照してください。

5.5.2. 物理セキュリティーと場所を考慮事項

それらが保持する機密データのため、CA、KRA、および TKS を適切な物理的アクセス制限のある安全な施設に保管することを検討してください。システムへのネットワークアクセスを制限する必要があるのと同様に、物理アクセスも制限する必要があります。
安全な場所を見つけることに加えて、サブシステムのエージェントと管理者への近さを考慮してください。たとえば、キーリカバリーには、複数のエージェントの承認が必要となる場合があります。これらのエージェントが広い地域に分散している場合は、時間差がキーの取得能力に悪影響を及ぼす可能性がある。サブシステムの物理的な場所を計画し、次にサブシステムを管理するエージェントと管理者の場所に従って計画します。

5.5.3. ポートの計画

各 Certificate System サーバーは、最大 4 つのポートを使用します。
  • 認証を必要としないエンドエンティティーサービスのセキュアではない HTTP ポート
  • 認証を必要とするエンドエンティティーサービス、エージェントサービス、管理コンソール、および管理サービス用の安全な HTTP ポート
  • Tomcat Server Management ポート
  • Tomcat AJP コネクターポート
Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『Red Hat Certificate System ユーザーインターフェイス』 セクションで説明されているすべてのサービスページとインターフェイスは、インスタンスの URL と対応するポート番号を使用して接続されます。以下に例を示します。
https://server.example.com:8443/ca/ee/ca
管理コンソールにアクセスするには、URL は管理ポートを指定します。
pkiconsole https://server.example.com:8443/ca
すべてのエージェントおよび管理機能に、TLS クライアント認証が必要です。エンドエンティティーからの要求の場合、Certificate System は TLS (暗号化) ポートと非 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. PKI の計画に関するチェックリスト

問:
いくつのセキュリティードメインが作成され、どのサブシステムインスタンスが各ドメインに配置されますか。
答:
サブシステムは、信頼できる関係がある場合にのみ別のサブシステムと通信できます。セキュリティードメイン内のサブシステムは相互に自動的に信頼できる関係にあるため、サブシステムがどのドメインに参加するかが重要です。セキュリティードメインには、さまざまな証明書発行ポリシー、ドメイン内のさまざまな種類のサブシステム、またはさまざまな Directory Server データベースを含めることができます。各サブシステムが属する場所 (物理マシン上および相互の関係の両方) をマップし、それに応じてセキュリティードメインに割り当てます。
問:
各サブシステムに割り当てるポート。単一の TLS ポートが必要ですか。それともセキュリティーを強化するためにポートを分離する方がよいでしょうか。
答:
最も安全なソリューションとして、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 を証明書システム CA に従属させることです。Certificate System CA をルート CA として設定すると、発行した CA 署名証明書の内容を制御するポリシーを設定し、Certificate System 管理者がすべての下位 CA を制御することができます。
最初の CA が自己署名ルートをインストールし、サードパーティーに適用して証明書を発行するのを待つのが最も簡単な方法です。ルート CA の数と、ルート CA と従属 CA の両方を配置する場所を必ず決めておいてください。
問:
発行する証明書の種類どのような特性が必要であり、それらの特性に使用できるプロファイル設定は何ですか。証明書に必要な制限
答:
「証明書プロファイルの使用およびカスタマイズ」で触れたように、プロファイル (CA によって発行される各タイプの証明書を設定するフォーム) をカスタマイズできます。これは、サブジェクト DN、有効期間、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 Enterprise Linux 7.6 が必要です。Red Hat Enterprise Linux のインストールの詳細は、『Red Hat Enterprise Linux インストールガイド』 を参照してください。
Red Hat Enterprise Linux で FIPS (Federal Information Processing Standard) を有効にするには、『Red Hat セキュリティーガイド』を参照してください。
重要
Certificate System をインストールする前に、FIPS モードを有効にする必要があります。FIPS モードが有効になっていることを確認するには、以下を実行します。
# sysctl crypto.fips_enabled
返された値が 1 の場合、FIPS モードが有効になります。

6.2. SELinux を使用したシステムのセキュリティー保護

SELinux (Security-Enhanced Linux) は、Linux カーネルに必須のアクセス制御メカニズムを実装しておりで、標準の任意アクセス制御がチェックされた後、許可された操作をチェックします。SELinux は、定義されたポリシーに基づいて、Linux システム内のファイルとプロセス、およびそれらのアクションにルールを適用できます。
ほとんどの場合、Enforcing モードで SELinux を使用して Certificate System を実行する必要はありません。ハードウェアセキュリティーモジュール (HSM) を使用する場合など、Certificate System のドキュメントの手順で SELinux 関連の設定を手動で行う必要がある場合は、対応するセクションに記載されています。
SELinux の詳細は、SELinux ユーザーおよび管理者のガイドを 参照してください。

6.2.1. SELinux が Enforcing モードで実行していることの確認

デフォルトでは、Red Hat Enterprise Linux のインストール後に SELinux が有効になり、Enforcing モードで実行されるため、それ以上のアクションは必要ありません。
現在の SELinux モードを表示するには、次のコマンドを実行します。
# getenforce

6.3. ファイアウォールの設定

以下の表は、Certificate System サブシステムで使用されるデフォルトのポートを示しています。
表6.1 証明書システムのデフォルトポート
サービス
ポート
プロトコル
HTTP
8080
TCP
HTTPS
8443
TCP
Tomcat 管理
8005
TCP
pkispawn ユーティリティーを使用して Certificate System を設定すると、ポート番号をカスタマイズできます。上記のデフォルトとは異なるポートを使用する場合は、「ファイアウォールで必要なポートを開く」の説明に従ってファイアウォールで対応して開きます。ポートの詳細は、「ポートの計画」を参照してください。
Directory Server にアクセスするために必要なポートについては、Directory Server インストールガイドの該当するセクションを参照してください。

6.3.1. ファイアウォールで必要なポートを開く

クライアントと 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 を使用してシステムでポートを開く方法は、Red Hat Enterprise Linux セキュリティーガイド または firewall-cmd(1) の man ページを参照してください。
  4. firewall-cmd 設定を再度読み込んで、変更が即座に反映されるようにします。
    # firewall-cmd --reload

6.4. ハードウェアセキュリティーモジュール

ハードウェアセキュリティーモジュール (HSM) を使用するには、FIPS (Federal Information Processing Standard) 140-2 で検証された HSM が必要です。HSM をインストール、設定、および FIPS モードでセットアップする方法については、HSM のドキュメントを参照してください。

6.4.1. 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.4.2. HSM での FIPS モードの有効化

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.4.3. FIPS モードが HSM で有効になっているかどうかの確認

本セクションでは、特定の HSM に対して FIPS モードが有効になっているかどうかを確認する方法を説明します。その他の HSM は、ハードウェアの製造元のドキュメントを参照してください。

6.4.3.1. FIPS モードが nCipher HSM で有効にされているかどうかの確認

注記
完全な手順については、HSM ベンダーのドキュメントを参照してください。
FIPS モードが nCipher HSM で有効になっているかどうかを確認するには、次のコマンドを実行します。
# /opt/nfast/bin/nfkminfo
古いバージョンのソフトウェアでは、StrictFIPS140 が state フラグに一覧表示されると、FIPS モードが有効になります。ただし、新しいバージョンでは、新しい mode 行を確認して fips1402level3 を検索することが推奨されます。いずれの場合も、nfkminfo 出力に hkfips キーも存在しているはずです。

6.4.3.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.4.4. HSM を使用した証明書システムのインストールの準備

pkispawn ユーティリティーを使用したインストール」 では、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 の値は、HSM を識別するために後の pkispawn 操作で使用される名前です。文字列は、任意のものとして設定できる識別子です。これにより、pkispawn および Certificate System は、後続の操作で HSM および設定情報を名前で参照できます。
以下のセクションでは、各 HSM の設定を説明します。HSM が一覧にない場合は、HSM の製造元のドキュメントを参照してください。

6.4.4.1. NCipher HSM パラメーター

nCipher nShield Connect 6000 などの 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.4.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.4.5. ハードウェアセキュリティーモジュールでのキーのバックアップ

HSM に保存されている鍵と証明書を .p12 ファイルにエクスポートすることはできません。このようなインスタンスをバックアップする必要がある場合には、HSM の製造元に連絡してサポートしてください。

6.5. Red Hat Directory Server のインストール

Certificate System は、Red Hat Directory Server を使用して、システム証明書とユーザーデータを保存します。Directory Server と Certificate System の両方を、ネットワーク内の同じまたは他のホストにインストールできます。

6.5.1. 証明書システム用の Directory Server インスタンスの準備

Red Hat Directory Server をインストールするには、以下の手順を実行します。
  1. Directory Server サブスクリプションをホストに割り当てます。
  2. Directory Server および openldap-clients パッケージをインストールします。
    # yum install redhat-ds openldap-clients
  3. Directory Server インスタンスを設定します。以下に例を示します。
    1. 以下の内容で、/tmp/ds-setup.inf などの設定設定ファイルを作成します。
      [General]
      FullMachineName=server.example.com
      SuiteSpotUserID=dirsrv
      SuiteSpotGroup=dirsrv
      
      [slapd]
      ServerIdentifier=instance_name
      ServerPort=389
      Suffix=dc=example,dc=org
      RootDN=cn=Directory Manager
      RootDNPwd=password
    2. 設定設定ファイルを使用してインスタンスを作成します。
      setup-ds.pl --silent --file=/tmp/ds-setup.inf
    詳細な手順は、Red Hat Directory Server インストールガイド を参照してください。

6.5.2. Directory Server での TLS サポートの有効化

すべての Certificate System コンポーネントは、TLS 暗号化接続を使用して Directory Server インスタンスと通信します。この接続では、Certificate System コンポーネントを使用して、クライアント認証 (相互認証) を介して Directory Server を認証する必要があります。
Directory Server で TLS サポートを有効にする方法の詳細は、『Directory Server 管理ガイド』 の 『Directory Server での TLS サポートの有効化』 セクションを参照してください。
Directory Server の TLS サーバー証明書を要求および発行する方法の詳細は、『Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『Directory Server で Certificate System が発行する証明書の使用』 セクションを参照してください。
Directory Server のドキュメントで説明されているように、外部認証局 (CA) によって発行された証明書、または一時的な自己署名サーバー証明書のいずれかを使用して TLS を設定できます。ただし、Certificate System CA を設定した後、この CA を使用して証明書を発行し、Directory Server の設定時に使用した証明書に置き換えることができます。

6.5.2.1. 例の値を使用した新規 Red Hat Certificate System サブシステムでの LDAPS の有効化方法

注記
この TLS LDAP 手順を実行するときの最終的な目標は、TLS クライアント認証を介して接続することです。プロセス時、ステップごとに中間ゴールで移行する必要があります。このような目的の 1 つは、最初に実行する TLS サーバー認証を設定することです。最後に、プロセスは折り返し、完全なクライアント認証を操作可能にします。
  1. NSS データベースへの同時変更を回避するために、Directory Server インスタンスを停止します。
    # systemctl stop dirsrv@instance_name.service
  2. Directory Manager のパスワードを /etc/dirsrv/instance_name/password.txt ファイルに保存します。以下に例を示します。
    # echo password > /etc/dirsrv/slapd-instance_name/password.txt
    # chown dirsrv.dirsrv /etc/dirsrv/slapd-instance_name/password.txt
    # chmod 400 /etc/dirsrv/slapd-instance_name/password.txt
  3. Directory Manager のパスワードを /etc/dirsrv/instance_name/pin.txt ファイルに保存します。以下に例を示します。
    # echo "Internal (Software) Token:password" > /etc/dirsrv/slapd-instance_name/pin.txt
    # chown dirsrv.dirsrv /etc/dirsrv/slapd-instance_name/pin.txt
    # chmod 400 /etc/dirsrv/slapd-instance_name/pin.txt
  4. NSS データベースのパスワードを設定します。
    # certutil -W -d /etc/dirsrv/slapd-instance_name/ -f /etc/dirsrv/slapd-instance_name/password.txt
  5. Directory Server の一時的な自己署名証明書を作成します。
    $ cd /etc/dirsrv/slapd-instance_name
    $ openssl rand -out noise.bin 2048
    $ certutil -S \
    	-x \
    	-d . \
    	-f password.txt \
    	-z noise.bin \
    	-n "DS Certificate" \
    	-s "CN=$HOSTNAME" \
    	-t "CT,C,C" \
    	-m $RANDOM \
    	-k rsa \
    	-g 2048 \
    	-Z SHA256 \
    	--keyUsage certSigning,keyEncipherment
  6. Directory Server 証明書エントリーが NSS データベースで利用可能かどうかを確認します。
    # certutil -L -d /etc/dirsrv/slapd-instance_name/
  7. 証明書をエクスポートします。
    # certutil -L -d /etc/dirsrv/slapd-instance_name -n "DS Certificate" -a > ds.crt
  8. Directory Server 証明書が自己署名されていることを確認します。
    # certutil -L -d /etc/dirsrv/slapd-instance_name -n "DS Certificate"
    Issuer: "CN=server.example.com"
    Subject: "CN=server.example.com"
  9. Directory Server インスタンスを停止します。
    # systemctl start dirsrv@instance_name
  10. セキュアな接続を有効にします。
    # ldapmodify -x -p 389 -h $HOSTNAME -D "cn=Directory Manager" -w password << EOF
    dn: cn=config
    changetype: modify
    replace: nsslapd-security
    nsslapd-security: on
    
    dn: cn=RSA,cn=encryption,cn=config
    changetype: add
    objectclass: top
    objectclass: nsEncryptionModule
    cn: RSA
    nsSSLPersonalitySSL: DS Certificate
    nsSSLToken: internal (software)
    nsSSLActivation: on
    EOF
  11. 必要に応じて、デフォルトとは異なる LDAPS ポートを設定します(636)。
    1. たとえば、LDAPS ポートを 11636 に設定するには、以下を実行します。
      ldapmodify -x -p 389 -h $HOSTNAME -D "cn=Directory Manager" -w password << EOF
      dn: cn=config
      changetype: modify
      replace: nsslapd-secureport
      nsslapd-secureport: 11636
      EOF
    2. この標準以外のポートの SELinux ポリシーを設定します。
      # semanage port -a -t ldap_port_t -p tcp 11636
  12. Directory Server インスタンスを再起動します。
    # systemctl restart dirsrv@instance_name
  13. /var/log/dirsrv/slapd-instance_name/errors ファイルで、Directory Server が TLS モードで起動したことを確認します。
    [30/Jun/2016:00:23:31 +0200] - SSL alert: Security Initialization: Enabling default cipher set.
    [30/Jun/2016:00:23:31 +0200] - SSL alert: Configured NSS Ciphers
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_DHE_RSA_WITH_AES_128_CBC_SHA: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_DHE_DSS_WITH_AES_128_CBC_SHA: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_DHE_RSA_WITH_AES_128_CBC_SHA256: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_DHE_RSA_WITH_AES_256_CBC_SHA: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_DHE_DSS_WITH_AES_256_CBC_SHA: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_DHE_RSA_WITH_AES_256_CBC_SHA256: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_RSA_WITH_AES_128_GCM_SHA256: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_RSA_WITH_AES_128_CBC_SHA: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_RSA_WITH_AES_128_CBC_SHA256: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_RSA_WITH_AES_256_CBC_SHA: enabled
    [30/Jun/2016:00:23:31 +0200] - SSL alert:       TLS_RSA_WITH_AES_256_CBC_SHA256: enabled
    [30/Jun/2016:00:23:31 +0200] SSL Initialization - Configured SSL version range: min: TLS1.0, max: TLS1.2
    [30/Jun/2016:00:23:31 +0200] - 389-Directory/1.3.4.11 B2016.166.1911 starting up
  14. openldap-clients および NSS データベースを使用して TLS 接続を確認します。
    $ LDAPTLS_CACERTDIR=/etc/dirsrv/slapd-instance_name \
    	ldapsearch -H ldaps://$HOSTNAME:11636 \
    	-x -D "cn=Directory Manager" -w Secret.123 \
    	-b "dc=example,dc=org" -s base "(objectClass=*)"

6.5.3. 証明書システムの設定の準備

pkispawn ユーティリティーを使用したインストール」 では、Certificate System をインストールするときに、pkispawn ユーティリティーに渡す設定ファイルで以下のパラメーターを使用するように指示されます。
注記
最初に基本的な 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 インスタンスの準備」 および 「Directory Server での TLS サポートの有効化」 で使用される値によって異なります。
pki_ds_secure_connection=True を設定する場合は、以下のパラメーターを設定する必要があります。
  • pki_ds_secure_connection_ca_pem_file: Directory Server の CA 証明書のエクスポートされたコピーを含むファイルのファイル名を含む完全修飾パスを設定します。このファイルは、pkispawn を使用する前に存在している必要があります。
  • pki_ds_ldaps_port: Directory Server がリッスンしているセキュアな LDAPS ポートの値を設定します。デフォルトは 636 です。

6.5.4. 一時的な証明書の置き換え

注記
本セクションでは、ルート CA をインストールして実行する必要があります。インストール後に、本セクションの指示に従うように指示されます。
このセクションでは、一時的な自己署名 Directory Server 証明書を新しくインストールした CA によって発行された永続的な Directory Server 証明書に置き換えるプロセス、または古い Directory Server 証明書を新しいものに置き換えるプロセスを説明します。
  1. 新しい Directory Server サーバー証明書を取得します。CA が署名した新規証明書の要求を送信します。CMC メソッドを使用して、新しいディレクトリーサーバー証明書を取得するには、『Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『システム証明書およびサーバー証明書の取得』 セクションを参照してください。
    上記のセクションで、TLS サーバー証明書の作成に関するガイダンスに従ってください。証明書を作成したら、Directory Server 証明書データベースにインポートし直す必要があります。
  2. NSS データベースにアクセスする前に、Directory Server インスタンスを停止します。
    # systemctl stop dirsrv@instance_name
  3. 古い Directory Server 証明書を削除します。
    # certutil -F -d /etc/dirsrv/slapd-instance_name -f /etc/dirsrv/slapd-instance_name/password.txt -n "DS Certificate"
  4. 先ほどダウンロードした CA 証明書をインポートします。
    # PKICertImport -d /etc/dirsrv/slapd-instance_name -f /etc/dirsrv/slapd-instance_name/password.txt -n "CA Certificate" -t "CT,C,C" -a -i ca.crt -u L
  5. 先にダウンロードした新しい Directory Server 証明書をインポートします。
    # PKICertImport -d /etc/dirsrv/slapd-instance_name -f /etc/dirsrv/slapd-instance_name/password.txt -n "DS Certificate" -t ",," -a -i ds.crt -u V
    「HSM への証明書のインポート」も参照してください。
  6. Directory Server インスタンスを停止します。
    systemctl start dirsrv@instance_name
  7. PKI CA から古い Directory Server 証明書を削除します。
    1. Certificate System インスタンスを停止します。
      # systemctl stop pki-tomcatd@instance_name.service
    2. 証明書を削除します。
      # certutil -D -d /var/lib/pki/instance_name/alias/ -n "DS Certificate"
    3. Certificate System インスタンスを起動します。
      # systemctl start pki-tomcatd@instance_name.service
  8. 新しい Directory Server 証明書が、NSS データベースにインストールされている CA で署名されていることを確認します。
    1. Directory Server 証明書の表示
      $ certutil -L -d /etc/dirsrv/slapd-instance_name -n "DS Certificate"
      
      Issuer: "CN=CA Signing Certificate,O=EXAMPLE"
      Subject: "CN=server.example.com"
    2. 古い Directory Server 証明書が PKI NSS データベースに存在しなくなったことを確認します。
      $ certutil -L -d /var/lib/pki/instance_name/alias
    3. Certificate System が、新しい証明書を使用して Directory Server に接続できることを確認します。
      $ pki cert-find

6.5.5. TLS クライアント認証の有効化

注記
本セクションでは、ルート CA をインストールして実行する必要があります。一時的な LDAP サーバー証明書を使用している場合は、最初に 「一時的な証明書の置き換え」 で置き換えます。インストール後は、このセクションの指示に従ってください。
基本的な TLS サーバー認証が設定され、CS サブシステムのインストール中に実行されました。これで、指定されたサブシステムから LDAP サーバーへのクライアント認証を有効にできるようになります。
クライアント認証の設定には 2 つの部分があります。最初の部分は、TLS の相互認証を必要とする LDAP ディレクトリーを設定します。この手順は 9.8 で詳しく説明します。Red Hat Directory Server 管理ガイドで証明書ベースのクライアント認証の使用
次の点に注意してください。
  • pkispawn は、送信 TLS クライアント認証に使用される CS インスタンスのサブシステム証明書( subsystemCert cert-pki-ca)がユーザーエントリーに保存される内部ディレクトリーサーバーに pkidbuser を自動的に作成しています。したがって、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/pki-tomcat/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 クライアント証明書のニックネームと一致する必要があります。
その他の値はすべて、環境または可用性の要件を反映するために必要に応じて変更できます。

6.6. Red Hat サブスクリプションの添付および Certificate System パッケージリポジトリーの有効化

yum ユーティリティーを使用して Certificate System をインストールおよび更新する前に、対応するリポジトリーを有効にする必要があります。
  1. Red Hat サブスクリプションをシステムに割り当てます。
    システムがすでに登録されているか、Certificate Server サブスクリプションが割り当てられている場合は、この手順をスキップしてください。
    1. システムを Red Hat サブスクリプション管理サービスに登録する
      # 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
      --auto-attach オプションを使用して、オペレーティングシステムのサブスクリプションを自動的に適用します。
    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 Server リポジトリーを有効にします。
    # subscription-manager repos --enable=rhel-7-server-rhcmsys-9-rpms
    Repository 'rhel-7-server-rhcmsys-9-rpms' is enabled for this system.
必要なパッケージのインストールについては、7章Certificate System のインストールおよび設定 に記載されています。
注記
コンプライアンスのために、Red Hat で承認したリポジトリーのみを有効にします。subscription-manager ユーティリティーを使用して有効にできるのは、Red Hat 承認済みのリポジトリーのみです。

6.7. Certificate System のオペレーティングシステムのユーザーおよびグループ

Certificate System をインストールすると、pkiuser アカウントと対応する pkiuser グループが自動的に作成されます。Certificate System は、このアカウントとグループを使用してサービスを起動します。
インストール後の手順の一部として、オペレーティングシステム上でインスタンスを起動、停止、または直接設定できるように、各 Certificate System 管理者のオペレーティングシステムユーザーを作成するように指示されます。詳細は、「インストール後のタスク」 を参照してください。

第7章 Certificate System のインストールおよび設定

Red Hat Certificate System は、個別にインストールできるさまざまなサブシステムを提供します。たとえば、複数のサブシステムインスタンスを 1 つのサーバーにインストールすることも、異なるホストで個別に実行することもできます。これにより、インストールを環境に合わせて適応させることができ、より高い可用性、スケーラビリティー、フェイルオーバーのサポートを提供することができます。本章では、パッケージのインストールと、個別のサブシステムの設定方法を説明します。
Certificate System には以下のサブシステムが含まれます。
  • 認証局 (CA)
  • キーリカバリー認証局 (KRA)
  • OCSP (Online Certificate Status Protocol) レスポンダーの使用
  • トークンキーサービス (TKS)
  • トークン処理システム (TPS)

7.1. サブシステムの設定順序

異なるサブシステム間の関係のため、個々のサブシステムがセットアップされる順序は重要です。
  1. 他の公開鍵インフラストラクチャー (PKI) サブシステムをインストールするには、少なくとも 1 つの CA が必要です。
  2. CA の設定後に OCSP をインストールします。
  3. KRA サブシステムおよび TKS サブシステムは、CA および OCSP の設定後にいつでもインストールできます。
  4. TPS サブシステムは CA および TKS に依存し、任意で KRA サブシステムおよび OCSP サブシステムに依存します。
注記
非トークン管理設定では、CA、OCSP、および KRA サブシステムをインストールできますが、トークン管理設定では、CA、OCSP、KRA、TKS、および TPS をインストールできます。

7.2. Certificate System パッケージ

Certificate System パッケージをインストールする場合は、サブシステムごとに個別にインストールすることも、一度にすべてインストールすることもできます。
重要
Certificate Server パッケージをインストールおよび更新するには、対応するリポジトリーを有効にする必要があります。詳細は、「Red Hat サブスクリプションの添付および Certificate System パッケージリポジトリーの有効化」を参照してください。
次のサブシステムパッケージとコンポーネントが利用可能です。
  • pki-ca: 認証局 (CA) サブシステムを提供します。
  • pki-kra: Key Recovery Authority (KRA) サブシステムを提供します。
  • pki-ocsp: OCSP (Online Certificate Status Protocol) レスポンダーの使用
  • pki-tks: Token Key Service (TKS) を提供します。
  • pki-tps: Token Processing Service (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 のパッケージのいずれかをインストールすると、このパッケージは依存関係としてインストールされます。

7.2.1. 非 TMS 環境での証明書システムパッケージのインストール

非トークン管理システム (TMS) 環境にサブシステムをインストールするには:
# yum install pki-ca redhat-pki-server-theme pki-console \
     redhat-pki-console-theme pki-kra pki-ocsp
「Certificate System の製品バージョンの特定」 の手順に従って、製品バージョンを確認します。

7.2.2. TMS 環境への証明書システムパッケージのインストール

サブシステムをトークン管理システム (TMS) 環境にインストールするには、次のようにします。
# yum install redhat-pki
redhat-pki は、すべての Certificate System サブシステムパッケージとコンポーネントを自動的にインストールします。
「Certificate System の製品バージョンの特定」 の手順に従って、製品バージョンを確認します。

7.2.3. 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 は、最新バージョンであれば後でパッケージを使用します。

7.2.4. Certificate System の製品バージョンの特定

Red Hat Certificate System の製品バージョンは、/usr/share/pki/CS_SERVER_VERSION ファイルに保存されます。バージョンを表示するには、以下を実行します。
# cat /usr/share/pki/CS_SERVER_VERSION
Red Hat Certificate System 9.4 (Batch Update 3)
実行中のサーバーの製品バージョンを検索するには、ブラウザーから以下の URL にアクセスします。
  • http://host_name:port_number/ca/admin/ca/getStatus
  • http://host_name:port_number/kra/admin/kra/getStatus
  • http://host_name:port_number/ocsp/admin/ocsp/getStatus
  • http://host_name:port_number/tks/admin/tks/getStatus
  • http://host_name:port_number/tps/admin/tps/getStatus
注記
各コンポーネントは個別のパッケージであるため、バージョン番号は異なります。上記は、現在実行中の各コンポーネントのバージョン番号を示しています。

7.3. pkispawn ユーティリティーを使用したインストール

次のセクションを慎重に読んで、このセクションのインストール例に従うときに正しい選択を行っていることを確認してください。

7.3.1. pkispawn ユーティリティーについて

Red Hat Certificate System では、管理者は pkispawn ユーティリティーを実行して個々の公開鍵インフラストラクチャー(PKI)サブシステムを設定します。
pkispawn ユーティリティーには設定ファイルが必要です。このファイルには、セクションにグループ化されたパラメーターが含まれています。これらのセクションは積み重ねられているため、前のセクションで定義されたパラメーターを後のセクションで定義されたパラメーターでオーバーライドできます。セクションは次の順序で読まれます。
  1. [DEFAULT]
  2. [Tomcat]
  3. サブシステム固有のセクション: [CA]KRA、OCSP [OCSP]TKS、または TPS
設定時に、pkispawn
  1. まず、/etc/pki/default.cfg ファイルからデフォルト値を読み取ります。
    重要
    /etc/pki/default.cfg ファイルは編集しないでください。pkispawn ユーティリティーに渡されるときにデフォルトを上書きする設定ファイルを作成するように指示されます。設定ファイルで設定されていないパラメーターは、デフォルト値を使用します。設定ファイルの使用方法は、pkispawnを使用した 2 ステップのインストール」を参照してください。
  2. 上記の管理者が提供する設定ファイルを読み取り、デフォルト値をオーバーライドします。
  3. 要求された PKI サブシステムのインストールを実行します。
  4. 設定に基づいて設定を行う Java サーブレットに設定を渡します。
pkispawn および例に関する一般的な情報は、pkispawn(8) および pki_default.cfg(5) の man ページを参照してください。
CA、KRA、または OCSP サブシステムをインストールする方法は、次を参照してください。pkispawnを使用した 2 ステップのインストール」
TKS または TPS サブシステムをインストールする方法は、次を参照してください。pkispawn を使用した単一ステップのインストール(TMS のみ)」

7.3.2. pkispawnを使用した 2 ステップのインストール

CA、KRA、または OCSP サブシステムをインストールするには、pkispawn の 2 ステップインストールを使用して、管理者がインストールの 2 つの部分間で設定ファイルを手動で更新できるようにします。
two-step installation という名前は、インストールを完了するために上書き設定ファイルに若干異なるパラメーターセットを使用し、pkispawn ユーティリティーが 2 回実行されることが多いという事実から来ています。
2 ステップインストールは、次の主要部分で設定されています。
  1. pkispawn ユーティリティーを使用したインストール (ステップ 1)
    このステップでは、pkispawn は設定ファイルを /usr/share/pki/ ディレクトリーからインスタンス固有の /etc/pki/instance_name/ ディレクトリーにコピーします。さらに、pkispawn は、デプロイメント設定ファイルで定義された値に基づいて設定を行います。
    インストールのこの部分には、以下のサブステップが含まれます。
  2. ステップ間の設定とカスタマイズ
    詳細は、「2 つの pkispawn インストール手順間の設定」を参照してください。
  3. pkispawn ユーティリティーを使用した設定 (ステップ 2)
    このステップでは、pkispawn を実行して、インスタンス固有の /etc/pki/instance_name/ ディレクトリーの設定ファイルに基づいてインストールを続行します。
    インストールのこの部分の詳細については、pkispawn ステップ 2 インストールの開始」 を参照してください。
環境によっては、追加の設定およびカスタマイズ手順が必要です。

7.3.2.1. インストールの最初ステップ用の設定ファイルの作成

/root/pki/config.subsystem.txt などの pkispawn 設定用のテキストファイルを作成し、これを以下の設定で入力します。すべての設定を追加する必要があります。
重要
本セクションでは、Certificate System と同じホストで実行している Directory Server の最低限の設定を説明します。環境に応じて、追加パラメーターが必要になる場合があります。その他の例は、pkispawn(8) man ページの 『EXAMPLES』 セクションを参照してください。

サブシステムに依存しない設定

インストールするサブシステムとは関係なく、設定ファイルには次の設定が必要です。
  • [DEFAULT] セクション:
    1. 一意のインスタンス名を設定します。
      pki_instance_name=instance_name
    2. ホスト名とセキュリティードメイン名を設定します。
      pki_host=server.example.com
      pki_security_domain_name=example.com Security Domain
      pki_security_domain_user=caadmin
      pki_security_domain_password=SD password
      注記
      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
      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
    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 パラメーターで指定された各値に設定できます。詳細は、『Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『署名アルゴリズムの制約』 セクションを参照してください。
      署名アルゴリズム(RSA)は key_type (rsa)と一致する必要があります。
      key_type で許可されている選択肢は rsa のみです。
      key_size で許可されている選択肢は 20484096 です。
    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 パラメーターで指定された各値に設定できます。詳細は、『Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『署名アルゴリズムの制約』 セクションを参照してください。
      署名アルゴリズム(EC)は key_type (ecc)と一致する必要があります。
      key_size に許可されている選択肢は次のとおりです。
      • nistp256
      • nistp384
      • nistp521
      key_type に対して許可される選択肢は eccです。
    7. ブートストラップ admin ユーザーのクライアントディレクトリーを設定します。
      pki_client_dir=bootstrap_admin_directory
      デフォルトでは、パスは ~/.dogtag/instance_name/に設定されます。
      重要
      pki_admin_* パラメーターおよび pki_client_* パラメーターは、インストールプロセスによって自動的に作成されるブートストラップユーザーに属します。デフォルトのロール (権限) とブートストラップユーザーの詳細については、次を参照してください。「ユーザー、認可、およびアクセス制御」
      このセクションで説明するパラメーターの説明は、pki_default.cfg(5) の man ページを参照してください。
    8. ブートストラップ admin ユーザーのさまざまなパスワードを設定します。
      pki_admin_password=password
      pki_client_database_password=password
      pki_client_pkcs12_password=password
    9. 同じホストで実行されている Directory Server への LDAPS 接続のパラメーターを設定します。
      pki_ds_database=back-end database name
      pki_ds_hostname=hostname
      pki_ds_secure_connection=True
      pki_ds_secure_connection_ca_pem_file=path_to_CA_or_self-signed_certificate
      pki_ds_password=password
    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
  • [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_port8009 に、pki_tomcat_server_port8005 に設定されています。
非 TMS の場合、初期設定ファイルを作成したら、サブシステム固有の設定を追加します。参照:
TMS の場合、pkispawn シングルステップインストール用の設定ファイルの作成を続行するには、「pkispawn シングルステップインストール用の設定ファイルの作成」 を参照してください。

CA 設定

「サブシステムに依存しない設定」 に加えて、CA をインストールするために [CA] セクションに以下の設定が必要です。
  1. 次の設定を追加して、ランダムなシリアル番号を有効にします。
    pki_random_serial_numbers_enable=true
  2. 次のパラメーターを設定して、インストール中に自動的に作成されるブートストラップ admin ユーザーのデータを指定します。
    pki_admin_nickname=bootstrap_CA_admin
    pki_admin_name=bootstrap_CA_administrator_name
    pki_admin_uid=caadmin
    pki_admin_email=caadmin@example.com
    Certificate System は、このブートストラップアカウントに管理者とエージェントの権限を割り当てます。インストール後にこのアカウントを使用して、実際の管理者、エージェント、および監査者のアカウントを作成します。
  3. サブシステム依存の証明書の HSM トークンを指定します。
    pki_ca_signing_token=HSM_token_name
    pki_ocsp_signing_token=HSM_token_name
  4. RSA ベースの CA を構築する場合は、次の設定を使用します。
    pki_ca_signing_key_algorithm=SHA256withRSA
    pki_ca_signing_key_size=4096
    pki_ca_signing_key_type=rsa
    pki_ca_signing_signing_algorithm=SHA256withRSA
    pki_ocsp_signing_key_algorithm=SHA256withRSA
    pki_ocsp_signing_key_size=4096
    pki_ocsp_signing_key_type=rsa
    pki_ocsp_signing_signing_algorithm=SHA256withRSA
    key_algorithm パラメーターの選択肢は次のとおりです。
    • SHA256withRSA
    • SHA384withRSA
    • SHA384withRSA
    注記
    このパラメーターは、CA の CS.cfg ファイルの ca.profiles.defaultSigningAlgsAllowed パラメーターで指定された各値に設定できます。詳細は、『Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『署名アルゴリズムの制約』 セクションを参照してください。
    署名アルゴリズム(RSA)は key_type (rsa)と一致する必要があります。
    key_size パラメーターの選択肢は次のとおりです。
    • 2048
    • 4096
    key_type パラメーターで許可される選択肢は rsa のみです。
  5. デフォルトでは、システム証明書のキータイプは rsa で、キーの長さは 2048 ビットです。証明書の作成時に RSA の代わりに楕円曲線暗号 (ECC) を使用するには、次のように設定します。
    pki_ocsp_signing_key_algorithm=SHA256withEC
    pki_ocsp_signing_key_size=nisp256
    pki_ocsp_signing_key_type=ecc
    pki_ocsp_signing_signing_algorithm=SHA256withEC
    key_algorithm パラメーターの選択肢は次のとおりです。
    • SHA256withEC
    • SHA384withEC
    • SHA512withEC
    注記
    このパラメーターは、CA の CS.cfg ファイルの ca.profiles.defaultSigningAlgsAllowed パラメーターで指定された各値に設定できます。詳細は、『Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『署名アルゴリズムの制約』 セクションを参照してください。
    署名アルゴリズム(EC)は key_type (ecc)と一致する必要があります。
    key_size パラメーターの選択肢は次のとおりです。
    • nistp256
    • nistp384
    • nistp521
    key_type パラメーターで許可される選択肢は ecc です。

他のサブシステムの設定

「サブシステムに依存しない設定」 に加えて、下位 CA、KRA、または OCSP をインストールするために、 [CA]、KRA、または OCSP セクションに以下の設定が必要です。
  1. ルート CA ではないサブシステムは、外部 CA と呼ばれることもある 2 ステップインストールメカニズムを使用します。最初のステップとして、それぞれのサブシステム固有のセクションの下に次のパラメーターを追加します。
    pki_external=True
    pki_external_step_two=False
  2. この手順は、インストールするサブシステムによって異なります。
    Subordinate CA
    [CA] セクションに以下の設定を追加します。
    1. ルート CA の CA セクションからすべての設定を追加します。
    2. システム証明書署名要求 (CSR) の出力パスを設定します。
      pki_ca_signing_csr_path=path
      pki_ocsp_signing_csr_path=path
      pki_audit_signing_csr_path=path
      pki_sslserver_csr_path=path
      pki_subsystem_csr_path=path
      pki_admin_csr_path=path
    OCSP
    OCSP セクションで次のように設定し ます。
    1. 次のパラメーターを指定して、インストール中に自動的に作成されるブートストラップ OCSP 管理 ユーザーのデータを設定します。
      pki_admin_nickname=bootstrap_OCSP_admin
      pki_admin_name=bootstrap_OCSP_administrator_name
      pki_admin_uid=ocspadmin
      pki_admin_email=ocspadmin@example.com
      Certificate System は、このブートストラップアカウントに管理者とエージェントの権限を割り当てます。インストール後にこのアカウントを使用して、実際の管理者、エージェント、および監査者のアカウントを作成します。
    2. サブシステム依存の証明書の HSM トークンを指定します。
      pki_ocsp_signing_token=HSM_token_name
    3. RSA Certificate System インスタンスを構築する場合は、次の設定を使用します。
      pki_ocsp_signing_key_algorithm=SHA256withRSA
      pki_ocsp_signing_key_size=4096
      pki_ocsp_signing_key_type=rsa
      pki_ocsp_signing_signing_algorithm=SHA256withRSA
      key_algorithm パラメーターの選択肢は次のとおりです。
      • SHA256withRSA
      • SHA384withRSA
      • SHA384withRSA
      注記
      このパラメーターは、CA の CS.cfg ファイルの ca.profiles.defaultSigningAlgsAllowed パラメーターで指定された各値に設定できます。詳細は、『Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『署名アルゴリズムの制約』 セクションを参照してください。
      署名アルゴリズム(RSA)は key_type (rsa)と一致する必要があります。
      key_size パラメーターの選択肢は次のとおりです。
      • 2048
      • 4096
      key_type パラメーターで許可される選択肢は rsa のみです。
      注記
      CA インスタンスタイプ (RSA または ECC) を OCSP レスポンダータイプ (RSA または ECC) と一致させることをお勧めします。
    4. 証明書の作成時に RSA の代わりに楕円曲線暗号 (ECC) を使用するには、次のように設定します。
      pki_ocsp_signing_key_algorithm=SHA256withEC
      pki_ocsp_signing_key_size=nisp256
      pki_ocsp_signing_key_type=ecc
      pki_ocsp_signing_signing_algorithm=SHA256withEC
      key_algorithm パラメーターの選択肢は次のとおりです。
      • SHA256withEC
      • SHA384withEC
      • SHA512withEC
      注記
      このパラメーターは、CA の CS.cfg ファイルの ca.profiles.defaultSigningAlgsAllowed パラメーターで指定された各値に設定できます。詳細は、『Red Hat Certificate System 管理ガイド (Common Criteria Edition)』 の 『署名アルゴリズムの制約』 セクションを参照してください。
      署名アルゴリズム(EC)は key_type (ecc)と一致する必要があります。
      key_size パラメーターの選択肢は次のとおりです。
      • nistp256
      • nistp384
      • nistp521
      key_type パラメーターで許可される選択肢は ecc のみです。
      注記
      CA インスタンスタイプ (RSA または ECC) を OCSP レスポンダータイプ (RSA または ECC) と一致させることをお勧めします。
    5. システム証明書署名リクエスト (CSR) の出力パスを設定します。
      pki_ocsp_signing_csr_path=path
      pki_audit_signing_csr_path=path
      pki_sslserver_csr_path=path
      pki_subsystem_csr_path=path
      pki_admin_csr_path=path
    KRA
    KRA セクションで以下を設定し ます。
    1. 次のパラメーターを指定して、インストール中に自動的に作成されるブートストラップ KRA 管理 ユーザーのデータを設定します。
      pki_admin_nickname=bootstrap_KRA_admin
      pki_admin_name=bootstrap_KRA_administrator_name
      pki_admin_uid=kraadmin
      pki_admin_email=kraadmin@example.com
      Certificate System は、このブートストラップアカウントに管理者とエージェントの権限を割り当てます。インストール後にこのアカウントを使用して、実際の管理者、エージェント、および監査者のアカウントを作成します。
    2. サブシステム依存の証明書の HSM トークンを指定します。
      pki_transport_token=HSM_token_name
      pki_storage_token=HSM_token_name
    3. RSA は、KRA ストレージ証明書とトランスポート証明書の両方でサポートされている唯一のキータイプです。デフォルトでは、キーの長さは 2048 ビットです。代わりに 4096 ビットキーを選択するには、以下のパラメーターを追加します。
      pki_transport_key_size=4096
      pki_storage_key_size=4096
    4. システム証明書署名リクエスト (CSR) の出力パスを設定します。
      pki_kra_signing_csr_path=path
      pki_audit_signing_csr_path=path
      pki_sslserver_csr_path=path
      pki_subsystem_csr_path=path
      pki_admin_csr_path=path

7.3.2.2. pkispawn ステップ 1 インストールの開始

「インストールの最初ステップ用の設定ファイルの作成」の説明に従って設定ファイルを準備したら、インストールの最初のステップを開始します。
  • ルート CA の場合:
    # pkispawn -f /root/pki/config.root-CA.txt -s CA
  • 下位 CA またはその他の非 CA サブシステムの場合:
    # pkispawn -f /root/pki/config.subsystem.txt -s subsystem
    サブシステムを次のいずれかの サブシステム に置き換えます: CAKRA、または OCSP。たとえば、KRA インストールの場合:
    # pkispawn -f /root/pki/config.KRA.txt -s KRA

7.3.2.3. 2 つの pkispawn インストール手順間の設定

pkispawn ステップ 1 インストールの開始」 で説明されているインストール手順が修了したら、pkispawn ステップ 2 インストールの開始」 が実行され、実際の設定を開始する前にインスタンス固有の設定ファイルを手動で更新できます。
必要な手順については、pkispawn 手順の手順 1 を完了した後に、本セクションで説明されているアクションを実行します。
オプションの手順については、パートIII「Certificate System の設定」 を参照してください。有用なインストール手順には、次のものがあります。
7.3.2.3.1. 署名監査ログの有効化
署名された監査ロギング機能により、不正なログ操作を防止できます。
詳細は、「署名監査ログの有効化および設定」を参照してください。
7.3.2.3.2. KRA の暗号化モードへの設定
安全なキー抽出をサポートしていないハードウェアセキュリティーモジュール (HSM) を使用している場合は、キー回復機関 (KRA) を暗号化モードに設定する必要があります。詳細は、「KRA で AES 暗号化を使用する場合の HSM の制約の解決」 を参照してください。
7.3.2.3.3. OCSP の有効化
OCSP (Online Certificate Status Protocol) を有効にする方法は、「サブシステムの証明書失効チェックの有効化」を参照してください。

7.3.2.4. pkispawn ステップ 2 インストールの開始

「2 つの pkispawn インストール手順間の設定」 を完了したら、pkispawn インストールの 2 番目のステップを開始します。
  • Root CA:
    # pkispawn -f /root/pki/config.root-CA.txt -s CA --skip-installation
    設定手順に成功すると、pkispawn ユーティリティーにインストールの概要が表示されます。以下に例を示します。
    ================================================================
                           INSTALLATION SUMMARY
    ================================================================
    
      Administrator's username:             caadmin
      Administrator's PKCS #12 file:
            /root/.dogtag/instance_name/ca_admin_cert.p12
    
      To check the status of the subsystem:
            systemctl status pki-tomcatd@instance_name.service
    
      To restart the subsystem:
            systemctl restart pki-tomcatd@instance_name.service
    
      The URL for the subsystem is:
            https://server.example.com:8443/ca/
    
      PKI instances will be enabled upon system boot
    
    ================================================================
  • 下位 CA またはその他の非 CA サブシステム:
    1. CSR を CA に送信して、証明書を発行します。
      非ルート CA サブシステムとルート CA のインストールの主な違いの 1 つは、pkispawn ユーティリティーのステップ 2 を実行する前に、他のサブシステムがシステム証明書署名要求(CSR)を CA に送信する必要があることです。
      「他のサブシステムの設定」 の最初のステップで、インストールするサブシステムの pkispawn 設定ファイルに *_csr_path パラメーターを追加しました。pkispawn の最初のステップに成功すると、Certificate System は CSR を生成し、指定されたパスに保存します。これらの証明書リクエストは PKCS#10 形式であり、CA に送信する前に、Certificate Management over CMS (CMC) 形式に変換する必要があります。4.2 で指定された指示に従ってください。Red Hat Certificate System 管理ガイドの証明書署名リクエストの作成。pkispawn コマンドの 2 番目のステップを実行するときに、作成されるシステム証明書が必要です。
      さらに、PKCS#7 形式の発行元 CA の証明書チェーンが必要です。取得するには:
      1. 発行 CA の EE URL にアクセスします。
      2. RetrievalImport CA Certificate Chain に移動し、Display the CA certificate chain in PKCS#7 をクリックしてサーバーにインポートし ます。
      3. 送信 をクリックします。
      4. 表示された PKCS#7- 形式の出力を、Certificate System ホストの /root/pki/cert_chain.p7b などのテキストファイルにコピーします。
    2. pkispawn コマンドの 2 番目のステップの設定ファイルを作成します。
      1. 最初の手順から pkispawn 設定ファイルをコピーし、新しく作成されたファイルを pkispawn コマンドのステップ 2 用に編集します。
        1. DEFAULT セクションで、前の手順で準備した発行元の CA の証明書チェーンファイルへのパスと、CA 署名証明書のニックネームを設定します。以下に例を示します。
          [DEFAULT]
          pki_ca_signing_nickname=CA Signing Certificate
          pki_ca_signing_cert_path=/root/pki/cert_chain.p7b
        2. インストールするサブシステムに応じて、サブシステム固有のセクション(CAKRA、または OCSP)に次の設定を追加します。
          Subordinate CA
          pki_ca_signing_crt_path=/root/pki/subsystem/ocsp_signing.crt
          pki_subsystem_crt_path=/root/pki/subsystem/subsystem.crt
          pki_sslserver_crt_path=/root/pki/subsystem/sslserver.crt
          pki_audit_signing_crt_path=/root/pki/subsystem/ca_audit_signing.crt
          pki_admin_crt_path=/root/pki/subsystem/ca_admin.crt
          pki_external_step_two=True
          OCSP
          pki_ocsp_signing_crt_path=/root/pki/subsystem/ocsp_signing.crt
          pki_subsystem_crt_path=/root/pki/subsystem/subsystem.crt
          pki_sslserver_crt_path=/root/pki/subsystem/sslserver.crt
          pki_audit_signing_crt_path=/root/pki/subsystem/ocsp_audit_signing.crt
          pki_admin_crt_path=/root/pki/subsystem/ocsp_admin.crt
          pki_external_step_two=True
          KRA
          pki_storage_crt_path=/root/pki/subsystem/kra_storage.crt
          pki_transport_crt_path=/root/pki/subsystem/kra_transport.crt
          pki_subsystem_crt_path=/root/pki/subsystem/subsystem.crt
          pki_sslserver_crt_path=/root/pki/subsystem/sslserver.crt
          pki_audit_signing_crt_path=/root/pki/subsystem/kra_audit_signing.crt
          pki_admin_crt_path=/root/pki/subsystem/kra_admin.crt
          pki_external_step_two=True
    3. pkispawn コマンドを実行します。
      # pkispawn -f /root/pki/config.subsystem.txt -s subsystem
      サブシステムを次のいずれかの サブシステム に置き換えます: CAKRA、または OCSP。たとえば、KRA インストールの場合:
      # pkispawn -f /root/pki/config.KRA.txt -s KRA

7.3.3. pkispawn を使用した単一ステップのインストール(TMS のみ)

TPS および TKS サブシステムは、pkispawn シングルステップインストールプロセスを使用してインストール できます。
pkispawn には設定ファイルが必要です。

7.3.3.1. pkispawn シングルステップインストール用の設定ファイルの作成

「サブシステムに依存しない設定」 に従って、pkispawn 設定ファイルのサブシステムに依存しない部分を入力します。
さらに、DEFAULT セクションの下 に以下を追加します。
pki_security_domain_hostname=example.redhat.com
pki_security_domain_https_port=8443
pki_security_domain_user=caadmin
pki_security_domain_password=[SD password]
次に、サブシステム固有のセクション (TKS または TPS) を次のように追加します。
TKS
TKS セクションで以下を設定し ます。
  • 次のパラメーターを指定して、インストール中に自動的に作成されるブートストラップ TKS 管理者ユーザーのデータを設定します。
    pki_admin_nickname=bootstrap_TKS_admin
    pki_admin_name=bootstrap_TKS_administrator_name
    pki_admin_uid=tksadmin
    pki_admin_email=tksadmin@example.com
    Red Hat Certificate System は、このブートストラップアカウントに管理者とエージェントの権限を割り当てます。インストール後にこのアカウントを使用して、管理者および監査者のアカウントを作成します。
TPS
TPS セクションで次のように設定し ます。
  1. 次のパラメーターを指定して、インストール中に自動的に作成されるブートストラップ TPS 管理ユーザーのデータを設定します。
    pki_admin_nickname=bootstrap_TPS_admin
    pki_admin_name=bootstrap_TPS_administrator_name
    pki_admin_uid=tpsadmin
    pki_admin_email=tpsadmin@example.com
    Red Hat Certificate System は、このブートストラップアカウントに管理者とエージェントの権限を割り当てます。インストール後にこのアカウントを使用して、管理者アカウントと監査者アカウントを作成します。
  2. TPS 認証データベースの LDAP ベース DN を設定します。
    pki_authdb_basedn=base_DN_of_the_TPS_authentication_database
  3. サーバー側の鍵の生成とアーカイブを有効にします。
    pki_enable_server_side_keygen=True

7.3.3.2. シングルステップインストールでの pkispawn の実行

pkispawn コマンドを実行します。
# pkispawn -f /root/pki/config.TKS.txt -s TKS
または
# pkispawn -f /root/pki/config.TPS.txt -s TPS

7.3.3.3. シングルステップインストールのインストール後

以下の手順を実施します。
上記の手順を完了したら、インストール後の操作について 「インストール後のタスク」 に従ってください。

7.4. インストール後のタスク

pkispawn ユーティリティーを使用したインストールが完了したら、インストール後に特定のアクションが必要になります。さらに、サイトの設定によっては、いくつかのオプションのアクションも役立ちます。
オプションの手順については、パートIII「Certificate System の設定」 を参照してください。有用なインストール後の手順には、次のものがあります。
必要な手順については、証明書システムをインストールした後、「インストール後のタスク」 に記載されているアクションを実行してください。

7.4.1. RHCS の日付/時刻の設定

RHCS を実行するには、時刻が正しいことが重要です。第 15 章を参照してください。Red Hat Certificate System 管理ガイドの Red Hat Enterprise Linux 7.6 での時刻と日付の設定。

7.4.2. Directory Server (CA) での一時的な自己署名証明書の置き換え

内部 LDAP サーバーが一時的な自己署名サーバー証明書を使用して最初に作成された場合は、インストールしたばかりの CA によって発行された新しい証明書に置き換えます。
詳細は、「一時的な証明書の置き換え」 を参照してください。

7.4.3. 内部 LDAP サーバーの TLS クライアント認証の有効化

Red Hat Certificate System は、TLS 相互認証を介して内部 LDAP サーバーと通信する必要があります。詳細については、TLS クライアント認証の有効化を参照してください。

7.4.4. セッションタイムアウトの設定

さまざまなタイムアウト設定がシステムに存在し、終了前に TLS セッションがアイドル状態の意地する時間に影響を与える可能性があります。詳細は、「セッションのタイムアウト」を参照してください。

7.4.5. CRL または証明書の発行

CRL 公開は、OCSP サービスを提供する際に重要です。証明書の公開は任意になりますが、多くの場合、サイトで必要になります。詳細については、第 7 章を参照してください。Red Hat Certificate System 管理ガイドの発行証明書と CRL。

7.4.6. 証明書登録プロファイル (CA) の無効化

CMC 証明書の登録プロファイルのみが許可されます。他のすべてのプロファイルは無効にする必要があります。
詳細は、「証明書の登録プロファイルの無効化」 を参照してください。

7.4.7. アクセスバナーの有効化

ユーザーインターフェイスバナーが必要です。
詳細は、「アクセスバナーの有効化」 を参照してください。

7.4.8. Watchdog サービスの有効化

ウォッチドッグ(nuxwdog)サービスは、セキュアなシステムパスワード管理を提供します。
詳細は、「Watchdog サービスの有効化」を参照してください。

7.4.9. CMC 登録および失効 (CA) の設定

証明書の登録と取り消しは、CMC 経由で行う必要があります。

7.4.10. Java コンソールに TLS クライアント認証を要求する

Certificate System 管理者が Java コンソールにログインするときにユーザー TLS クライアント証明書を提示する必要があります。「TLS クライアント証明書認証を使用するための pkiconsole の要件設定」を参照してください。

7.4.11. ロールユーザーの作成

ブートストラップユーザーを削除できるように、実際のロールのユーザーを作成する必要があります。
ユーザーを作成して異なる特権ロールに割り当てて、Certificate System を管理します。14章ロールユーザーの作成を参照してください。

7.4.12. Bootstrap ユーザーの削除

実際のロールのユーザーが作成されると、ブートストラップユーザーは削除されます。
個人に割り当てられた新しい管理者アカウントを作成した後、インストール中に自動的に作成されたアカウントを削除します。詳細は、15章Bootstrap ユーザーの削除 を参照してください。

7.4.13. マルチロールサポートの無効化

ブートストラップユーザーを削除したら、マルチロールサポートを無効にする必要があります。
詳細は、「マルチロールサポートの無効化」 を参照してください。

7.4.14. KRA の設定

7.4.14.1. KRA (Key Recovery Authority) に複数のエージェント承認の要件の追加

キーの回復を承認するには、複数の KRA エージェントが必要です。
詳細は、??? を参照してください。

7.4.14.2. KRA 暗号化設定の設定

特定のキー暗号化/ラッピングアルゴリズムのみが許可されます。詳細は、「KRA 操作の暗号化」 を参照してください。

7.4.15. ユーザーインターフェイスを使用するようにユーザーを設定

ユーザーが承認されたユーザーインターフェイスを使用する前に、初期化を行う必要があります。
ユーザー (管理ロールなど) は、ユーザーインターフェイスにアクセスするためにクライアントを設定するために必要です。2.1 を参照してください。Red Hat Certificate System の管理ガイドのクライアント NSS データベースの初期化。

第8章 インストールのトラブルシューティング

本章では、Certificate System のインストール時に発生するより一般的なインストールと移行の問題のトラブルシューティングを説明します。

8.1. よくある質問 (FAQ)

8.1.1. インストールシステム

問:
Certificate System パッケージまたは更新は表示されません。
答:
お使いのシステムが Red Hat サブスクリプション管理サービスに正しく登録され、有効なサブスクリプションが割り当てられ、Certificate System のリポジトリーが有効になっていることを確認します。詳細は、「Red Hat サブスクリプションの添付および Certificate System パッケージリポジトリーの有効化」を参照してください。
問:
init スクリプトは OK ステータスを返しましたが、その CA インスタンスは応答しません。理由
答:
これは起こらないはずです。通常 (常にではありませんが)、これは CA のリスナーの問題を示しますが、さまざまな原因が考えられます。発生したエラーを確認するには、以下のコマンドを実行して journal ログを確認します。
journalctl -u pki-tomcatd@instance_name.service
または
journalctl -u pki-tomcatd-nuxwdog@instance_name.service (if using the nuxwdog watchdog)
または、/var/log/pki/instance_name/subsystem_type/debug にあるデバッグログ ファイルを調べます。
1 つの状況は、CA の PID があり、プロセスが実行されているが、サーバーのリスナーが開かれていないことを示している場合です。これにより、Java 呼び出しクラスエラーが catalina.out ファイルに返されます。
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 設定ファイルで正しいクラスパスを設定します。次に、次のコマンドを使用して CA を再起動します。
systemctl restart pki-tomcatd@instance_name.service
または
systemctl restart pki-tomcatd-nuxwdog@instance_name.service (if using the nuxwdog watchdog)
問:
CA 署名証明書のサブジェクト名をカスタマイズするには、pkispawn 対話インストールモードを使用してこれを行う方法は表示されません。
答:
これを行うには、/etc/pki/default.cfg ファイルへのデルタリンクを表す設定ファイルが必要です。pkispawn(8) および pki_default.cfg(5) の man ページを参照してください。
問:
サブシステムインスタンスを設定した後、Web サービスページに接続しようとすると、HTTP 500 エラーコードが表示されます。
答:
これは予期しない一般的なエラーであり、さまざまな原因が考えられます。ジャーナルシステム、および デバッグ ログファイルでインスタンスに対して、発生したエラーを確認します。これは、いくつかの一般的なエラーを示していますが、他の方法は多数あります。

エラー #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)
インスタンスの デバッグ ログは以下のようになります。
[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)

8.1.2. Java コンソール

問:
pkiconsole を開くことができません。標準出力(stdout)に Java の例外が表示されます。
答:
これはおそらく、間違った JRE がインストールされているか、間違った JRE がデフォルトとして設定されていることを意味します。alternatives --config java を実行して、選択した JRE を確認します。Red Hat Certificate System には OpenJDK 1.7 が必要です。
問:
pkiconsole の実行を試みましたが、標準出力 (stdout) でソケット例外が取得されました。理由
答:
これは、ポートに問題があることを意味します。管理ポートの 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.
============================================

8.2. ハードウェアセキュリティーモジュール

8.2.1. トークンの検出

Certificate System をインストールしたら、トークンを検出できるかどうかを確認するには、TokenInfo ユーティリティーを使用して、サブシステムインスタンスの alias ディレクトリーを参照します。これは、Certificate System パッケージのインストール後に利用できる Certificate System ツールです。
以下に例を示します。
# TokenInfo /var/lib/pki/pki-tomcat/alias
このユーティリティーは、Certificate System にインストールされたトークンだけでなく、Certificate System で検出できるすべてのトークンを返します。

8.2.2. トークンの表示

Certificate System をインストールしたら、トークンのリストを表示するには、modutil ユーティリティーを使用します。
  1. インスタンスの alias ディレクトリーに移動します。以下に例を示します。
    # cd /var/lib/pki/pki-tomcat/alias
  2. インストールされている PKCS #11 モジュールに関する情報と、modutil ツールを使用して、対応するトークンに関する情報を表示します。
    # modutil -dbdir . -nocertdb -list
    

パート III. Certificate System の設定

第9章 Certificate System の設定ファイル

すべてのサブシステムの主な設定ファイルは CS.cfg ファイルです。本章では、CS.cfg ファイルを編集するための基本情報とルールについて説明します。この章では、パスワードや Web サービスファイルなど、サブシステムで使用されるその他の便利な設定ファイルについても説明します。

9.1. Certificate System サブシステムのファイルおよびディレクトリーの場所

Certificate System サーバーは、1 つ以上 のサブシステムを含む Apache Tomcat インスタンスで設定されます。各サブシステムは、特定のタイプの PKI 関数の要求を処理する Web アプリケーションで設定されます。
利用可能なサブシステムは CA、KRA、OCSP、TKS、および TPS です。各インスタンスには、PKI サブシステムのタイプを 1 つのみ含めることができます。
pkispawn コマンドを使用して、特定のインスタンス内にサブシステムをインストールできます。

9.1.1. インスタンス固有の情報

デフォルトインスタンスの情報 (pki-tomcat) については、???を参照してください。
表9.1 証明書サーバーポートの割り当て (デフォルト)
ポートタイプ ポート番号 注記
セキュアなポート 8443 HTTPS 経由でエンドユーザー、エージェント、および管理者により PKI サービスにアクセスするために使用される主要なポート。
セキュアなポート 8080 HTTP を介した一部のエンドエンティティー機能のために、安全ではないサーバーにアクセスするために使用されます。たとえば、すでに署名されているため暗号化する必要のない CRL を提供するために使用されます。
AJP ポート 8009 フロントエンドの Apache プロキシーサーバーから AJP 接続を介してサーバーにアクセスするために使用されます。HTTPS ポートにリダイレクトします。
Tomcat ポート 8005 Web サーバーによって使用されます。

9.1.2. CA サブシステム情報

このセクションには、CA サブシステムに関する詳細が含まれています。CA サブシステムは、Certificate Server インスタンスに Web アプリケーションとしてインストールできるサブシステムの 1 つです。
表9.2 デフォルトインスタンスの CA サブシステム情報 (pki-tomcat)
設定
メインディレクトリー /var/lib/pki/pki-tomcat/ca/
設定ディレクトリー /var/lib/pki/pki-tomcat/ca/conf/[a]
設定ファイル /var/lib/pki/pki-tomcat/ca/conf/CS.cfg
サブシステム証明書 CA 署名証明書
OCSP 署名証明書 (CA の内部 OCSP サービス用)
TLS サーバー証明書
監査ログ署名証明書
サブシステム証明書[b]
セキュリティーデータベース /var/lib/pki/pki-tomcat/alias/[c]
ログファイル /var/lib/pki/pki-tomcat/ca/logs/[d]
ログのインストール /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/
[a] /etc/pki/pki-tomcat/ca/ のエイリアス
[b] サブシステム証明書はセキュリティードメインによって常に発行されるため、クライアント認証を必要とするドメインレベルの操作はこのサブシステム証明書をベースにします。
[c] すべてのサブシステム証明書がインスタンスセキュリティーデータベースに保存されることに注意してください。
[d] /var/log/pki/pki-tomcat/ca/ へのエイリアス

9.1.3. KRA サブシステム情報

このセクションには、KRA サブシステムに関する詳細が含まれています。CA サブシステムは、Certificate Server インスタンスに Web アプリケーションとしてインストールできるサブシステムの 1 つです。
表9.3 デフォルトインスタンスの KRA サブシステム情報 (pki-tomcat)
設定
メインディレクトリー /var/lib/pki/pki-tomcat/kra/
設定ディレクトリー /var/lib/pki/pki-tomcat/kra/conf/[a]
設定ファイル /var/lib/pki/pki-tomcat/kra/conf/CS.cfg
サブシステム証明書 トランスポート証明書
ストレージ証明書
TLS サーバー証明書
監査ログ署名証明書
サブシステム証明書[b]
セキュリティーデータベース /var/lib/pki/pki-tomcat/alias/[c]
ログファイル /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/
管理サービス: /var/lib/pki/pki-tomcat/kra/webapps/kra/admin/
[a] /etc/pki/pki-tomcat/kra/ にリンク
[b] サブシステム証明書はセキュリティードメインによって常に発行されるため、クライアント認証を必要とするドメインレベルの操作はこのサブシステム証明書をベースにします。
[c] すべてのサブシステム証明書がインスタンスセキュリティーデータベースに保存されることに注意してください。

9.1.4. OCSP サブシステム情報

このセクションには、OCSP サブシステムに関する詳細が含まれています。CA サブシステムは、Certificate Server インスタンスに Web アプリケーションとしてインストールできるサブシステムの 1 つです。
表9.4 デフォルトのインスタンスの OCSP サブシステム情報 (pki-tomcat)
設定
メインディレクトリー /var/lib/pki/pki-tomcat/ocsp/
設定ディレクトリー /var/lib/pki/pki-tomcat/ocsp/conf/[a]
設定ファイル /var/lib/pki/pki-tomcat/ocsp/conf/CS.cfg
サブシステム証明書 トランスポート証明書
ストレージ証明書
TLS サーバー証明書
監査ログ署名証明書
サブシステム証明書[b]
セキュリティーデータベース /var/lib/pki/pki-tomcat/alias/[c]
ログファイル /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/
管理サービス: /var/lib/pki/pki-tomcat/ocsp/webapps/ocsp/admin/
[a] /etc/pki/pki-tomcat/ocsp/ へのリンク
[b] サブシステム証明書はセキュリティードメインによって常に発行されるため、クライアント認証を必要とするドメインレベルの操作はこのサブシステム証明書をベースにします。
[c] すべてのサブシステム証明書がインスタンスセキュリティーデータベースに保存されることに注意してください。

9.1.5. TKS サブシステム情報

このセクションには、TKS サブシステムに関する詳細が含まれています。CA サブシステムは、Certificate Server インスタンスに Web アプリケーションとしてインストールできるサブシステムの 1 つです。
表9.5 デフォルトインスタンスの TKS サブシステム情報 (pki-tomcat)
設定
メインディレクトリー /var/lib/pki/pki-tomcat/tks/
設定ディレクトリー /var/lib/pki/pki-tomcat/tks/conf/[a]
設定ファイル /var/lib/pki/pki-tomcat/tks/conf/CS.cfg
サブシステム証明書 トランスポート証明書
ストレージ証明書
TLS サーバー証明書
監査ログ署名証明書
サブシステム証明書[b]
セキュリティーデータベース /var/lib/pki/pki-tomcat/alias/[c]
ログファイル /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/
管理サービス: /var/lib/pki/pki-tomcat/tks/webapps/tks/admin/
[a] /etc/pki/pki-tomcat/tks/ にリンク
[b] サブシステム証明書はセキュリティードメインによって常に発行されるため、クライアント認証を必要とするドメインレベルの操作はこのサブシステム証明書をベースにします。
[c] すべてのサブシステム証明書がインスタンスセキュリティーデータベースに保存されることに注意してください。

9.1.6. TPS サブシステム情報

このセクションには、TPS サブシステムに関する詳細が含まれています。CA サブシステムは、Certificate Server インスタンスに Web アプリケーションとしてインストールできるサブシステムの 1 つです。
表9.6 デフォルトインスタンスの TPS サブシステム情報 (pki-tomcat)
設定
メインディレクトリー /var/lib/pki/pki-tomcat/tps/
設定ディレクトリー /var/lib/pki/pki-tomcat/tps/conf/[a]
設定ファイル /var/lib/pki/pki-tomcat/tps/conf/CS.cfg
サブシステム証明書 トランスポート証明書
ストレージ証明書
TLS サーバー証明書
監査ログ署名証明書
サブシステム証明書[b]
セキュリティーデータベース /var/lib/pki/pki-tomcat/alias/[c]
ログファイル /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/
管理サービス: /var/lib/pki/pki-tomcat/tps/webapps/tps/admin/
[a] /etc/pki/pki-tomcat/tps/ にリンク
[b] サブシステム証明書はセキュリティードメインによって常に発行されるため、クライアント認証を必要とするドメインレベルの操作はこのサブシステム証明書をベースにします。
[c] すべてのサブシステム証明書がインスタンスセキュリティーデータベースに保存されることに注意してください。

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

サーバー全般操作のために、すべての Certificate System サブシステムインスタンスで使用されるディレクトリーがあります (??? に記載されています)。
表9.7 サブシステムファイルの場所
ディレクトリーの場所 コンテンツ
/var/lib/instance_name ユーザー固有のディレクトリーの場所およびカスタマイズされた設定ファイル、プロファイル、証明書データベース、Web ファイル、およびサブシステムインスタンスの他のファイルの場所であるメインインスタンスディレクトリーが含まれます。
/usr/share/java/pki Certificate System サブシステムによって共有される Java アーカイブファイルが含まれます。すべてのサブシステムの共有ファイルとともに、サブディレクトリーにサブシステム固有のファイルがあります。
表9.7 サブシステムファイルの場所
pki/ca/ (CA)
pki/kra/ (KRA)
pki/ocsp/ (OCSP)
pki/tks/ (TKS)
TPS サブシステムが使用していない
/usr/share/pki Certificate System インスタンスの作成に使用する一般的なファイルとテンプレートが含まれます。すべてのサブシステムの共有ファイルとともに、サブディレクトリーにサブシステム固有のファイルがあります。
表9.7 サブシステムファイルの場所
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 サブシステムが使用していない
表9.7 サブシステムファイルの場所
/usr/lib/httpd/modules
/usr/lib64/httpd/modules
TPS サブシステムによって使用される Apache モジュールが含まれます。CA、KRA、OCSP、または TKS サブシステムでは使用されません。
表9.7 サブシステムファイルの場所
/usr/lib/mozldap
/usr/lib64/mozldap
TPS サブシステムが使用する Mozilla LDAP SDK ツール。CA、KRA、OCSP、または TKS サブシステムでは使用されません。

9.2. CS.cfg ファイル

Certificate System サブシステムのランタイムプロパティーは、一連の設定パラメーターで管理されます。これらのパラメーターは、起動時にサーバーが読み込む CS.cfg ファイルに保存されます。
CS.cfg (ASCII ファイル)が作成され、サブシステムの初回インストール時に適切な設定パラメーターが入力されます。インスタンスの機能の変更方法は、サブシステムコンソールで変更することが推奨されます。これが推奨される方法です。管理コンソールで行った変更は、設定ファイルに反映されます。
CS.cfg 設定ファイルを直接編集することもできます。場合によっては、サブシステムを管理する最も簡単な方法になります。

9.2.1. CS.cfg ファイルの検索

Certificate System サブシステムの各インスタンスには、独自の設定ファイル CS.cfg があります。各サブシステムインスタンスのファイルの内容は、サブシステムの設定方法、追加の設定および設定 (新規プロファイルの追加、セルフテストの有効化など)、サブシステムのタイプによって異なります。
CS.cfg ファイルは、インスタンスの設定ディレクトリーにあります。
/var/lib/pki/instance_name/conf
以下に例を示します。
/var/lib/pki/pki-tomcat/ca/conf

9.2.2. 設定ファイルの編集

警告
設定パラメーターに精通していない場合や、変更がサーバーに許容されていることを認識せずに、設定ファイルを直接編集しないでください。設定ファイルが正しく変更されていないと、Certificate System は起動に失敗します。設定が間違っていると、データが失われる可能性があります。
CS.cfg ファイルを変更するには、以下を実行します。
  1. サブシステムインスタンスを停止します。
    systemctl stop pki-tomcatd@instance_name.service
    または
    systemctl stop pki-tomcatd-nuxwdog@instance_name.service (if using nuxwdog watchdog)
    設定ファイルは、インスタンスの起動時にキャッシュに保存されます。コンソールを介してインスタンスに加えた変更は、ファイルのキャッシュバージョンに変更されます。サーバーが停止または再起動されると、キャッシュに保存されている設定ファイルがディスクに書き込まれます。設定ファイルを編集する前にサーバーを停止すると、サーバーが停止するとキャッシュバージョンの変更が上書きされます。
  2. /var/lib/pki/instance_name/conf ディレクトリーを開きます。
  3. テキストエディターで CS.cfg ファイルを開きます。
  4. ファイル内のパラメーターを編集して、変更を保存します。
  5. サブシステムインスタンスを開始します。
    systemctl start pki-tomcatd@instance_name.service
    または
    systemctl start pki-tomcatd-nuxwdog@instance_name.service (if using nuxwdog watchdog)

9.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 ファイルの行をコメントアウトするのではなく、それらの行を削除するだけです。
インスタンスの同じ領域を設定するパラメーターは、同じブロックにグループ化される傾向があります。

例9.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/pki-tomcat/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 クラスがあります。

例9.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 ファイルパラメーターの例ではありません。また、各サブシステム設定ファイルで利用可能なパラメーターと使用されるパラメーターは異なりますが、類似しています。

9.2.3.1. CA の基本インスタンスパラメーター: pkispawn ファイル ca.cfg

基本的な設定は、サブシステムの機能や動作に直接関係することなく、インスタンス自体に固有のものです。これには、インスタンス名、root ディレクトリー、プロセスのユーザー ID、およびポート番号の設定が含まれます。インスタンスの初回インストールまたは設定時に割り当てられる設定の多くは、pkispawn で示されます。

例9.3 CA の基本的なインスタンスパラメーター

[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 インスタンスと一致している 必要があり ます。

9.2.3.2. ログ設定

サブシステムのタイプによって、設定可能なログにはいくつかのタイプがあります。各タイプのログには、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/log/pki-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
これらのパラメーターとその値の詳細は、「証明書システムログの設定」を参照してください。監査ログが有効になっている限り、これらの値はコンプライアンスには影響しません。

9.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 のセキュアな設定とパラメーターの説明は、「TLS クライアント認証の有効化」 を参照してください。パラメーターパスは表示される内容とは異なりますが、両方の場所で同じ名前と値が許可されます。
CA は、ユーザーリクエストの承認メカニズムも必要です。これは、承認の設定と同様に、適切な認証プラグインを特定し、そのためにインスタンスを設定して行います。
auths.impl.AgentCertAuth.class=com.netscape.cms.authentication.AgentCertAuthentication
auths.instance.AgentCertAuth.agentGroup=Certificate Manager Agents
auths.instance.AgentCertAuth.pluginName=AgentCertAuth

9.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

9.2.3.5. 必要なサブシステムの設定

少なくとも、各サブシステムは CA に依存するため、CA (およびその他の必要なサブシステム) をサブシステムの設定で設定する必要があります。別のサブシステムへの接続の前に conn. を付けてから、サブシステムのタイプと番号が付けられます。
conn.ca1.clientNickname=subsystemCert cert-pki-tps
conn.ca1.hostadminport=server.example.com:9445
conn.ca1.hostagentport=server.example.com:9444
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

9.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 のセキュアな設定とパラメーターの説明は、「TLS クライアント認証の有効化」を参照してください。「TLS クライアント認証の有効化」 の一部として行われること以外に追加の設定は必要ありません。

9.2.3.7. キューの有効化および設定

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

9.2.3.8. PKI タスクの設定

CS.cfg ファイルは、すべてのサブシステムに PKI タスクを設定するために使用されます。パラメーターは、重複のないサブシステムごとに異なります。
たとえば、KRA には、鍵を復元するために必要な数のエージェントの設定があります。
kra.noOfRequiredRecoveryAgents=1
各サブシステムの CS.cfg ファイルを確認して、PKI タスク設定について理解してください。ファイル内のコメントは、さまざまなパラメーターが何であるかを学習するための適切なガイドです。
  • CA 設定ファイルには、すべての証明書プロファイルおよびポリシー設定と、CRL を生成するルールが一覧表示されます。
  • TPS は、さまざまなトークン操作を設定します。
  • TKS は、さまざまな鍵タイプからの鍵を取得するプロファイルを一覧表示します。
  • OCSP は、さまざまな鍵セットの鍵情報を設定します。

9.2.3.9. CA 発行証明書の DN 属性の変更

Certificate System が発行した証明書で、DN は証明書を所有するエンティティーを特定します。いずれの場合も、Certificate System が Directory Server に接続されている場合、証明書内の DN の形式はディレクトリー内の DN の形式と一致する必要があります。名前が完全に一致する必要はありません。証明書マッピングにより、証明書のサブジェクト DN をディレクトリー内の DN とは異なるものにすることができます。
Certificate System の DN は、X.509 標準で定義されたコンポーネントまたは属性に基づいています。表9.8「値タイプに許可される文字」 は、デフォルトでサポートされる属性を一覧表示しています。属性のセットは拡張可能です。
表9.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 は、表9.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 は、最小の文字セットから最大の文字セットへ、以下の順序で文字列文字を文字ごとに変換します。
    • 印刷可能
    • IA5String
    • BMPString
    • 汎用文字列
属性エントリーは、以下のようになります。
X500Name.MY_ATTR.oid=1.2.3.4.5.6
X500Name.MY_ATTR.class=netscape.security.x509.DirStrConverter
9.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 であるMYATTR2、および PrintableString である 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. 証明書の発行時に、発行先名を確認します。証明書には、サブジェクト名に新しい属性値が表示されるはずです。
9.2.3.9.2. DER エンコード順序の変更
DirectoryString の DER エンコーディング順序を変更して、異なるクライアントが異なるエンコーディングをサポートしているため、文字列を設定できます。
DirectoryString の DER エンコーディング順序を変更する構文は次のとおりです。
X500Name.directoryStringEncodingOrder=encoding_list_separated_by_commas
エンコーディング値は以下のとおりです。
  • 印刷可能
  • IA5String
  • UniversalString
  • BMPString
  • UTF8String
たとえば、DER エンコーディング順序は次のようになります。
X500Name.directoryStringEncodingOrder=Printable,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 としてエンコードする必要があります。

9.2.3.10. 異なる証明書を使用するように CA を設定して CRL を署名

Certificate Manager は、証明書および証明書失効リスト (CRL) の署名に OCSP 署名証明書に対応するキーペアを使用します。別のキーペアを使用して Certificate Manager が生成する CRL に署名するには、CRL 署名証明書を作成できます。Certificate Manager の CRL 署名証明書は、署名するか、または自己発行する必要があります。
Certificate Manager が異なるキーペアで CRL に署名できるようにするには、以下を行います。
  1. CMC を使用して、Certificate Manager の CRL 署名証明書を要求してインストールします。システム証明書の要求の詳細については、5.3.2.1 を参照してください。システム証明書とサーバー証明書の取得 (Red Hat Certificate System の管理ガイド)。
    証明書の取得に使用されるプロファイルは keyUsageExtDefaultImpl クラス ID を使用し、対応する keyUsageCrlSign パラメーターを true に設定する必要があります。
    policyset.userCertSet.6.default.class_id=keyUsageExtDefaultImpl
    policyset.userCertSet.6.default.params.keyUsageCrlSign=true
  2. CRL 署名証明書が生成されたら、コンソールの システムキーおよび証明書 を使用して、Certificate Manager のデータベースに証明書をインストールします。
  3. Certificate Manager を停止します。
    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
  4. 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 は、キーペアの生成に使用されるトークンの名前と証明書です。内部/ソフトウェアトークンが使用される場合は、内部 キーストレージトークン を値とし て使用します。
      たとえば、エントリーは以下のようになります。
      ca.crl_signing.cacertnickname=crlSigningCert cert-pki-ca
      ca.crl_signing.defaultSigningAlgorithm=SHAMD512withRSA
      ca.crl_signing.tokenname=Internal Key Storage Token
    3. 変更を保存して、ファイルを閉じます。
  5. Certificate Manager を再起動します。
    # systemctl restart pki-tomcatd-nuxwdog@instance_name.service
    これで、Certificate Manager は CRL 署名証明書を使用して、生成した CRL に署名できるようになりました。

9.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

9.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 およびデルタ CRL の設定を行うには、パラメーターを編集する必要があります。
表9.9 CRL 拡張間隔パラメーター
パラメーター 説明 許可される値
updateSchema 完全な CRL ごとに生成されるデルタ CRL 数の比率を設定します。 整数値
enableDailyUpdates 設定された時間に基づいて CRL 更新の設定を有効または無効にします。 true または false
enableUpdateInterval 設定された間隔に基づいて CRL 更新の設定を有効または無効にします。 true または false
dailyUpdates CRL の更新時間を設定します。 コンマ区切りの時間リスト
autoUpdateInterval CRL を更新する間隔を分単位で設定します。 整数値
nextUpdateGracePeriod CRL の有効期間に分単位を追加し、公開またはレプリケーション期間全体で CRL が有効である状態にする期間を追加します。 整数値
refreshInSec クローン OCSP のスレッドの周期を秒単位で設定して、LDAP で CRL の更新を確認します。 整数値

手順9.1 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:50am、4:55am、および 6:55am に失効を設定し、2am、5am、および 5pm に失効を設定します。
      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 更新に通知する頻度を秒単位で設定します。
    パラメーターの詳細は、表9.9「CRL 拡張間隔パラメーター」を参照してください。
  6. CA サーバーを起動します。
    systemctl start pki-tomcatd-nuxwdog@instance_name.service
注記
間隔ごとに CRL を更新するとドリフトが発生する場合があります。通常、ドリフトは手動更新と CA の再起動時に実行されます。
ドリフトのスケジュールを防ぐには、enableDailyUpdates パラメーターと enableUpdateInterval パラメーターを true に設定し、必要な値を autoUpdateInterval および dailyUpdates に追加します。
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 の値と再同期され、スケジュールのドリフトを防ぐことができます。

9.2.3.13. サブシステムのアクセス制御設定の変更

デフォルトでは、アクセス制御ルールは最初に拒否ルールを評価してから、許可ルールを評価することで適用されます。この順序を変更するには、CS.cfgauthz.evaluateOrder パラメーターを変更します。
authz.evaluateOrder=deny,allow
さらに、アクセス制御ルールはローカルの web.xml ファイル(基本 ACL)から評価することも、LDAP データベースを確認してより複雑な ACL にアクセスすることもできます。authz.sourceType パラメーターは、使用する承認のタイプを特定します。
authz.sourceType=web.xml
注記
CS.cfg ファイルを編集して更新された設定を読み込んだら、サブシステムを常に再起動します。

9.2.3.14. TLS クライアント証明書認証を使用するための pkiconsole の要件設定

各サブシステムの CS.cfg ファイルを編集し、authType パラメーターを検索し、以下のように設定します。
authType=sslclientauth

9.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 パラメーターを使用すると、LDAP 公開ディレクトリーのいずれかへの接続に失敗しても、CA サブシステムが正常に起動できるようになります。
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)

9.3.1. password.conf ファイルの設定

注記
本セクションは参照用途としてのみ提供されています。正しい操作と安全な操作には、nuxwdog ウォッチドッグを使用する必要があります。完全なコンプライアンスに必要なため、nuxwdog を有効にするには、「Certificate System の Watchdog サービスの使用」 を参照してください。
デフォルトでは、パスワードはサブシステムの 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

9.3.2. Certificate System の Watchdog サービスの使用

Certificate System では、ウォッチドッグサービスを使用して、開始するためにセキュリティーデータベースにアクセスするためにパスワードを必要とするサービスを開始します。暗号化されていないパスワードをシステムに保存しないという要件がある場合、ウォッチドッグサービスは次のようになります。