セキュアチャネルの破損をPowerShellで修復する

ドメインユーザーとしてログオンしようとすると「このワークステーションとプライマリドメインとの信頼関係に失敗しました。」と出てログインできない場合があります。

この現象はセキュアチャネルが破損している場合に見られます。

この記事ではこういった破損したセキュアチャネルを修復する手順について解説します。

※そもそもセキュアチャネルが何かを知りたい人はこのあたりを参照してください。

セキュアチャネルの状態を確認する

ログイン時に上記画像のメッセージが出ていれば基本的にセキュアチャネルが破損していますが、正確に状態を把握するには「nltest /sc_verify:ドメイン名」コマンドを実行します。

↓正常な場合の実行結果

PS > nltest /sc_verify:example.com
フラグ: b0 HAS_IP  HAS_TIMESERV
信頼された DC 名 \\DC1.example.com
信頼された DC 接続状態 Status = 0 0x0 NERR_Success
信頼の確認 Status = 0 0x0 NERR_Success
コマンドは正常に完了しました

↓セキュアチャネルが破損している場合の実行結果

PS > nltest /sc_verify:example.com
フラグ: 80
信頼された DC 名
信頼された DC 接続状態 Status = 5 0x5 ERROR_ACCESS_DENIED
信頼の確認 Status = 5 0x5 ERROR_ACCESS_DENIED
コマンドは正常に完了しました


ではどうするかというと、一旦ドメイン抜けて再参加というのも一つの解ではありますが、
「一時的でもGPOが外れたら困る」とか
ドメイン参加は管理者しかできないようにしてる」
ドメインを抜けるとどこに影響するか分からず不安」
といった場合もあると思うので、PowerShellのTest-ComputerSecureChannelコマンドで修復することをお勧めします。以下手順。

セキュアチャネルを修復する

PowerShell 3.0以降の環境が必要ですが、Windows 7の場合はデフォルトのバージョンが2.0なので、次のサイトからWMF3.0をダウンロードおよびインストールします。

Windows Management Framework 3.0
http://www.microsoft.com/en-us/download/details.aspx?id=34595

WMF3.0のインストールが完了したら、$PSVersionTableコマンドでPowerShellのバージョンが3.0になっていることを確認します。

PS > $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
3      0      -1  -1


準備が整ったら実際に修復します。
「Test-ComputerSecureChannel -credential ドメイン名\ドメイン管理者ユーザー -repair」をPowerShellで実行します。

Test-ComputerSecureChannel -credential example.com\administrator -repair

すると指定したユーザーで認証を求める画面が表示されるので、パスワードを入力してあげます。
f:id:thdy:20171124130103p:plain

認証が通り修復が完了すれば、PowerShellの画面に「True」が返ってきます。
前述のnltestコマンドでセキュアチャネルが正常になっていることを確認してみましょう。