😶

Windows Hello for Bussiness環境を構築する方法

に公開

はじめに

Windows Hello for Bussiness環境を構築する手順をまとめました。

ここではオンプレミスの証明書信頼で構築します。

メリット

  • オンプレミスでの展開により追加のライセンス費用が不要
  • 証明書信頼はリモートデスクトップ接続の際にも顔認証が使用可能
  • 端末でのセットアップ時に証明書での認証が可能

デメリット

  • キー信頼よりも構築手順が増える
  • 端末に証明書を配布する必要がある

手順はマイクロソフト公式ページ(オンプレミス証明書信頼展開ガイド)を参考にしています

構築環境

  • ADDS、ADCS
    WindowsServer2022

  • ADFS
    WindowsServer2022

  • クライアント端末
    Windows11 24H2

構築手順

前提条件

ADDS・ADCSのインストールと構成は済んでいるものとします
また、ADFSサーバはドメインに参加済みとします。

証明書テンプレートの作成

4つの証明書テンプレートを作成します。

ドメインコントローラー証明書

Kerberos認証からテンプレートを複製

[互換性]
証明機関の一覧から [Windows Server 2016] を選択
証明書の受信者の一覧から [Windows 10/ Windows Server 2016] を選択

[全般]
テンプレートの表示名・テンプレート名を指定
有効期間を目的の値に設定

[サブジェクト名]
[Active Directoryの情報から構築する] を選択
[サブジェクト名の形式] ボックスの一覧から [なし] を選択
[代替サブジェクトにこの情報を含める] ボックスの一覧から [DNS名] を選択

[暗号化]
[プロバイダーのカテゴリ] を [キー格納プロバイダー] に設定
アルゴリズム名を RSA に設定する
最小キー サイズを 2048 に設定する
要求ハッシュを SHA256 に設定する

[優先するテンプレート]
以下の証明書テンプレートを追加する
Kerberos認証
ドメイン コントローラー
ドメイン コントローラーの認証

ADFSサーバー証明書

Webサーバーからテンプレートを複製

[互換性]
証明機関の一覧から [Windows Server 2016] を選択
証明書の受信者の一覧から [Windows 10/ Windows Server 2016] を選択

[全般]
テンプレートの表示名・テンプレート名を指定
有効期間を目的の値に設定

[要求処理]
[秘密キーのエクスポートを許可する] を選択

[サブジェクト名]
[要求に含まれる]を選択

[セキュリティ]
ADFSのコンピュータオブジェクトを追加
登録のアクセス権を追加

[暗号化]
[プロバイダーのカテゴリ] を [キー格納プロバイダー] に設定
アルゴリズム名を RSA に設定
最小キー サイズを 2048 に設定
要求ハッシュを SHA256 に設定

WHFB認証証明書

スマートカードログオンからテンプレートを複製

[互換性]
証明機関の一覧から [Windows Server 2016] を選択
証明書の受信者の一覧から [Windows 10/ Windows Server 2016] を選択

[全般]
テンプレートの表示名・テンプレート名を指定
有効期間を目的の値に設定

[サブジェクト名]
[Active Directoryの情報から構築する] を選択
[サブジェクト名の形式] ボックスの一覧から [完全な識別名] を選択
[代替サブジェクトにこの情報を含める] ボックスの一覧から [ユーザープリンシパル名] を選択

[暗号化]
[プロバイダーのカテゴリ] を [キー格納プロバイダー] に設定
アルゴリズム名を RSA に設定
最小キー サイズを 2048 に設定
要求ハッシュを SHA256 に設定

[発行要件]
[次の数の認証署名] チェック ボックスをオンに設定し[1]と入力
[署名に必要なポリシーの種類] から [アプリケーション ポリシー] を選択
[アプリケーション ポリシー] ボックスの一覧から [証明書の要求エージェント] を選択
[既存の有効な証明書] オプションを選択

