web-dev-qa-db-ja.com

新しいサーバーをサーバーマネージャーに追加し、Kerberosエラー0x80090322を取得する

Windowsラボ環境をセットアップしています。 Win2012R2ドメインコントローラー(srv001)があり、ドメイン(srv003)に別のWin2012R2サーバーを追加したいと思います。実際には、すべてうまくいきます。新しいサーバーにDCと同じサブネット内の静的IPアドレスを与え、それを正しいDNSサーバーにポイントして、サーバーをドメインに追加しました。

しかし、新しいサーバーをサーバーマネージャーに追加すると、Kerberosエラー0x80090322が発生します。以下に掲載するかなり長いエラーメッセージがあります。私はいくつかのテストを行ったところ、実際にはKerberos認証を使用してサーバーへのリモートPowershellセッションをセットアップできることがわかりました。

$s = New-PSSession -ComputerName srv003 -Authentication Kerberos
$s | Enter-PSSession

ここでは問題ありません。私は走ったEnable-PSRemotingリモートサーバー上でも問題はありません。

サーバーマネージャーが私の新しいサーバーを気に入ってくれないのはなぜですか?特に、サーバーマネージャが不平を言っているのと同じプロトコルを使用してリモートPowershellを設定することが可能であるためです。


エラーコード0x80090322に属するエラーメッセージ:

次のエラーで構成の更新に失敗しました:次のエラーのため、サーバーからメタデータを取得できませんでした:WinRMは要求を処理できません。Kerberos認証の使用中に、エラーコード0x80090322の次のエラーが発生しました:不明なセキュリティエラー考えられる原因は次のとおりです:

  1. 指定されたユーザー名またはパスワードが無効です。
  2. Kerberosは、認証方法もユーザー名も指定されていない場合に使用されます。
  3. Kerberosはドメインユーザー名を受け入れますが、ローカルユーザー名は受け入れません。
  4. リモートコンピュータ名とポートのサービスプリンシパル名(SPN)が存在しません。
  5. クライアントコンピュータとリモートコンピュータは異なるドメインにあり、2つのドメイン間に信頼関係はありません。

上記の問題を確認した後、以下を試してください:

  1. イベントビューアで認証に関連するイベントを確認してください。
  2. 認証方法を変更します。宛先コンピューターをWinRM TrustedHosts構成設定に追加するか、HTTPSトランスポートを使用します。TrustedHostsリストのコンピューターは認証されない場合があります。
  3. WinRM構成の詳細については、次のコマンドを実行してください:winrm help config。

エラーメッセージの番号付き項目を参照するには:

  1. これを行うには、ドメイン管理者アカウントを使用します。
  2. サーバーマネージャーでこれを変更する方法がわからないので、デフォルトで変更する必要があると思います。
  3. 私はドメイン内で実行しており、サーバーマネージャーをドメイン管理者として起動しています。
  4. サーバーには実際には私が触れていない次のSPNがあります。
    1. Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/srv003.rwwilden01.local
    2. TERMSRV/SRV003
    3. TERMSRV/srv003.rwwilden01.local
    4. WSMAN/srv003
    5. WSMAN/srv003.rwwilden01.local
    6. RestrictedKrbHost/SRV003
    7. ホスト/ SRV003
    8. RestrictedKrbHost/srv003.rwwilden01.local
    9. Host/srv003.rwwilden01.local
  5. 両方のコンピュータが同じドメインにあります。
  6. クライアントマシンにイベントはありません。
  7. これを行う必要はありません。
6
rwwilden

はい、ようやくわかりました。リモートサーバーのイベントログをもう一度確認しました。次のエラーテキストのエラーが含まれていました。

Kerberosクライアントが受信した KRB_AP_ERR_MODIFIED サーバーsrv003からのエラー。使用されたターゲット名はHTTP/srv003.rwwilden01.localでした。これは、ターゲットサーバーが、クライアント。これは、ターゲットサーバープリンシパル名(SPN)が、ターゲットサービスが使用しているアカウント以外のアカウントに登録されている場合に発生する可能性があります。ターゲットSPNがサーバーで使用されるアカウントにのみ登録されていることを確認してください。このエラーは、ターゲットサービスアカウントのパスワードが、そのターゲットサービスのKerberosキー配布センターで構成されているものと異なる場合。サーバー上のサービスとKDCの両方が同じパスワードを使用するように構成されていることを確認してください。サーバー名が完全に修飾されていない場合、およびターゲットドメイン(RWWILDEN01.LOCAL)がクライアントドメイン(RWWILDEN01.LOCAL)と異なる場合、これら2つのドメインに同じ名前のサーバーアカウントがあるかどうかを確認するか、完全修飾名を使用してサーバーを識別します。

