フェデレーション認証サービス Windowsログオンの問題のトラブルシューティング

この記事では、ユーザーが証明書やスマートカードを使用してログオンする際にWindowsが提供するログとエラーメッセージについて説明します。これらのログは、認証の失敗をトラブルシューティングするために使用できる情報を提供します。

証明書と公開キーインフラストラクチャ

Windows Active Directoryは、ログオンするユーザーの証明書を管理するいくつかの証明書ストアを保持しています。

  • NTAuth証明書ストア: Windowsに認証するには、ユーザー証明書を直接発行するCA(つまり、チェーンはサポートされていません)をNTAuthストアに配置する必要があります。これらの証明書を表示するには、certutilプログラムから「certutil –viewstore –enterprise NTAuth」と入力します。
  • ルートおよび中間証明書ストア: 通常、証明書ログオンシステムは単一の証明書しか提供できないため、チェーンが使用されている場合、すべてのマシンの中間証明書ストアにこれらの証明書を含める必要があります。ルート証明書は信頼されたルートストアに、最後から2番目の証明書はNTAuthストアにある必要があります。
  • ログオン証明書拡張機能とグループポリシー: Windowsは、EKUおよびその他の証明書ポリシーの検証を強制するように構成できます。Microsoftのドキュメントを参照してください: https://docs.microsoft.com/ja-jp/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ff404287(v=ws.10)?redirectedfrom=MSDN
レジストリポリシー 説明
EKUのない証明書を許可する 無効にすると、証明書にはスマートカードログオン拡張キー使用法 (EKU) を含める必要があります。
署名専用キーを許可する デフォルトでは、WindowsはRSA復号化を許可しない証明書の秘密キーを除外します。このオプションはそのフィルターを上書きします。
時間的に無効な証明書を許可する デフォルトでは、Windowsは期限切れの証明書を除外します。このオプションはそのフィルターを上書きします。
エヌメレートECCサーツ 楕円曲線認証を有効にします。
X509ヒンツニーデッド 証明書に一意のユーザープリンシパル名 (UPN) が含まれていない場合、または曖昧な可能性がある場合、このオプションを使用すると、ユーザーはWindowsログオンアカウントを手動で指定できます。
キャッシュされたCRLのみを使用、失効不明エラーを無視 失効チェックを無効にします(通常、ドメインコントローラーで設定されます)。
  • ドメインコントローラー証明書: Kerberos接続を認証するには、すべてのサーバーに適切な「ドメインコントローラー」証明書が必要です。これらは、「ローカルコンピューター証明書個人ストア」MMCスナップインメニューを使用して要求できます。

UPN名と証明書マッピング

ユーザー証明書には、Subject Alternate Name拡張機能に一意のユーザープリンシパル名 (UPN) を含めることをお勧めします。

Active Directory のユーザープリンシパル名

デフォルトでは、Active Directoryのすべてのユーザーは、<samUsername>@<domainNetBios> および <samUsername>@<domainFQDN> のパターンに基づいた暗黙的なUPNを持っています。利用可能なドメインとFQDNは、フォレストのRootDSEエントリに含まれています。単一のドメインがRootDSEに複数のFQDNアドレスを登録できることに注意してください。

さらに、Active Directoryのすべてのユーザーは、明示的なUPNとaltUserPrincipalNamesを持っています。これらは、ユーザーのUPNを指定するLDAPエントリです。

UPNでユーザーを検索する場合、Windowsはまず現在のドメイン(UPNを検索するプロセスのIDに基づく)で明示的なUPNを検索し、次に代替UPNを検索します。一致するものがない場合、暗黙的なUPNを検索します。これはフォレスト内の異なるドメインに解決される可能性があります。

証明書マッピングサービス

証明書に明示的なUPNが含まれていない場合、Active Directoryには、「x509certificate」属性に各用途の正確な公開証明書を保存するオプションがあります。このような証明書をユーザーに解決するには、コンピューターがこの属性を直接クエリできます(デフォルトでは単一ドメイン内)。

ユーザーがこの検索を高速化するユーザーアカウントを指定するオプションが提供されており、この機能はクロスドメイン環境でも使用できます。

フォレスト内に複数のドメインがあり、ユーザーがドメインを明示的に指定しない場合、Active Directory rootDSEは証明書マッピングサービスの場所を指定します。これは通常、グローバルカタログマシンにあり、フォレスト内のすべてのx509証明書属性のキャッシュされたビューを持っています。このコンピューターは、証明書のみに基づいて、任意のドメイン内のユーザーアカウントを効率的に見つけるために使用できます。

ログオンドメインコントローラーの選択を制御する

環境に複数のドメインコントローラーが含まれている場合、認証に使用されるドメインコントローラーを確認および制限できると、ログを有効にして取得できるため便利です。

ドメインコントローラーの選択を制御する

