Intune経由でデバイスに証明書配布してみた話

Intune経由でデバイスに証明書配布してみた話

ちゃんみおです。

Intune経由でデバイスに証明書を配布するため、配布をするためのNDESサーバーの構築・Intune Connectorの導入・Intuneからデバイスに証明書の配布をしました。 構築中いろいろMS公式ドキュメントに書かれていない発見もあったのでそこら辺を中心に書いていきます。

あくまでも私が作った環境下での話なので、また違う環境(Intuneの設定やWindows Severのバージョン違い)などで違いがあるかもしれませんが、まぁご了承ください。

構成図

参考にしたドキュメント

そもそもNDESって何?

ネットワーク証明書配布サービスのこと ADDSから発行した証明書をIntuneに渡すまでのハブをしてくれました。

本題になるデバイスへの証明書配布流れ

  1. Intune からデバイスへ SCEP ポリシー展開​
  2. デバイスから NDES (入口:IIS) へのリクエスト​
  3. IIS → NDES​
  4. NDES (Certificate Connector) を仲介し CA サーバーへ​
  5. CA サーバーで証明書発行後、逆経路をたどりデバイスへ配布​
  6. デバイスへの配布と共に、NDES (Certificate Connector) を仲介し Intune サービスへ同期​

配布するまでのNDES関連の構築の大まかな流れ

  1. NDES Serviceアカウントの作成
  2. ADDSに配布をしたい証明書のテンプレートを作成
  3. Windows Serverをたてる
  4. 立てたWindows SeverにNDESをインストール
  5. NDESを入れたWindows SeverのIISの設定
  6. Intune Connectorのインストール
  7. Intune側でプロファイルの作成

基本的に構築に関しては

の流れで作っていくと良い。 トラブルが起きた時は

こちらを参照しました。 たまに、ドキュメント毎に違うことが記載されていることもあるのですが、私は更新が新しい方を信じて設定した。

大まかな要件

作成した環境

Active Directory、ADDS、NDESはすべてWindows Server 2016で同一ドメインに参加。

この時に重要なのが、

  • Windows Serverは、全てちゃんとコンピューター名を設定する
    • いわゆるDNS名 hostname.example.com の hostname とコンピュータ名を一致させる。
    • NDESサーバーの名前解決について
    • ADDSで稼働しているDNSで、Private IP addressで名前解決できるようにする
  • Route 53で、Public IP addressで名前解決できるようにする
    • つまり、2つのDNSに別々の設定が必要
  • NDESサーバーは、http/httpsを使ってIntuneで管理された端末からアクセスされるようなので、インターネットからアクセスできるようにする必要があるALBなどの背後に置くのではなく、IISと端末が直接通信できる必要があるADCSから発行された証明書を使うため、End-to-Endないといけない

特に最後がわからなくてだいぶ苦労しました。

NDESサービスアカウントについて

  • ローカルIIS_IUSRSグループのメンバーにであること
  • Active Directory での SPN の設定
  • 最低権限      
    • ローカルでのログオン      
    • サービスとしてログオン      
    • バッチ ジョブとしてログオン

NDESサーバーについて

  • Windows Server 2012 R2 以上で動かすこと
  • CA と同じフォレスト内のドメインにNDESを参加させる必要がある
  • CAと同じサーバーはNG
  • プロキシ利用しない場合は、すべてのIP/ホストから443のTCPを許可する
  • NDES – CA間の通信はfire wallを開けておく

NDESサーバーをWindows Server 2016で作成する場合の注意点

  • Intune で SCEP 証明書を構成して使用する このドキュメントの説明しているコンポーネントだけでは不足しているというのがサポートに問い合わせをしてわかったことです。 なので、NDESをサーバーマネージャからインストールするときは、

  • 「Web Server (IIS)」「.NET Framework 3.5 Features」「.NET Framework 4.6 Features」をチェックする

  • 「Web Server (IIS)」を展開し、以下のコンポーネントを追加 -「Application Developement」を展開し、「.NET」や「ASP.NET」のコンポーネントをすべてチェック(関連するコンポーネントもすべてチェック)

  • 「Management Tools」を展開 -「IIS 6 Management Compatibility」を展開 -「IIS 6 WMI Compatibility」をチェック(関連するコンポーネントもすべてチェック)