1週間前にSPNで管理されたサービスアカウントを追加したようですHTTP/srv003.rwwilden.local。サーバーマネージャーがこのターゲット名を最初に試行する理由はわかりませんが、どうしても機能しません。このSPNは実際のサーバーとはほとんど関係がないため、理にかなっています。

サービスアカウントを削除した後、すべてが意図したとおりに機能し始めました。

5
rwwilden

少し前にこの問題がありましたが、「setspn」ツールを使用して犯人に指摘されました。この記事を読むことで、SPNの理解が深まりました: http://support.Microsoft.com/default.aspx?scid=kb;EN-US;92965

3
Simon L

同じエラーが発生し、さまざまな解決策を試しました。助けになったのは、ドメイン名の代わりにexplicit IPv4 addressを使用することでした。

2
Sergey Mudrov

希望する投稿にコメント(新しい求人、新しいアカウント、ポイントなし)を追加できなかったので、返信します。 IPを使用すると問題が解決する理由は、IPを使用するとKerberosが使用されないためです。縁石は、FQDN(またはNBT名が使用されている場合にのみ試行されます。これは、ドメイン名を追加して、とにかくfqdnにするためです)。一般的に言えば、ほとんどのKerberosエラーは、ネーミングOR SPNが設定されていないか、必要なサービスに正しく設定されているためです。厳密な名前チェックをオフにしない限り、Cnameは機能しません。状況によっては機能しないので、少なくとも診断中はそれらに近づかないようにすることをお勧めします。しかし、正直に言って...この種のことを理解するための最善の方法(Windowsログと縁石はあまり役に立たないため)は、Wiresharkを使用することです。 。ネゴシエーションが表示され、失敗の理由、試行の内容などが表示されます。さらに、イベントビューアで「分析およびデバッグ」ログを有効にすると、カーブの追加のデバッグログが表示され、有効にできます。それでも... Wiresharkはいつもあなたの友達のimhoです!

2
K3nnyg

これは、重複するServicePrincipalNamesがある場合に発生する可能性があります。これは有効なシナリオですが、残念ながらWinRMを混乱させます。

たとえば、サービスアカウント「appPoolAccount」とサーバー「myWebServer」を考えてみます。ActiveDirectoryの両方のオブジェクトには、同じ文字列「HTTP/myWebServer」を含むServicePrincipalNameプロパティがあります。 myWebServerのServicePrincipalNameは 'HTTP/myWebServer:5985になるため、少し異なります。

(ほぼ)重複したServicePrincipalNamesが存在すると、WinRMは問題のKerberosエラーで失敗します。

この問題を回避するには、次のように、ServicePrincipalNameを検索するときにポートを含めるようにInvoke-Commandに指示できます。

### Tell WinRM to include the port in the SPN
Invoke-Command -ComputerName myWebServer -ScriptBlock {Get-Process} -SessionOption (New-PSSessionOption -IncludePortInSPN)
0
Craig - MSFT

私の場合、[〜#〜] not [〜#〜]サーバーが所有するオブジェクトにHTTP/SPNを登録しました。ただし、SETSPN.exeツールはどのコンテナー(またはオブジェクト)がSPNを所有しているかを表示しないため、それを所有しているものを見つけることができませんでした。次のPowerShellスクリプトを使用して、SPNの所有者を見つけました。 SPNを削除し、サーバーを所有者として(SETSPN.exeツールを使用して)SPNを再作成した後、すべてのDCが同期するまで30分待ってから、機能しました。

# Source / credit:
# https://social.technet.Microsoft.com/wiki/contents/articles/18996.active-directory-powershell-script-to-list-all-spns-used.aspx

Clear-Host
$Search = New-Object DirectoryServices.DirectorySearcher([ADSI]"")
$Search.Filter="(servicePrincipalName=*)"

## You can use this to filter for OU's:
## $Results = $Search.FindAll() | ?{ $_.Path -like '*OU=whatever,DC=whatever,DC=whatever*' }
$Results=$Search.FindAll()

foreach($Result in $Results ) {
  $UserEntry=$Result.GetDirectoryEntry()
  Write-Host "Object Name = " $UserEntry.name -BackgroundColor "yellow" -ForegroundColor "black"
  Write-Host "DN      =      "  $UserEntry.distinguishedName
  Write-Host "Object Cat. = "  $UserEntry.objectCategory
  Write-Host "servicePrincipalNames"

  $i=1
  foreach($SPN in $UserEntry.servicePrincipalName ) {
    Write-Host "SPN(" $i ")   =      " $SPN
    $i++
  }

  Write-Host ""
}