Windowsが特定のWindowsドメインコントローラーをログオンに使用するように強制するには、lmhostsファイルを構成して、Windowsマシンが使用するドメインコントローラーのリストを明示的に設定できます: \Windows\System32\drivers\etc\lmhosts。

通常、その場所に「lmhosts.sam」という名前のサンプルファイルがあります。単に次の行を含めます:

1.2.3.4 dcnetbiosname #PRE #DOM:mydomai

ここで、「1.2.3.4」は「mydomain」ドメイン内の「dcnetbiosname」という名前のドメインコントローラーのIPアドレスです。

再起動後、Windowsマシンはその情報を使用してmydomainにログオンします。デバッグが完了したら、この構成を元に戻す必要があることに注意してください。

使用中のドメインコントローラーを特定する

ログオン時に、Windowsはユーザーをログオンさせたドメインコントローラーを含むMSDOS環境変数を設定します。これを確認するには、コマンドプロンプトを次のコマンドで起動します: echo %LOGONSERVER%

認証に関連するログは、このコマンドによって返されるコンピューターに保存されます。

アカウント監査イベントを有効にする

デフォルトでは、Windowsドメインコントローラーは完全なアカウント監査ログを有効にしません。これは、グループポリシーエディターのセキュリティ設定にある監査ポリシーを通じて制御できます。有効にすると、ドメインコントローラーはセキュリティログファイルに追加のイベントログ情報を生成します。

ローカライズされた画像

証明書検証ログ

証明書の有効性を確認する

スマートカード証明書がDER証明書としてエクスポートされた場合(秘密鍵は不要)、次のコマンドで検証できます: certutil –verify user.cer

CAPIログを有効にする

ドメインコントローラーとユーザーのマシンで、イベントビューアーを開き、Microsoft/Windows/CAPI2/Operational Logs のログ記録を有効にします。

You can control CAPI logging with the registry keys at: CurrentControlSet\Services\crypt32.

説明
診断レベル (DWORD) 詳細レベル (0~5)
診断一致マスク (QUADWORD) イベントフィルター(すべてに 0xffffff を使用)
診断プロセス名 (複数文字列値) プロセス名でフィルター(例: LSASS.exe)

CAPI のログ

メッセージ 説明
チェーンの構築 LSA が CertGetCertificateChain を呼び出した際の処理内容 (結果を含む)
失効の検証 LSA が CertVerifyRevocation を呼び出した際の処理内容 (結果を含む)
X509 オブジェクト 詳細モードでは、証明書と証明書失効リスト (CRL) が AppData\LocalLow\Microsoft\X509Objects にダンプされます
チェーンポリシーの検証 LSA が CertVerifyChainPolicy を呼び出しました (パラメーターを含む)

エラーメッセージ

