Configuration requise pour sharePoint Server pour prendre en charge le chiffrement Kerberos AES en cas d’erreur

Numéro de la ko d’origine :   4501051

Symptômes

Vous recevez des erreurs après avoir modifié le paramètre Sécurité réseau : configurer les types de chiffrement autorisés pour Kerberos via une stratégie locale ou un GPO à partir des valeurs par défaut en une valeur qui autorise uniquement les types de chiffrement suivants :

  • AES128_HMAC_SHA1
  • AES256_HMAC_SHA1
  • Types de chiffrement futurs

Si des erreurs sont écrites dans les journaux ULS (Universal Logging System) de SharePoint, elles indiquent que le type de chiffrement demandé n’est pas pris en charge par le KDC. Les actions qui déclenchent ces erreurs sont les suivantes :

  • Accès à la page Gérer le compte de service dans l’Administration centrale
  • Accès à la page Administration de la recherche (la topologie de recherche peut ne pas s’afficher)
  • Apporter des modifications à la configuration de la recherche

Le message d’erreur sous-jacent écrit dans les journaux ULS SharePoint est le suivant :

Exception : System.ServiceModel.Security.SecurityNegotiationException : un appel au SSPI a échoué, voir l’exception interne.
---> System.Security.Authentication.AuthenticationException : un appel au SSPI a échoué, voir l’exception interne.
---> System.ComponentModel.Win32Exception : le type de chiffrement demandé n’est pas pris en charge par le KDC
--- Fin de la trace de pile des exceptions internes ---

L’application de service Project Server peut également enregistrer un message similaire :

PWA : https://<SharePoint>/<Site> , ServiceApp:PWA, User:i:0#.w| Domain\UserId,
PSI : échec de l’envoi d’une notification de travail à la file d’attente pour le site <Guid> , exception System.ServiceModel. Security.SecurityNegotiationException : un appel au SSPI a échoué, voir l’exception interne.
---> System.Security.Authentication.AuthenticationException : un appel au SSPI a échoué, voir l’exception interne.
---> System.ComponentModel.Win32Exception : le type de chiffrement demandé n’est pas pris en charge par le KDC

Pendant le processus de mise en service des services de profil utilisateur, vous ne pouvez pas démarrer le service de synchronisation des profils utilisateur.

Lors du démarrage du service de profil utilisateur dans l’Administration centrale, le service démarre, puis s’arrête immédiatement. L’inspection du uls SharePoint indique que l’échec du démarrage est le résultat des éléments suivants :

« UserProfileApplication.SynchronizeMIIS: Failed to configure ILM, will attempt to rerun.
Exception : System.Security.SecurityException : le type de chiffrement demandé n’est pas pris en charge par le KDC. »

D’autres composants peuvent écrire des messages d’erreur indiquant que le type de chiffrement demandé n’est pas pris en charge par le KDC.

Cause

Ce comportement se produit en raison d’un conflit entre la stratégie locale personnalisée ou la stratégie de groupe et les propriétés du compte de service dans Active Directory. Lorsque vous configurez le paramètre de propriété Sécurité réseau : configurez les types de chiffrement autorisés pour Kerberos afin que le serveur ne prend en charge que les types de chiffrement AES et les types de chiffrement futurs, le serveur ne prend pas en charge les anciens types de chiffrement Kerberos dans les tickets Kerberos. Il est également important de noter que les objets de compte d’utilisateur créés dans Active Directory ne sont pas configurés pour prendre en charge le chiffrement Kerberos AES par défaut.

Si le serveur est configuré pour exiger des types de chiffrement AES pour Kerberos, mais que les propriétés du compte de service dans Active Directory n’ont pas été mises à jour pour prendre en charge le chiffrement AES, il en résulte un scénario dans lequel le serveur ne parvient pas à négocier un type de chiffrement commun pour les tickets Kerberos.

Résolution

Pour résoudre ce problème, suivez les étapes suivantes :

  1. Identifiez tous les comptes utilisés dans SharePoint en tant que comptes de pool d’applications et comptes de service.

  2. Recherchez les comptes dans Utilisateurs et ordinateurs Active Directory.

  3. Sélectionnez les propriétés.

  4. Sélectionnez l’onglet Compte.

  5. Dans la section Intitulée Options de compte, assurez-vous que l’une des options suivantes ou les deux sont sélectionnées. Cela active la prise en charge du chiffrement Kerberos AES sur ces objets utilisateur :

    • Ce compte prend en charge le chiffrement Kerberos AES 128 bits
    • Ce compte prend en charge le chiffrement Kerberos AES 256 bits
  6. Effectuez une action sur les serveurs et redémarrez tous les services associés à SharePoint qui s’exécutent dans le contexte des comptes iisreset de service modifiés.

Plus d’informations

Pour vérifier si votre serveur SharePoint est configuré pour prendre en charge uniquement les types de chiffrement AES ou les types plus nouveaux :

  1. Sur le serveur, démarrez l’Éditeur de stratégie de sécurité locale (secpol.msc).
  2. Développez les options de sécurité des stratégies locales > > des paramètres de sécurité.
  3. Localiser la sécurité réseau : configurer les types de chiffrement autorisés pour Kerberos.
  4. Sélectionnez les propriétés.

Si seules les options suivantes sont sélectionnées :

  • AES128_HMAC_SHA1
  • AES256_HMAC_SHA1
  • Types de chiffrement futurs

Capture d’écran des types de chiffrement autorisés pour Kerberos.

Ensuite, vous devez activer la prise en charge du chiffrement Kerberos AES sur les objets utilisateur Active Directory utilisés pour exécuter les services et les pools d’applications SharePoint.

Vous pouvez utiliser le script PowerShell suivant pour identifier les comptes de service SharePoint et tester s’ils sont configurés pour prendre en charge les types de chiffrement 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 ========================================================