こんにちはー!たつみんです。
今日は証明書配布についての記事を書いてみます。
弊社のブログの中で根強い人気がある『Intune経由でデバイスに証明書配布してみた話』という記事があります。この記事ではADCS(証明書サービス)やNDES(ネットワーク デバイス登録サービス)といったオンプレサーバーが必要でこの点を敬遠される方もいらっしゃると思います。
今回はサードパーティの証明書発行サービスであるSCEPmanを利用し、オンプレサーバーは一切使わずに証明書の発行からIntuneを利用したデバイスへの証明書配布までを記事にします。
SCEPmanとは?
Azure Key Vaultを利用したクラウドベースの認証局(CA)です。
SCEPmanにはCOMMUNITY EDITIONとENTERPRISE EDITIONの2つのプランが提供されています。
COMMUNITY EDITIONは無料で利用できます。一方で有料で提供されるENTERPRISE EDITIONではサポートや冗長性、中間証明書の発行などいくつかの機能が追加されます。
機能差異についての詳細は以下をドキュメントをご確認ください。
今回はCOMMUNITY EDITIONを利用し検証した結果を記事にしています。
証明書発行のプロセス
下図のようなプロセスで証明書が発行されます。
出展:https://docs.scepman.com/details
- Intuneに登録されたデバイスに対してSCEP証明書を要求するポリシーを適用
- デバイスはSCEPmanに対して公開鍵とメタデータを渡し証明書を要求
- SCEPmanはIntuneに対して有効なリクエストか確認を行う
- IntuneはSCEPmanに回答を行う
- Azure Key Vaultが証明書を作成し署名を行う
- SCEPmanはAzure Key Vaultから受け取った証明書をデバイスに提供する
利用においての注意点
SCEPman Community Edition自体は無料ですが、Azure上のサービスを利用するため利用量に応じて料金が発生します。この点だけはご注意ください。
Azure ADアプリの登録
- Azure Active Directoryでアプリの登録から新規登録をクリックします。
- 名前を設定し、サポートされているアカウントの種類を「この組織ディレクトリのみに…」を選択し、登録をクリックします。
- 生成されたアプリケーション(クライアント)IDをコピーしておきます。
- 左メニューから「証明書とシークレット」に移動し、「新しいクライアントシークレット」をクリックします。
- 有効期限をSCEPman推奨の「24ヶ月」とし追加をクリックします。
- 生成されたクライアントシークレットの値をコピーしておきます。(シークレットIDでなく値が必要となります。値は一度しか表示されません。)
- 左メニューから「APIのアクセス許可」へ移動し、Microsoft GraphのUser.Readのアクセス許可が付与されている場合は削除します。
- アクセス許可の追加からMicrosoft Graphのアプリケーションの許可を選択し、「Directory.Read.All」にチェックを入れてアクセス許可の追加をクリックします。
- 同様にアクセス許可の追加からIntuneのアプリケーションの許可を選択し、「scep_challenge_provider」にチェックを入れてアクセス許可の追加をクリックします。
- 「株式会社クラウドネイティブに管理者の同意を与えます」をクリックします。
- 下記の確認画面ではいをクリックします。
- 以下のように、状態にチェックマークが付いていることを確認します。
Azure MarketplaceからSCEPmanの導入
- Azure MarketplaceのSCEPmanのページを表示し、Get It Nowをクリックします。
- Continueをクリックします。
- Azureの画面に遷移したら、作成をクリックします。
- プロジェクトの詳細で既存サブスクリプションとの紐付けとリソースグループの設定を行います。
- リージョンは東日本が選択されているため、そのままにし、Organization Nameには会社名を入力し、次:Azure AD App Registrationをクリックします。
- Azure AD Applicationは既存を選択し、作成済みのサービスプリンシパルを検索し、選択します。
- App Registration Secretに控えておいたクライアントシークレットの値を入力します。
- 確認および作成をクリックします。
- 検証に成功しましたを確認し、作成をクリックします。
- 数分間待つと以下のようにデプロイが完了しましたと表示されます。
SCEPmanルート証明書の作成
- App Serviceから作成されたアプリケーションを選択します。
- 基本内のURL部分をクリックします。
- 以下のようにSCEPman Dashboardが開きます。この時点ではいくつかfailed表示となっています。
- 画面中程のclick here to startをクリックします。
- 初めてルート証明書を作成する旨の内容を確認し、I have read the documentation…にチェックを入れ、Create First Nodeをクリックします。
- 数分待つとすべての項目がconnectedとなりルート証明書の作成が完了します。
- Get CACertをクリックし、証明書のダウンロードしておきます。また、Pathに表示されているURLもコピーしておきます。
証明書の構成
- Intuneに移動しデバイスから構成プロファイルへ移動し、プロファイルの作成をクリックします。
- プラットフォームをWindows10以降、プロファイルの種類をテンプレートとし、信頼済み証明書を検索し選択後に作成をクリックします。
- 名前を設定し、次へをクリックします。
- 証明書ファイルでSCEPman Dashboardからダウンロードしておいた証明書を選択します。保存先ストアはコンピューター証明書 -ルートを選択し、次へをクリックします。
- グループの割り当てを行い、次へをクリックします。
- 確認画面で問題ないことを確認し、作成をクリックします。
SCEPの構成
- デバイスの構成プロファイルから新たに、プロファイルをの作成をクリックします。
- プラットフォームをWindows10以降、プロファイルの種類をテンプレートとし、SCEP 証明書を検索し選択後に作成をクリックします。
- 名前を設定し、次へをクリックします。
- 証明書の種類をデバイスとし、サブジェクト名の形式は
CN={{AAD_Device_ID}}
とします。 - 属性にURIを、値を
IntuneDeviceId://{{Device_ID}}
を入力します。 - キー使用法はキーの暗号化とデジタル署名の両方を選択します。
- キーサイズは2048を選択します。
- ハッシュアルゴリズムはSHA-2を選択します。
- ルート証明書をクリックし、先の工程でIntuneに登録した信頼済み証明書を選択し、OKをクリックします。
- 拡張キー使用法に、定義済みの値でクライアント認証を選択します。
- SCEPサーバーのURLにSCEPman DashboardのPathでコピーしたURLを入力し、次へをクリックします。
- グループの割り当てを行い、次へをクリックします。
- 確認画面で問題ないことを確認し、作成をクリックします。
配布された証明書の確認
配布対象のWindows端末でMicrosoft管理コーンソールを開きコンピューターアカウントの証明書を確認します。下図のように個人の証明書配下にSCEPmanから証明書が配布されていることを確認します。名前がAAD_Device_ID
の設定から変数処理された値が設定されていることが確認できます。
また証明書の詳細のサブジェクト代替名がIntuneDeviceId://{{Device_ID}}
になっており、こちらも変数処理がされて配布されていることが確認できるはずです。
まとめ
2時間弱もあれば一通りの作業は完了できるのではないかと思います。私個人としてはAzureでAD以外のサービスを利用したことがこれまでなかったため新鮮な気持ちで検証を進められました。
クラウドサービスとしてサクッと対応できるのはかなりGoodなのではないかと思います。ちょっと証明書を発行したくなったときにSCEPmanを利用してやってみるのもいいんじゃないでしょうか。
それではまた別の記事で〜?