[要求処理]
[同じキーで書き換え] を選択

[セキュリティ]
Authenticated Usersに登録・自動登録のアクセス権を追加

ユーザー証明書

ユーザーからテンプレートを複製

[互換性]
証明機関の一覧から [Windows Server 2016] を選択
証明書の受信者の一覧から [Windows 10/ Windows Server 2016] を選択

[全般]
テンプレートの表示名・テンプレート名を指定
有効期間を目的の値に設定

[サブジェクト名]
[Active Directoryの情報から構築する] を選択
[サブジェクト名の形式] ボックスの一覧から [完全な識別名] を選択
[代替サブジェクトにこの情報を含める] ボックスの一覧から [ユーザープリンシパル名] を選択

[セキュリティ]
Authenticated Usersに登録・自動登録のアクセス権を追加

WHFB証明書テンプレートの設定

PowerShellにて以下のコマンドを実行

certutil.exe -dsTemplate WHFB認証 msPKI-Private-Key-Flag +CTPRIVATEKEY_FLAG_HELLO_LOGON_KEY

証明書テンプレートの発行

作成した4つの証明書テンプレートを発行する

  • DC認証
  • ADFS証明書
  • WHFB認証
  • ユーザー証明書

GPO作成(証明書自動登録)

ドメインコントローラー証明書自動登録のためのグループポリシーオブジェクトを作成する


ナビゲーション ウィンドウで、[コンピューターの構成] > [ポリシー] > [Windows 設定] > [セキュリティ設定] > [公開キー ポリシー] を展開
詳細ウィンドウで、[Certificate Services クライアント - 自動登録] を右クリックし、[プロパティ] を選択

[構成モデル] から [有効] を選択
2か所のチェックボックスをオン

ドメインコントローラーのOUにリンク

DC証明書の更新を確認



すぐに登録されない場合はgpupdateでグループポリシーを更新

証明書登録(ADFS証明書)

certlm > [個人] > [すべてのタスク] > [新しい証明書の要求]を選択



ADFSサーバ証明書の[この証明書を登録するには情報が不足しています。設定を構成するには、ここをクリックしてください。]を選択

[サブジェクト名]では[共通名]を選択し、ADFSサーバの FQDNを入力して[追加]
[別名]では[DNS] を選択し、フェデレーション サービスに使用する名前のFQDNを入力して[追加]

登録を選択


サーバー認証証明書がコンピューターの個人用証明書ストアに表示されることを確認

ADFSのインストール・構成

フェデレーションサービスの追加



PowerShellにて以下のコマンドを実行

Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)

ADFSの構成


SSL証明書では先ほど登録したものを設定
[フェデレーションの表示名]は任意の名前を設定


グループ管理サービスアカウントの作成でアカウント名を[adfssvc]に設定

正常に構成されたことを確認

ADFSの設定

ADFSのグループサービス管理アカウントをKey Adminsに追加
[ツール] > [ADユーザーとコンピュータ] > [Users] > [KeyAdmins]のプロパティを選択

[ユーザ]にてadfssvc(ADFSのグループサービス管理アカウント)を追加

ADFSデバイス登録サービスの構成

[ADFS]>[サービス] > [Device Registration]から[Device Registrationの構成]を選択

ウィンドウで[OK]を選択

状態が緑になることを確認

証明書テンプレート作成・発行(WHFB登録エージェント証明書)

証明書テンプレートの作成

Exchange登録エージェント(オフライン要求)から複製

[互換性]
証明機関の一覧から [Windows Server 2016] を選択
証明書の受信者の一覧から [Windows 10/ Windows Server 2016] を選択

[全般]
テンプレートの表示名・テンプレート名を指定
有効期間を目的の値に設定

[サブジェクト名]
[要求に含まれる]を選択

[暗号化]
[プロバイダーのカテゴリ] を [キー格納プロバイダー] に設定
アルゴリズム名を RSA に設定する
最小キー サイズを 2048 に設定する
要求ハッシュを SHA256 に設定する

