25.8. certmonger での SCEP の使用
Simple Certificate Enrollment Protocol (SCEP) は、さまざまなデバイスやオペレーティングシステムで使用できる証明書管理プロトコルです。環境内で SCEP サーバーを外部認証局 (CA) として使用している場合、certmonger を使用して Identity Management (IdM) クライアントの証明書を取得できます。
25.8.1. SCEP の概要 リンクのコピーリンクがクリップボードにコピーされました!
Simple Certificate Enrollment Protocol (SCEP) は、さまざまなデバイスやオペレーティングシステムで使用できる証明書管理プロトコルです。SCEP サーバーを外部認証局 (CA) として使用できます。
Identity Management (IdM) クライアントを設定して、CA SCEP サービスから直接 HTTP 経由で証明書を要求および取得できます。このプロセスは、通常、限られた時間でのみ有効な共有シークレットで保護されます。
クライアント側で、SCEP は以下のコンポーネントを提供する必要があります。
- SCEP URL: CA SCEP インターフェイスの URL。
-
SCEP 共有シークレット: CA と SCEP クライアントの間で共有される、証明書を取得するために使用される
challengePasswordPIN。
その後、クライアントは SCEP 経由で CA 証明書チェーンを取得し、CA に証明書署名要求を送信します。
certmonger で SCEP を設定する場合は、発行した証明書パラメーターを指定する新しい CA 設定プロファイルを作成します。
25.8.2. SCEP 経由での IdM CA 署名証明書の要求 リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、SCEP_example SCEP CA 設定を certmonger に追加し、IdM クライアント client.idm.example.com で新しい証明書を要求します。certmonger は、NSS 証明書データベース形式と、OpenSSL などのファイルベース (PEM) 形式の両方をサポートしています。
前提条件
- SCEP URL を知っている。
-
challengePasswordPIN 共有シークレットがある。
手順
CA 設定を
certmongerに追加します。[root@client.idm.example.com ~]# getcert add-scep-ca -c SCEP_example -u SCEP_URL
[root@client.idm.example.com ~]# getcert add-scep-ca -c SCEP_example -u SCEP_URLCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
-c: CA 設定に必要なニックネーム。後で同じ値を、他のgetcertコマンドと合わせて使用できます。 -u: サーバーの SCEP インターフェイスへの URL。重要HTTPS URL を使用する場合は、
-Rオプションを使用して SCEP サーバー CA 証明書の PEM 形式のコピーの場所も指定する必要があります。
-
CA 設定が正常に追加されたことを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定が正常に追加された場合、certmonger はリモート CA から CA チェーンを取得します。CA チェーンは、コマンド出力でサムプリントとして表示されます。暗号化されていない HTTP でサーバーにアクセスすると、中間者攻撃を防ぐため、サムプリントを SCEP サーバーに表示されるものと手動で比較します。
CA から証明書を要求します。
NSS を使用している場合:
[root@client.idm.example.com ~]# getcert request -I Example_Task -c SCEP_example -d /etc/pki/nssdb -n ExampleCert -N cn="client.idm.example.com" -L one-time_PIN -D client.idm.example.com
[root@client.idm.example.com ~]# getcert request -I Example_Task -c SCEP_example -d /etc/pki/nssdb -n ExampleCert -N cn="client.idm.example.com" -L one-time_PIN -D client.idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプションを使用して、証明書要求の以下のパラメーターを指定できます。
-
-I: オプション: タスクの名前: 要求の追跡 ID。後でgetcert listコマンドで同じ値を使用できます。 -
-c: 要求を送信する CA 設定。 -
-d: 証明書およびキーを保存する NSS データベースを備えたディレクトリー。 -
-n: NSS データベースで使用される証明書のニックネーム。 -
-N: CSR のサブジェクト名。 -
-L: CA が発行する期限付きの 1 回限りのchallengePasswordPIN。 -
-D: 証明書のサブジェクト代替名。通常はホスト名と同じです。
-
OpenSSL を使用している場合は、以下を行います。
[root@client.idm.example.com ~]# getcert request -I Example_Task -c SCEP_example -f /etc/pki/tls/certs/server.crt -k /etc/pki/tls/private/private.key -N cn="client.idm.example.com" -L one-time_PIN -D client.idm.example.com
[root@client.idm.example.com ~]# getcert request -I Example_Task -c SCEP_example -f /etc/pki/tls/certs/server.crt -k /etc/pki/tls/private/private.key -N cn="client.idm.example.com" -L one-time_PIN -D client.idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプションを使用して、証明書要求の以下のパラメーターを指定できます。
-
-I: オプション: タスクの名前: 要求の追跡 ID。後でgetcert listコマンドで同じ値を使用できます。 -
-c: 要求を送信する CA 設定。 -
-f: 証明書へのストレージパス。 -
-k: キーへのストレージパス。 -
-N: CSR のサブジェクト名。 -
-L: CA が発行する期限付きの 1 回限りのchallengePasswordPIN。 -
-D: 証明書のサブジェクト代替名。通常はホスト名と同じです。
-
検証
証明書が発行され、ローカルデータベースに正しく保存されていることを確認します。
NSS を使用している場合は、以下を入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenSSL を使用している場合は、以下を入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ステータス MONITORING は、発行した証明書の取得に成功したことを表します。
getcert-list(1)の man ページには、その他の状態とその意味が記載されています。
25.8.3. certmonger による AD SCEP 証明書の自動更新 リンクのコピーリンクがクリップボードにコピーされました!
certmonger が SCEP 証明書の更新要求を送信すると、この要求は既存の証明書の秘密鍵を使用して署名されます。ただし、certmonger によってデフォルトで送信される更新要求には、最初に証明書を取得するために使用された challengePassword PIN も含まれています。
SCEP サーバーとして機能する Active Directory (AD) Network Device Enrollment Service (NDES) サーバーは、元の challengePassword PIN を含む更新要求を自動的に拒否します。そのため、更新に失敗します。
AD での更新を機能させるには、challengePassword PIN なしで署名済みの更新要求を送信するように certmonger を設定する必要があります。また、更新時にサブジェクト名を比較しないように AD サーバーを設定する必要があります。
challengePassword が含まれるリクエストも拒否する AD 以外の SCEP サーバーが存在する場合があります。この場合は、certmonger 設定を変更する必要もあります。
前提条件
- RHEL サーバーは RHEL 8.6 以降を実行している必要がある。
手順
-
AD サーバーで
regeditを開きます。 -
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MSCEP サブキーに、新しい 32 ビットの REG_DWORD エントリー
DisableRenewalSubjectNameMatchを追加し、その値を1に設定します。 certmongerが実行されているサーバーで、/etc/certmonger/certmonger.confファイルを開き、次のセクションを追加します。[scep] challenge_password_otp = yes
[scep] challenge_password_otp = yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow certmonger を再起動します。
systemctl restart certmonger
# systemctl restart certmongerCopy to Clipboard Copied! Toggle word wrap Toggle overflow