という作業を行いました。 Windows Severのバージョンによって必要なコンポーネントがなんなのか注意してください。

作業中によくでたエラーと書いてないけどやらないといけない作業

Intune Certificate Connectorの接続に問題があると表示される

定期的に発生して困ったもの。 ここが動かないと配布できない。 ここのステータス状況はIntune Certificate Connector自体でも確認できますが、Azure PotalのIntune上でも確認が可能です。 場所は、 Azure Potal > デバイスの構成 > 証明書のコネクタ

  • CAが起動しているEC2が起動しているか? -Azure ADの証明書コネクタのステータス確認を行う(Azure PortalのAzure AD > Intune > デバイス構成 > 証明書のコネクタ)
  • services.mscからintune Connector Serviceを再起動する
  • 管理者として実行を行う
  • IEのセキュリティの設定の確認

Intune Certificate Connectorの詳細設定に書くアカウント

  • NDESサービスアカウントを使う

NDES をホストするサーバーに証明書をインストールしてバインドする

手順書には、

IIS でサーバー認証証明書をバインドします。 サーバー認証証明書をインストールした後、IIS マネージャーを開き、既定の Web サイトを選択します。操作ウィンドウで、バインドを選択します。

との記載があるが、サイドバーのデフォルトウェブサイト > バインドで表示される。 規定のWebサイトという項目はない。 多分、他のWindows Severのバージョンだと、規定のwebサイトって項目があるんだと思う。Windows Server 2016にはなかった。

IntuneからSCEP証明書を配布するときに必要なルート証明書について

Intune上でSCEP証明書の配布を行う時にルート証明書が必要になります。 このルート証明書も別途プロファイルを作成する必要があり、SCEPとは別のプロファイルとしてIntuneに登録する必要があった。

プロファイルの配布については、

こちらのドキュメントが詳しく書いてました。PKCS証明書のドキュメントですがやることは同じです。 一応手順も記載します。

Azure portal で、Intune > デバイス構成 > プロファイル > プロファイルの作成 の順に選択します。

  • 次のプロパティを入力します。プロファイルの名前 – オプションで説明を設定
  • プロファイルをデプロイするプラットフォーム – プロファイルの種類 に 信頼済み証明書 を設定
  • 設定 に移動し、以前エクスポートした .cer ファイルのルート CA 証明書を入力
  • OK > 作成 を選択してプロファイルを保存

注意 3番目の手順で選択したプラットフォームに応じて、証明書の保存先ストアを選択するオプションが使用できる場合と使用できない場合がある

Log関連

Intune Certificate Connector関連のLog

C:\Program Files\Microsoft Intune\NDESConnectorSvc\Logs\ の配下にある

  • Certificate Connector
    • Intune Certificate Connector UIのログになる
  • Intune Connector.evtx
    • Intune Certificate Connectorのイベントログ

IISログ

IIS ログデバイス -> IISで疎通が取れているか

IIS – NDES関連のログ

  • NDESPlugin.log
  • CertificateRegistrationPoint.svclog

NDES – CA間のログ

%programfiles%\Microsoft Intune\NDESConnectorSvc\Logs\Logs の配下にある

  • CertificateRegistrationPoint.svclog
  • NDESConnector_yyyymmdd_HHmmss.svclog

トラブルシューティング用PowerShell

powershell-intune-samples/CertificationAuthority at master · microsoftgraph/powershell-intune-samples

NDESの構成が正しくできているのかを確認するためのPowerShellのスクリプト。  構成された後に実行すると、設定を確認しておかしなところを報告してくれる。 便利、ここで確認して

とかを参照すると良いと思う。

今回構成してみて、せっかくIntuneを利用して証明書を配布できるのに、NDESサーバー用意しないといけなかったりと、ちょっと残念だなと思いました。 でも、今回の検証を行なわなかったらNDESサーバーなんて触ることがなかったのでいい勉強にはなった! これ以外にも証明書の配布方法は多種多様にあるので、機会があればやってみようと思います!

みなさんも楽しい証明書配布ライフを!