[セキュリティ]
adfssvc(ADFSのグループサービス管理アカウント)を追加し、登録・自動登録のアクセス権を追加

証明書テンプレートの発行

WHFB登録エージェント証明書テンプレートを発行

ADFS認証方法の追加

[ADFS]>[サービス] > [認証方法] > [プライマリ認証方法の編集]

全ての認証方法をチェック

[追加]タブで[証明書認証]をチェック

チェックを入れた項目が表示されていることを確認

ADFSファイアウォールの有効化

[ツール] > [セキュリティが強化されたWindowsDefenderファイアウォール] > [受信の規則]
ADFS関連の規則3つを有効化

SPNの設定

コマンドプロンプトにて以下のコマンドを実行

setspn -s HTTP/example.local adfssvc
setspn -s HTTP/example adfssvc
setspn -L adfssvc #追加設定が登録されていることを確認

DNSレコードの設定

[DNS] > [前方参照ゾーン] > [(ドメイン名)] > [新しいエイリアス(AまたはAAAA)]

[名前]にフェデレーションサービス名、[IPアドレス]にADFSサーバのIPアドレスを入力し、[ホストの追加]

[新しいエイリアス(CNAME)]

[エイリアス名]に[enterpriseserverregistration]、[ターゲットホスト用の完全修飾ドメイン名]にフェデレーションサービスのFQDNを入力して[OK]

レコードが追加されていることを確認

WHFB認証証明書の設定

WHFB認証で使用する証明書の設定
PowerShellにて以下のコマンドを実行

Set-AdfsCertificateAuthority -EnrollmentAgent -EnrollmentAgentCertificateTemplate WHFB登録エージェント -WindowsHelloCertificateTemplate 

WHFB認証
設定の確認
コマンドを実行後、設定した証明書テンプレートの名前が表示されること

Get-AdfsCertificateAuthority

ADFSサービス再起動

ADFSサービスの再起動を実行

GPO作成(WHFB用)

GPOの編集を行う(6か所)

コンピューターの構成\管理用テンプレート\Windows コンポーネント\Windows Hello for Business

Windows Hello for Business の使用


※サインイン後にWindowsHelloのプロビジョニングを開始しないをクリックすると、エンドユーザー側の任意のタイミングでセットアップが可能

オンプレミスの認証に証明書を使用する


ハードウェアのセキュリティ デバイスを使用する


3項目が有効であること
・Windows Hello for Business の使用
・オンプレミスの認証に証明書を使用する
・ハードウェアのセキュリティ デバイスを使用する

コンピューターの構成\Windows 設定\セキュリティ設定\公開キー ポリシー
Certificate Services クライアント - 自動登録
(オプション2か所チェック)


コンピュータの構成\管理用テンプレート\システム\グループポリシー
ユーザーグループポリシーループバックの処理モード
モードは[統合]を選択する
※この項目はユーザーオブジェクトのOU移動を実施しない場合のみ有効にする


ユーザーの構成\Windows 設定\セキュリティ設定\公開キー ポリシー
Certificate Services クライアント - 自動登録(オプション2か所チェック)


GPOをWHFB用OUにリンク

クライアント端末にGPO適用

ドメインに参加しているコンピュータオブジェクトをWHFB用OUにを移動


顔認証画面の確認

グループポリシー適用後、サインイン時に顔認証とPIN設定の画面が表示される

おわりに

ここまで、Windows Hello for Businessの設定手順についてご紹介させていただきました。

弊社での導入支援も行っておりますので、導入を検討されている方はお気軽にご連絡いただければと思います。

また、Windowsやその他の技術に関するハンズオンをConnpassにて実施しております。
IT初学者や営業の方でも実際に実機に触れて勉強ができますので、少しでも興味をお持ちいただけたら、ぜひお気軽にご参加ください。

Discussion