以下の内容はhttps://error-daizenn.hatenablog.com/entry/2026/03/13/003416より取得しました。


Windows 11でKerberos認証エラー「Cannot generate SSPI context」が発生する理由と解決策|MSSQLSvc SPNとポート指定の落とし穴

 

Windows 11でKerberos認証エラー「Cannot generate SSPI context」が発生する理由と解決策|MSSQLSvc SPNとポート指定の落とし穴

Windows環境でSQL Serverへ接続する際、Kerberos認証が原因で接続エラーが発生するケースは少なくありません。特にWindows 11のセキュリティ強化環境では、従来問題なく動作していた構成でも突然接続できなくなることがあります。

本記事では、Windows 11クライアントからSQL Serverへ接続する際に発生する「Cannot generate SSPI context」エラーの原因と、その背後にあるKerberos認証およびSPN(Service Principal Name)の挙動について詳しく解説します。さらに、実際の検証から見えてきた解決方法や運用時の注意点も整理します。

Windows 11環境で発生するSQL Server接続エラー

Windows 11クライアントからSQL Serverへ接続する際、SQL Server Management Studio(SSMS)で以下のようなエラーが表示される場合があります。

「The target principal name is incorrect. Cannot generate SSPI context」

このエラーはKerberos認証の失敗によって発生する典型的なメッセージです。特に以下のような環境で発生しやすくなります。

・Windows 11クライアント
・セキュリティベースラインGPOを適用
・Credential Guard有効
・RC4暗号無効化
・SHA1 PKINIT無効化

興味深い点として、同じGPOを適用しているWindows 10クライアントでは問題が発生しないケースがあることです。また、Windows 11でもセキュリティ強化を行っていない場合は正常に接続できます。

つまり、Windows 11のセキュリティ仕様とKerberos認証の組み合わせが、この問題の鍵となっています。

klistコマンドで確認できるKerberosチケットエラー

Kerberos認証の問題を調査する際、よく利用されるのが「klist」コマンドです。
Windows 11の問題が発生する環境では、次のコマンドを実行するとエラーが確認できます。

klist get MSSQLSvc/my.fully.qualified.name:1433

実行結果として次のエラーが表示されます。

Error calling API LsaCallAuthenticationPackage (GetTicket substatus): 0x3bc4
Hash generation for the specified version and hash type is not enabled on server.

このメッセージは、Kerberosチケット生成時に指定されたハッシュアルゴリズムがサーバー側で有効になっていない可能性を示しています。

しかし、実際には環境内でAES-256によるKerberosチケットとセッションキーは正常に交渉されています。そのため、単純な暗号方式の不一致とは考えにくい状況です。

SPNのポート指定で挙動が変わる謎

調査を進めると、さらに不可解な現象が確認されます。

以下のSPNではチケット取得に失敗します。

MSSQLSvc/my.fully.qualified.name:1433

一方、ポート番号を省略したSPNでは正常にチケットが取得できます。

MSSQLSvc/my.fully.qualified.name

つまり同じサービスアカウントに登録されているSPNであっても、ポート指定の有無でKerberos認証の結果が変わるのです。

さらに、接続文字列でServerSPNをポート無しのSPNに指定すると、SSMSからの接続も成功します。

この現象はSPN登録ミスのように見えますが、setspnコマンドで確認するとポート付きSPNも正しく登録されています。

Active Directory設定の確認ポイント

この問題を切り分ける際、以下の設定を確認することが重要です。

SPN登録状態

まず、対象SQL ServerのSPNがActive Directoryに正しく登録されているかを確認します。

setspn -Q MSSQLSvc/my.fully.qualified.name
setspn -Q MSSQLSvc/my.fully.qualified.name:1433

両方が同じサービスアカウントに紐づいている必要があります。

Kerberos暗号方式

Active Directoryの属性「msDS-SupportedEncryptionTypes」も確認ポイントです。

一般的な設定例は以下です。

28(AES128 + AES256)

この設定により、KerberosチケットはAES暗号を利用して発行されます。

gMSAのパスワード更新

SQL ServerがgMSA(Group Managed Service Account)を使用している場合、パスワードローテーション後のSPN動作も確認する必要があります。

ただし今回のケースでは、パスワード更新後でも状況は変わらなかったため、直接の原因ではありませんでした。

Windows 11セキュリティポリシーの影響

問題の根本原因として疑われるのが、Windows 11で強化されたKerberos関連ポリシーです。

特に影響が考えられる設定が以下です。

Configure hash algorithms for certificate logon

このポリシーは、KerberosのPKINIT(証明書ベース認証)で使用されるハッシュアルゴリズムを制御します。SHA-1を無効化するなどのセキュリティ強化が可能です。

ただし、この設定は本来スマートカード認証などの証明書ログオン用途に限定されます。通常のKerberosサービスチケット取得とは直接関係しないため、挙動の違いが生じる理由は環境依存の可能性があります。

実用的な回避策

現時点で有効とされる回避策はいくつかあります。

ポート無しSPNを使用する

接続文字列やSQL Serverの設定でServerSPNを以下の形式に変更します。

MSSQLSvc/my.fully.qualified.name

これによりKerberosチケット取得が正常に行われる場合があります。

Kerberosポリシーの確認

以下のGPO設定を確認します。

System\KDC
System\Kerberos

特に証明書ログオン関連のハッシュアルゴリズム設定が影響していないかチェックします。

セキュリティベースラインの再評価

Windows 11 Security Baselineをそのまま適用すると、Kerberos関連の互換性問題が発生することがあります。SQL Server環境では以下の点を見直す価値があります。

・RC4無効化の影響
・PKINIT関連ポリシー
・Credential Guardとの相互作用

まとめ

Windows 11のセキュリティ強化により、Kerberos認証の挙動が従来のWindows 10とは異なるケースが確認されています。特にSQL Server接続においては、SPNのポート指定によってチケット取得結果が変わるという予想外の現象が起きることがあります。

重要なポイントは次の通りです。

・Windows 11ではKerberosのポリシー影響を受けやすい
・SPNはポート指定の有無で挙動が変わる場合がある
・klistでチケット取得を検証すると原因切り分けがしやすい
・回避策としてポート無しSPNを利用できる

企業環境でWindows 11への移行を進める場合、Active DirectoryとKerberosの設定確認は必須です。特にSQL ServerなどKerberos認証に依存するシステムでは、事前検証を行うことで予期しない接続トラブルを防ぐことができます。




以上の内容はhttps://error-daizenn.hatenablog.com/entry/2026/03/13/003416より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14