Intune のアドオンであるCloud PKIが触れるようになったので試してみました。
Intuneのサービスリリースは、2402です。
Intune Suiteの試用版でテストしています。本運用ではIntuneライセンスの他に別途アドオンライセンスかIntune Suiteライセンスが必要になります。
現在は一度作成したCAをGUIから削除することはできませんが、GraphAPIを利用することで削除することができます。
今後のアップデートでGUIからの削除も予定されているようです。

Root CAを作成する
- Intune管理センターへアクセスします。
- 「テナント管理」→「CA管理」→【作成】をクリックします。

- 「Name」欄に名前を入力して、【Next】をクリックします。

- 「CAの種類」からルートCAを選択し、有効期間を選択します。
今回は有効期間を5年としてみました。

- 「拡張キーの使用法」から「Client auth」を選択します。
利用用途によって指定を変更または追加してください。

- 「件名の属性」は、作成したい内容で入力します。

- 「暗号化 キーのサイズとアルゴリズム」から設定したいキーサイズとアルゴリズムを選択します。

- 【Next】をクリックします。
- 必要に応じてスコープタグを設定し、【Next】をクリックします。

- 内容を確認し、問題なければ【作成】をクリックします。
中間CAを発行する
- Root CAと同じ手順で作成までいきます。
- 「CAの種類」から「発行元CA」を選択します。
- 「ルートCAソース」から「Intune」を選択します。
- 「ルートCA」から先程作成したRoot CAを選択します。

- 有効期間を選択します。
- 拡張キーの使用法から、「Client auth」を選択します。

- 件名の属性で、共通名(CN)等を入力します。

- 【Next】をクリックします。
- 必要に応じてスコープタグを設定し、【Next】をクリックします。
- 設定内容に問題がなければ、【作成】をクリックします。
SCEP URLの確認
- 作成した発行元CAの名前をクリックします。
- [Properties]タブをクリックします。

- 下のほうにあるSCEP URIのコピーボタンを押し、値を控えておきます。
{{CloudPKIFQDN}}はIntune変数名でありIntuneからであればそのまま利用できます。

Intuneで配布設定をする
ルート証明書配布設定
作成したRoot CAの名前をクリックし詳細を表示します。
- 下のほうにある、「証明書のダウンロード」横の【ダウンロード】をクリックし、ルート証明書をダウンロードします。

- Intune管理センターから「デバイス」→「Windows」→「構成プロファイル」→「作成」→【新しいポリシー】をクリックします。

- プラットフォームから「Windows 10以降」を選択、プロファイルの種類から「テンプレート」を選択します。

- 【信頼済み証明書】を選択し、【作成】をクリックします。
- 「名前」を入力し、【次へ】をクリックします。 ※Cloud PKI Root CA hogehoge 等わかりやすい名前
- 先ほどダウンロードしたルート証明書をアップロードし、【次へ】をクリックします。
保存先ストアはそのまま、「コンピュータ証明書ストア – ルート」のままにしておきます。

- ルート証明書を配布するグループを選択し、【次へ】をクリックします。
- 必要に応じて「適用性ルール」を設定し、【次へ】をクリックします。
- 内容に問題がなければ、【作成】をクリックします。

中間証明書の配布設定
ルートCA配布と同様に、構成プロファイルで信頼済み証明書の構成プロファイル作成画面へ進みます。
- 「名前」を入力し、【次へ】をクリックします。
- 事前にダウンロードした、中間証明書をアップロードし、保存先ストアを「」にし、【次へ】をクリックします。

- 「組み込まれたグループ」に中間証明書を配布するグループを選択し、【次へ】をクリックします。
- 必要に応じて「適用性ルール」を設定し、【次へ】をクリックします。
- 内容に問題がなければ【作成】をクリックします。

SCEP証明書配布設定
SCEPの設定をし、デバイスに対して自動的にクライアント証明書が発行されるようにしていきます。
同様に構成プロファイルの作成画面に進みます。
- テンプレートから「SCEP証明書」を選択し、【作成】をクリックします。

- 「名前」を入力し、【次へ】をクリックします。
- 今回はデバイス証明書を発行したいので、「証明書の種類」から「デバイス」を選択します。

- AzureADに参加しているデバイスに対しては、CN={{AAD_Device_ID}} で良いのですがこのまま発行すると一覧に並んだ際に以下のようになりよくわからなくなります。
値が絶対に重複しないので、このままでもいいですがUPN等に変更してしまってもよいと思います。 - 今回は、CN={{SERIALNUMBER}} としシリアルナンバーを利用してみたいと思います。

利用できる値については、以下のドキュメント参照してください。

- その他設定はお好みで設定してください。

- ルート証明書をクリックし、登録したルート証明書を選択します。

- 拡張キー使用法は、「定義済みの値」から「クライアント認証」を選択します。

- SCEPサーバーのURLに、事前に控えておいたSCEP URIの値を貼り付けます。

- 【次へ】をクリックします。
- 構成プロファイルを、割り当てるグループを選択し、【次へ】をクリックします。
- 必要に応じて「適用性ルール」を設定し、【次へ】をクリックします。
- 内容に問題がなければ、【作成】をクリックします。
配布確認
構成プロファイルが適用されたことを確認したら、対象端末で「ユーザー証明書管理」を起動し確認します。
中間証明書に、配布した証明書があり信頼済みであることを確認します。

- クライアント証明書がこちらから確認できなかったので、以下のPowerShellコマンドで確認しました。
Get-ChildItem -Path cert:\LocalMachine -Recurse | Select-String -Pattern "発行元CA名"
としたら一応確認できましたが、なんで表示されてこないんでしょうね。
macでの確認
- キーチェーンアクセスを起動します。
- 「証明書」タブを選択し、対象の証明書をダブルクリックします。
- 内容を確認すると以下のようになっており、Cloud PKIから発行されていることが確認できます。

まとめ
Cloud PKIを利用して、デバイス証明書を発行することができました。
AD CAからCloud PKIへの移行等も増えそうですね。
また、以前書いた記事のようにこのデバイスIDを利用して、Entra CBAを設定することで証明書による認証を実現することができると思います。
Entra にRADIUS機能がついたら最高ですね!

(おまけ)SCEP URLの確認
レジストリで以下のキーを確認すると、SCEP URLのフルパスが一応わかりました。
こちらを別なMDMで定義することでもしかしたら証明書の発行が可能かもしれませんが、サポート対象外になってしまいそうではありますよね。
HKLM¥SOFTWARE¥Microsoft¥SCEP¥MS DM Server¥ModelNameXXXXXXX
RespondentServerURLの値