エラーコード 説明
証明書が信頼されていません スマートカード証明書は、コンピューターの中間証明書ストアおよび信頼されたルート証明書ストアにある証明書を使用して構築できませんでした。
証明書失効チェックエラー スマートカードのCRLは、証明書のCRL配布ポイントで指定されたアドレスからダウンロードできませんでした。失効チェックが必須の場合、これによりログオンが成功しなくなります。(/ja-jp/xenapp-and-xendesktop/7-15-ltsr/secure/federated-authentication-service/fas-config-manage/fas-troubleshoot-logon.html#certificates-and-public-key-infrastructure)セクションの「証明書と公開キーインフラストラクチャ」を参照してください。
証明書使用エラー この証明書はログオンに適していません。たとえば、サーバー証明書または署名証明書である可能性があります。

ケルベロス ログ

Kerberosログを有効にするには、ドメインコントローラーとエンドユーザーマシンで、次のレジストリ値を作成します。

ハイブ 値の名前 値 [ディーワード]
CurrentControlSet\Control\Lsa\Kerberos\Parameters ログレベル 0x1
CurrentControlSet\Control\Lsa\Kerberos\Parameters カーブデバッグレベル 0xffffffff
CurrentControlSet\Services\Kdc Kdcデバッグレベル 0x1
CurrentControlSet\Services\Kdc ケーディーシーエクストラログレベル 0x1f

Kerberos のログはシステムイベントログに出力されます。

  • 「信頼されていない証明書」などのメッセージは、簡単に診断できるはずです。
  • 2つのエラーコードは情報提供であり、安全に無視できます。
    • KDC_ERR_PREAUTH_REQUIRED (古いドメインコントローラーとの下位互換性のために使用されます)
    • 不明なエラー 0x4b

イベントログメッセージ

このセクションでは、ユーザーが証明書でログオンしたときにドメインコントローラーとワークステーションで予想されるログエントリについて説明します。

  • ドメインコントローラー CAPI2 ログ
  • ドメインコントローラーのセキュリティログ
  • VDAセキュリティログ
  • ブイディーエー キャピ ログ
  • VDAシステムログ

ドメインコントローラーのCAPI2ログ

ログオン中、ドメインコントローラーは呼び出し元の証明書を検証し、次の形式で一連のログエントリを生成します。

ローカライズされた画像

最終的なイベントログメッセージには、ドメインコントローラー上のlsass.exeがVDAによって提供された証明書に基づいてチェーンを構築し、その有効性(失効を含む)を検証していることが示されます。結果は「ERROR_SUCCESS」として返されます。

ローカライズされた画像

ドメインコントローラーのセキュリティログ

ドメインコントローラーは一連のログオンイベントを表示し、主要なイベントは4768です。このイベントでは、証明書がKerberosチケット許可チケット (krbtgt) の発行に使用されます。

これより前のメッセージは、サーバーのマシンアカウントがドメインコントローラーに対して認証を行っていることを示しています。これに続くメッセージは、新しいkrbtgtに属するユーザーアカウントがドメインコントローラーに対して認証を行うために使用されていることを示しています。

ローカライズされた画像

VDAセキュリティログ

ログオンイベントに対応するVDAセキュリティ監査ログは、winlogon.exeを発生元とするイベントID 4648のエントリです。

ローカライズされた画像

ブイディーエー シーエーピーアイ ログ

このVDA CAPIログの例は、lsass.exeからの単一のチェーン構築および検証シーケンスを示しており、ドメインコントローラー証明書 (dc.citrixtest.net) を検証しています。

ローカライズされた画像

ローカライズされた画像

VDAシステムログ

Kerberosログが有効になっている場合、システムログにはエラー KDC_ERR_PREAUTH_REQUIRED (無視してかまいません) が表示され、Kerberosログオンが成功したことを示すWinlogonからのエントリが表示されます。

ローカライズされた画像

エンドユーザーのエラーメッセージ

このセクションでは、Windowsログオンページでユーザーに表示される一般的なエラーメッセージをリストします。

表示されるエラーメッセージ 説明と参照
無効なユーザー名またはパスワード コンピューターは有効な証明書と秘密キーを持っていると認識していますが、Kerberosドメインコントローラーが接続を拒否しました。この記事の「Kerberosログ」セクションを参照してください。
システムはあなたをログオンできませんでした。あなたの資格情報を検証できませんでした。 ドメインコントローラーに接続できないか、適切な証明書がインストールされていません。
要求はサポートされていません CTX206156に記載されているように、ドメインコントローラーで「Domain Controller」および「Domain Controller Authentication」証明書を再登録します。既存の証明書が有効に見える場合でも、これは通常試す価値があります。
システムはあなたをログオンさせることができませんでした。認証に使用されたスマートカード証明書は信頼されていませんでした。 中間証明書とルート証明書がローカルコンピューターにインストールされていません。ドメインに参加していないコンピューターにスマートカード証明書をインストールする方法については、CTX206156を参照してください。また、この記事の「証明書と公開鍵インフラストラクチャ」セクションも参照してください。
スマートカードログオンがお使いのアカウントでサポートされていないため、ログオンできません。 ワークグループユーザーアカウントがスマートカードログオン用に完全に構成されていません。
要求されたキーが存在しません 証明書がアクセスできない秘密鍵を参照しています。これは、PIVカードが完全に構成されておらず、CHUIDまたはCCCファイルが不足している場合に発生する可能性があります。
スマートカードの使用中にエラーが発生しました スマートカードミドルウェアが正しくインストールされていませんでした。スマートカードのインストール手順については、CTX206156を参照してください。
スマートカードを挿入してください スマートカードまたはリーダーが検出されませんでした。スマートカードが挿入されている場合、このメッセージはハードウェアまたはミドルウェアの問題を示しています。スマートカードのインストール手順については、CTX206156を参照してください。
PINが正しくありません スマートカードがユーザーが入力したPINを拒否しました。
有効なスマートカード証明書が見つかりませんでした。 証明書の拡張機能が正しく設定されていないか、RSAキーが短すぎる (<2048 ビット) 可能性があります。有効なスマートカード証明書の生成については、CTX206901を参照してください。
スマートカードがブロックされています スマートカードがロックされています(たとえば、ユーザーが誤ったPINを複数回入力した場合など)。管理者は、カードのPINロック解除(PUK)コードにアクセスできる場合があり、スマートカードベンダーが提供するツールを使用してユーザーPINをリセットできます。PUKコードが利用できない場合、またはロックアウトされている場合、カードを工場出荷時の設定にリセットする必要があります。
不正な要求 スマートカードの秘密キーが、ドメインコントローラーが必要とする暗号化をサポートしていません。たとえば、ドメインコントローラーが「秘密キーの復号化」を要求したにもかかわらず、スマートカードが署名のみをサポートしている場合があります。これは通常、証明書の拡張機能が正しく設定されていないか、RSAキーが短すぎる (<2048 ビット) ことを示しています。有効なスマートカード証明書の生成については、CTX206901を参照してください。

関連する情報