エラーが発生した場合の Kerberos AES 暗号化をサポートするための SharePoint server の構成要件

元の KB 番号:   4501051

現象

[ネットワークセキュリティの設定] を変更した後でエラーが表示されます。ローカルポリシーまたは GPO 経由で Kerberos に許可される暗号化の種類 を既定値から、次の暗号化の種類のみを許可する値に設定します。

  • AES128_HMAC_SHA1
  • AES256_HMAC_SHA1
  • 今後の暗号化の種類

エラーが SharePoint Universal Logging System (ULS) ログに書き込まれる場合、要求された暗号化の種類が KDC でサポートされていないことを示します。 これらのエラーを引き起こすアクションは次のとおりです (ただし、制限はありません)。

  • サーバーの全体管理の [サービスアカウントの管理] ページへのアクセス
  • [検索管理] ページへのアクセス (検索トポロジが表示されない可能性があります)
  • 検索構成に変更を加える

SharePoint ULS ログに書き込まれる基礎となるエラーメッセージは次のとおりです。

例外: SecurityNegotiationException: SSPI の呼び出しに失敗し ました。「内部例外」を参照してください
---> 認証例外: SSPI の呼び出しに失敗しました。内部例外を参照してください。
---System.componentmodel.description > Win32Exception: 要求された 暗号化の種類は KDC でサポートされていません
---内部例外スタックトレース---の最後

Project Server サービスアプリケーションは、同様のメッセージをログに記録することもあります。

PWA: https://<SharePoint>/<Site> 、serviceapp: pwa、ユーザー: i: 0 #. w |ドメイン \ ユーザー id、
PSI: サイトのキューにジョブ通知を送信できませんでした <Guid> 。例外: system.servicemodel。 SecurityNegotiationException: SSPI の呼び出しに失敗しました。内部例外を参照してください。
---> 認証例外: SSPI の呼び出しに失敗し ました。内部例外を参照してください
---System.componentmodel.description > Win32Exception: 要求された 暗号化の種類は KDC でサポートされていません

ユーザープロファイルサービスをプロビジョニングする過程で、User Profile Synchronization service を開始できません。

サーバーの全体管理で User Profile Service を開始すると、サービスが開始され、直ちに停止します。 SharePoint ULS を検査すると、開始に失敗した場合は、次のような結果になります。

"UserProfileApplication: ILM を構成できませんでした。再実行を試みます。
例外: SecurityException: 要求された暗号化の種類は、KDC でサポートされていません。 "

その他のコンポーネントは、要求された暗号化の種類が KDC でサポートされていないことを示すエラーメッセージを書き込むことがあります。

原因

この現象は、Active Directory でのカスタムローカルポリシーまたはグループポリシーと、サービスアカウントのプロパティとの間の競合が原因で発生します。 プロパティの設定 [ ネットワークセキュリティ: kerberos に許可されている暗号化の種類 を構成する] を構成すると、サーバーが AES 暗号化の種類と将来の暗号化の種類のみをサポートするように、サーバーは kerberos チケットで古い kerberos 暗号化タイプをサポートしません。 また、Active Directory 内に作成されたユーザーアカウントオブジェクトは、既定で Kerberos AES 暗号化をサポートするように構成されていないことにも注意する必要があります。

サーバーが Kerberos に AES 暗号化タイプを要求するように構成されていても、Active Directory のサービスアカウントのプロパティが AES 暗号化をサポートするように更新されていない場合、その結果として、サーバーが Kerberos チケットの一般的な暗号化タイプをネゴシエートできないというシナリオがあります。

解決方法

この問題を解決するには、次の手順を行います。

  1. アプリケーションプールアカウントおよびサービスアカウントとして、SharePoint 内で使用されるすべてのアカウントを特定します。

  2. [Active Directory ユーザーとコンピューター] でアカウントを見つけます。

  3. [ プロパティ] を選択します。

  4. [ Account ] タブを選択します。

  5. [ アカウントオプション] というタイトルのセクションで、次のオプションのいずれかまたは両方が選択されていることを確認します。 これにより、これらのユーザーオブジェクトに対する Kerberos AES 暗号化のサポートが有効になります。

    • このアカウントは Kerberos AES 128 ビット暗号化をサポートします。
    • このアカウントは Kerberos AES 256 ビット暗号化をサポートします。
  6. サーバー上でを実行し、変更された iisreset サービスアカウントのコンテキストで実行されている SharePoint 関連のサービスを再起動します。

詳細

SharePoint サーバーが AES 暗号化タイプのみをサポートするように構成されているか、またはそれより新しいタイプであるかを確認するには

  1. サーバーで、 ローカルセキュリティポリシーエディター (secpol) を起動します。
  2. [セキュリティ設定 > ] [ローカルポリシー > ] [セキュリティオプション] の順に展開します。
  3. [ ネットワークセキュリティ: Kerberos に許可されている暗号化の種類を構成する。」を探します。
  4. [ プロパティ] を選択します。

次のオプションのみが選択されている場合:

  • AES128_HMAC_SHA1
  • AES256_HMAC_SHA1
  • 今後の暗号化の種類

Kerberos で許可されている暗号化の種類のスクリーンショット。

その後、SharePoint サービスとアプリケーションプールを実行するために使用される Active Directory ユーザーオブジェクトで KERBEROS AES 暗号化のサポート を有効にする必要があります。

次の PowerShell スクリプトを使用して、SharePoint サービスアカウントを識別し、AES 暗号化タイプをサポートするように構成されているかどうかをテストできます。

Add-PSSnapin Microsoft.SharePoint.Powershell
$AES_128 = 0x8
$AES_256 = 0x10
$Separator="\"
$option = [System.StringSplitOptions]::RemoveEmptyEntries
Write-Host "Retrieving SharePoint Managed Accounts" -ForegroundColor White
$SharePointAccounts=""
$ManagedAccounts=Get-SPManagedAccount
foreach ($ManagedAccount in $ManagedAccounts)
{
Write-Host "Checking Account: "$ManagedAccount.Username
$temp=$ManagedAccount.Username
$samaccountName=$temp.Split($separator,2, $option)[1]
$userobj=([adsisearcher]"samAccountName=$samaccountName").FindOne()
$EncryptionTypes=$userobj.properties.Item('msds-supportedencryptiontypes')[0]
#$EncryptionTypes
$HexValue='{0:X}' -f $EncryptionTypes
if ($EncryptionTypes -band $AES_128)
{
Write-Host "Account Supports AES128 bit encryption " -ForegroundColor Green
}
Else
{
Write-Host "Account Does Not have AES128 bit encryption support enabled" -ForegroundColor Red
}
if ($EncryptionTypes -band $AES_256)
{
Write-Host "Account Supports AES256 bit encryption " -ForegroundColor Green
}
Else
{ Write-Host "Account Does Not have AES256 bit encryption support enabled" -ForegroundColor Red
}
}
====================== END SCRIPT ========================================================