メインコンテンツまでスキップ
適用対象:
DuoKey Cockpit v2NDES 経由の Microsoft AD CSSCEP (RFC 8894) エンロールメント

概要​

Microsoft AD CS (NDES) は、Cockpit の PKI モジュールに発行者タイプとして登録されています。コネクタは、Network Device Enrollment Service のエンドポイントに対する SCEP クライアント(RFC 8894)として動作します。これは、ドメインに参加していない端末やネットワーク機器が Active Directory Certificate Services に対してエンロールする際の標準的な方法です。

AD CS (NDES) コネクタのアーキテクチャ
DuoKey CockpitPKI 発行者コネクタ — AD CS (NDES)
SCEP (RFC 8894) — チャレンジパスワードをリクエストに埋め込みます
Network Device Enrollment ServiceActive Directory Certificate Services 向けの SCEP フロントエンド
AD CS 発行 CA証明書に署名します

NDES は、エンロールメントリクエストを Active Directory Certificate Services へ転送する SCEP のフロントエンドです。

プロパティ値
発行者タイプadcs-ndes
バックエンドNDES 経由の Active Directory Certificate Services(SCEP、RFC 8894)
認証SCEP リクエストに埋め込まれる NDES のチャレンジパスワード
鍵アルゴリズムRSA のみ — SCEP の鍵転送メカニズムで必須です
鍵の生成呼び出し元ではなく、コネクタ自身が行います
失効サポートされません — SCEP には失効操作がありません
失効操作はありません

SCEP(RFC 8894)は証明書の失効操作を定義していないため、AD CS (NDES) コネクタの revoke は常に明確なエラーで失敗します。このコネクタで発行した証明書を失効させるには、Cockpit ではなく認証局側で直接失効させてください — AD CS コンソール、または certutil -revoke を使用します。失効が必要になり得る証明書についてこの発行者を利用する前に、失効プロセスを計画しておいてください。

コネクタが鍵ペアを生成する理由​

SCEP のエンロールメントプロトコルでは、チャレンジパスワードを署名済みの証明書リクエスト内に埋め込み、サーバーのレスポンスはリクエスト元の鍵に対して暗号化されて返されます。このため、呼び出し元が提供する証明書署名リクエストは利用できません。Cockpit は対応する秘密鍵を保持しておらず、すでに署名されたリクエストにチャレンジパスワードを埋め込むこともできないためです。

このため、AD CS (NDES) コネクタは発行時に RSA 鍵ペアを自身で生成し、すでに CSR を含むリクエストは拒否します。秘密鍵は、発行された証明書とともに一度だけ返されます — これは DuoKey の内部 CA によるマネージド鍵発行と同じ仕組みです。後から取得することはできないため、発行時に取得して保管してください。

SCEP エンロールメントのフロー
1. 機能を検出するサーバーの機能 — サポートされるアルゴリズム、POST のサポート
2. CA 証明書を取得する任意で SHA-256 フィンガープリントによりピン留めします
3. 鍵ペアを生成するチャレンジパスワードを埋め込んだ、コネクタ生成の RSA 鍵ペアと CSR。呼び出し元からの CSR は使用しません
署名・暗号化されたエンロールメントリクエスト
4. エンロールメントを送信するNDES がチャレンジパスワードを検証し、AD CS へ転送します
5a. 発行された証明書と秘密鍵が一度だけ、まとめて返されます
5b. 承認待ち短時間ポーリングされます。その後も保留中の場合は、CA 側での手動承認と、新しいリクエストが必要です

チャレンジパスワードを署名済みリクエストに埋め込む必要があり、サーバーのレスポンスも同じ鍵に対して暗号化されて返るため、秘密鍵は終始、呼び出し元ではなくコネクタが保持します。SCEP には失効操作が定義されていないため、ここにそのステップはありません。

設定​

設定フィールド​

フィールド目的
scep_urlNDES の SCEP エンドポイント URL。
ca_fingerprint_sha256想定する CA 証明書をピン留めするための任意の SHA-256 フィンガープリント — サーバーが返した CA 証明書が一致しない場合、エンロールメントは拒否されます。
key_size生成されるエンロールメント鍵ペアの RSA 鍵長。既定は 2048 ビットです。

認証情報​

フィールド目的
challenge_password静的な NDES エンロールメント チャレンジパスワード。個々の発行リクエストで、エンロールメントごとのチャレンジを指定することもできます。

チャレンジパスワードは保存時に暗号化され、プラットフォームから返されることはありません。

エンタープライズネットワーク

SCEP の URL は、インターネット上ではなく自社ネットワーク上のホストを指すことが一般的です。Cockpit のアウトバウンド接続ポリシーは、この発行者についてはプライベートネットワーク範囲を明示的に許可しますが、ループバック、リンクローカル、クラウドメタデータのアドレスは引き続き拒否します。

発行者の登録​

1

SCEP エンドポイントを指定する

ご利用の AD CS 環境における NDES の SCEP エンドポイント URL を入力します。

2

チャレンジパスワードを指定する

NDES のエンロールメント チャレンジパスワードを入力します。必要に応じて、想定する CA 証明書を SHA-256 フィンガープリントでピン留めします。

3

鍵長を設定する

コネクタが生成するエンロールメント鍵の RSA 鍵長を確認します(既定は 2048 ビット)。

4

接続をテストする

接続テストを実行し、SCEP エンドポイントに到達できることを確認するとともに、公開されている機能と CA 証明書を確認します。

5

発行者を通じて発行する

発行者に対して証明書をリクエストします。CSR は指定しないでください — コネクタが RSA 鍵ペアと CSR を自身で生成し、チャレンジパスワードを埋め込みます。

サポートされる操作​

操作サポート備考
test-connectionはいSCEP 経由で CA の機能と CA 証明書を照会します。
issueはいRSA 鍵ペアを生成し、CSR にチャレンジパスワードを埋め込んで、SCEP の PKCSReq/CertRep のやり取りを完了します。
renewはいネイティブの更新フローはありません — 更新は新しい鍵ペアを生成して再エンロールします。
revokeいいえSCEP には失効操作がありません。認証局側で直接失効させてください。
手動承認を伴う CA

NDES/CA のポリシーがエンロールメントリクエストを手動承認のために保留する場合、発行は自動的には完了しません。Cockpit は証明書を短時間ポーリングし、そのウィンドウを過ぎても保留中のままであれば、CA 側でリクエストを承認したうえで再度発行するよう促すエラーを返します。SCEP のポーリングトークンはリクエストをまたいで保持されないため、保留のまま残ったリクエストを後から自動的に完了させることはできません。可能な場合は、チャレンジパスワードによる自動発行を構成してください。