皆さんこんにちは。国井です。
今日はみんな大好きMicrosoft Intuneの話です。
Microsoft Intuneではデバイスを登録するとデバイス証明書が実装されるのをご存じでしょうか?
この証明書は有効期限が1年で、期限が近づくとクライアントはIntuneと通信を行い、自動的に証明書の入替を行ってくれます。ところがIntuneに登録されたデバイスを電源入れずに放置しておくと証明書の入替を行わないため証明書の期限が切れてしまい、Intuneとの通信ができなくなってしまうのです。
今日はこのことについて書いてみたいと思います。
証明書の入替スケジュール
登録デバイスがMicrosoft Intuneと通信するときの各種設定はタスクスケジューラの中に入っていることが多く、証明書の入替を行うタスクもタスクスケジューラの中に入っています。
設定はMicrosoft > Windows > EnterpriseMgmt > GUID番号 の配下にある
[Schedule created by enrollment client for renewal of certificate warning]というタスクがそれで、見ると49日間のうち7日ごとに繰り返す(=つまり7日ごとに証明書入替するってこと??)という設定になっています。
いずれにしてもこのタスクが実行されることによって証明書は入れ替わるのです。
証明書の入替コマンド
だったらタスクスケジューラからコマンドを取り出して自分で実行してしまえば、好きなタイミングで実行できるのではないかと考えました。
設定されていたコマンドはこちらです。
%windir%\system32\deviceenroller.exe /c /r /d GUID番号
実際に実行してみると見た目の変化はありませんが、証明書の入替を行ってくれます。
結果はイベントビューアのアプリケーションとサービスログ > Microsoft > Windows > DeviceManagement-Enterprise-Diagnostics-Providerから確認できます。
証明書を入れ替えるタイミングを変えたい
証明書の入替はタスクスケジューラで設定されていて、7日ごとにコマンドを実行すると言いましたが、実際にコマンドを実行し、イベントビューアで結果を見るとskip renewと書かれたログを見かけることがあるのではないかと思います。これは証明書を入れ替えるほど期限が迫っていないことを表しています。じゃあ、期限が迫ってるってどうやって判断するの?というとレジストリの中に入っています。
こちらはHKLM\Software\Microsoft\Enrollments\GUID番号 にアクセスしたところなのですが、RenewalPeriodという項目に41という値が入っていることがわかります。つまり期限が切れる41日前になると証明書の入替を実行することになります。
つまり、ここまでの話をまとめるとこういうことになります。
Intuneのデバイス証明書は7日ごとに入れ替えようとするけど、実際に入替が行われるのは期限が切れる41日前になってから。
以上を踏まえると証明書を入れ替えるタイミングをコントロールしたければ、レジストリの設定を変えればよいということになります。
(それがMSさん的に良いことなのかわかりませんので必要であればご確認ください)
証明書が切れるタイミングを知りたい
それは証明書を直接参照すれば確認できます。
レジストリエディタで先ほど見ていた画面にあるDMPCertThumbPrintという項目を参照すればThumbPrintが確認できるので、
PowerShellから証明書ストアにアクセスし、特定の証明書を参照すれば確認できます。
cd Cert:\CurrentUser\My
dir |Where-Object {$_.Thumbprint -match “証明書のThumbPrint”}
結果はこちら。
これでメカニズムがだいぶわかってきましたね。
2023年10月10日追記
こんな面倒なことをしなくてもMicrosoft IntuneのPowerShellコマンドレットで証明書の有効期限を確認することができます。
Get-MgDeviceManagementManagedDevice |ft DeviceName, ManagementCertificateExpirationDate
デバイスのGUIDっぽいのはどうやって調べる?
さっきから「デバイスのGUID」という表現を使いましたが、これが何を示すのかは私にもわかりません。(Intuneに登録されたデバイスに割り当てられるデバイスIDは別に存在します)
そのためデバイスのGUIDと勝手に読んでいますが、正確な表現ではありません。それはともかく、ここまでお話ししたことをPowerShellのスクリプトにしてIntuneから展開したいという人もいるでしょう。その場合はそれぞれのデバイスのGUIDっぽいのを調べるところからスタートしなければなりません。ここからは力技なのですが、レジストリのHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\AdmxDefaultにアクセスするとGUIDっぽいのが入っていることがわかりました。PowerShellからdirコマンドで実行すれば値を引っ張ってこれたりします。こんなんでどうでしょ?
dir HKLM:\SOFTWARE\Microsoft\PolicyManager\AdmxDefault
今回、Intuneにこっそり実装されるデバイス証明書とその入替について紹介しました。
証明書は期限が切れるとIntuneと通信できなくなり、無用なトラブルシューティングを強いられることになるので、きちんとコントロールしてスムーズな運用を行いたいですね。