私のWindows "ドメイン中心"の会社は、突然Windows 7からWindows 10への切り替えを決定し、準備したイメージをスマートカード/トークンベースの認証システムでドメインに参加させることが私の仕事になりました。これはWindows 7の問題でしたが、証明書の信頼チェーンを構築することで簡単に修正できました。私はWindows 7での完全なセットアップを担当していなかったので、Kerberosプロセス全体の内部動作についてはわかりません。
ただし、Windows 10では、これは悪夢です。プロセス全体を7から10までミラーリングしましたが、不足しているすべての証明書を含め(コマンドラインから/ securepasswordpromptを使用してnetdomを追加しています)、何をしても、コンピューターはスマートカードを使用してドメインに参加しません。ユーザー名/パスワード(2FAなし)を使用しても問題なく追加されますが、スマートカードを使用すると、次のエラーが表示されます。
The KDC certificate for the domain controller does not contain the KDC Extended Key Usage (EKU): 1.3.6.1.5.2.3.5: Error Code 0xc0000320. The domain administrator will need to obtain a certificate with the KDC EKU for the domain controller to resolve this error. When using Windows Server Certificate Services create a certificated based on the Kerberos Authentication Template.
私が理解していることは、この特定のOIDはサーバー認証用であり、コンピュータアカウントに追加したルート証明書とCA証明書はすべて適切な目的が割り当てられているということです。私は直接ドメイン上のCAサーバーがルート証明書を取得し、持っていないCRLも取得しましたが、エラーは同じままです。今日、私はkerberosデバッグレジストリキーをさらに読み取り、有効にし、再度追加を試みた後、 DCが返されたKDC_ERR_ETYPE_NOTSUPP
。
これにより、2つのマシン間で使用される暗号化方法を調査することになりました。Windows7はRC4、AES128/256が有効で、Windows 10はAES128/256と「将来のタイプ」のみが有効です。当然、私はRC4をオンにしたので、2台のマシン間に一貫性があり、イベントログに新しいエラーが発生しました:KDC_ERR_PREAUTH_REQUIRED
-これにより、暗号化方式が連動していると信じるようになりましたお互いに。
オンラインで読んだところ、このKDC_ERR_PREAUTH_REQUIRED
エラーは通常、単なる警告または「誤検知」のいずれかであり、無視できます(マシンがドメイン上にある場合)。ドメインに参加する前に、このエラーは、ユーザーが間違ったパスワードを入力したこと(スマートカードが正しいPINを使用していることは確かです)、またはマシンとDCの間で暗号化キーが誤って構成されていることを示します。 ADのアカウントでもKerberos pre-authentication required
を無効にしましたが、マシンを追加しようとすると、smartcard logon is required and was not used
でエラーが発生しました。 Wiresharkでこれをテストしましたが、AS_REQ -> KDC_ERR_PREAUTH_REQ -> AS_REQ -> AS_REP
のシーケンスで、4フレームにわたって同じエラーを受け取りました。
結局のところ、別のエラーを吐くことができなかったので、実質的に行き詰まっています。 Windows 10マシンの時間をDCよりも数時間早く変更しようとしたところ、DCは、タイムスキューが原因で参加できなかったことを正しく報告しました。何らかの通信が行われていることがわかります。DCのFQDNでnslookup/pingを実行できますが、名前だけを使用してpingすることはできません。この問題を調査するために使用できる他の方法、またはこれを以前に経験した人はいますか?
pdate:PREAUTH_FAILED
をPREAUTH_REQUIRED
に変更しました。
pdate2:
Windows 7マシンをドメインに参加させる際にWiresharkキャプチャを実行した後、次の初期パターン結果が表示されます(クライアントの場合はcli、サーバーの場合はsrv)。
(cli)AS-REQ
(srv)AS-REP
(cli)TGS-REQ
(srv)TGS-REP
(cli)TGS-REQ
(srv)TGS-REP
上記のログにはもっとたくさんありますが、それが異なる最初のセクションです。対照的に、Windows 10マシンでは、次のようになります。
(cli)AS-REQ
(srv)KRB Error: KRB5KDC_ERR_PREAUTH_REQUIRED
(cli)AS-REQ
(srv)AS-REP
...そこでログが停止し、イベントログにエラーが発生します。 Security Packages
の下のレジストリキーHKLM\SYSTEM\CurrentControlSet\Control\LSA
を変更してkerberos msv1_0 schannel wdigest tspkg pku2u
に変更することについて説明した投稿を読みました。これは、私のWindows 7マシンにあったものです。 Windows 10マシンには、""
のように、引用符が2つしかありませんでした。ただし、これを追加しても効果がないようです。
同じ問題があり、必要なKDC EKUを使用してドメインコントローラー証明書を再発行することで解決しました。ドメインコントローラーの証明書には、クライアント、サーバー、KDC、スマートカードの4つのEKUがあります。また、ドメインコントローラー証明書のためにSANを調整する必要がありました。
これを望まない場合は、クライアントで「厳密なKDC検証を要求する」設定を無効にして、効果があるかどうかを確認してみてください。これは、Windows 7からの動作の文書化された変更があまりよくないようです。少なくとも、グループポリシー設定のスプレッドシート/ドキュメントに設定が文書化されている方法とは一貫していません。
https://technet.Microsoft.com/en-us/library/hh831747.aspx
「厳格なKDC検証は、次のすべてが満たされることを保証する、より制限的な基準のセットです。
ドメインコントローラーには、提供された証明書の秘密キーがあります。
ドメインに参加しているシステムの場合、KDCの証明書を発行した認証局(CA)はNTAuthストアにあります。
ドメインに参加していないシステムの場合、KDCの証明書のルートCAは、サードパーティのルートCAまたはスマートカードの信頼されたルートストアにあります。
KDCの証明書にはKDC EKUが含まれています。
SubjectAltName(SAN)拡張のKDC証明書のDNSNameフィールドは、ドメインのDNS名と一致します。
ドメインに参加していないスマートカードのサインオンの場合、厳密なKDC検証が必要です。
このデフォルトの動作を無効にするには、グループポリシー設定[厳密なKDC検証が必要]を無効にします。
詳しくは:
Kerberos認証の新機能
https://technet.Microsoft.com/en-us/library/hh831747(v = ws.11).aspx
厳格なKDC検証のデフォルトの変更
「ドメインに参加していないスマートカードのサインオンでは、厳密なKDC検証が必要です。
「このデフォルトの動作を無効にするには、グループポリシー設定の[厳密なKDC検証が必要]を無効にします。」