IIS : Erreur lors de la déclaration de l’identité d’un pool d’application

iisSur un serveur qui fonctionnait parfaitement (c’est à dire que IIS tourne et les sites répondent), je crée un nouveau pool d’application avec un compte d’annuaire comme identité. Et là boom, erreur de type « Données incorrectes » (HRESULT : 0x80090005) :

iis_bad_data

Ou plus sexy en Powershell :

iis_bad_data_ps

Dans un premier temps, on pourrait croire que le mot de passe du compte est erroné. Mais ce n’est pas le cas. Quand cette erreur survient, le serveur a déjà vérifié la validité du compte.

Comment IIS encrypte les mots de passe ?
IIS encrypte les mots de passe en utilisant différents providers qui sont stockées dans le fichier applicationHost.config (%SystemRoot%System32inetsrvconfig), dans la section <configProtectedData>, par exemple :


<add name="IISWASOnlyAesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="*****" />

Le provider « AesProvider » est utilisé pour crypter et décrypter les sections system.webServer.
Le provider « IISWASOnlyRsaProvider » est utilisé pour crypter et décrypter les sections dans le applicationHost.config.

Quant aux clés d’encryption, elles sont dans C:ProgramDataMicrosoftCryptoRSAMachineKeys, et elles sont uniques à chaque serveur !

Conclusion : Cette erreur viendrait du fait que les providers décrits dans applicationHost.config ne correspondent plus aux clés du serveur.

Que s’est-il passé ?
Il y a évidemment plusieurs scénarii qui aboutissent à ce problème, mais le plus simple est le suivant : le fichier applicationHost.config a été écrasé à partir d’une copie d’un autre serveur.

Comment résoudre ?
Il y a plusieurs solutions aussi, plus ou moins douloureuses :
Restaurer le fichier applicationHost.config s’il a été sauvegardé,
Réinstaller le rôle « Serveur web »,
Importer également les clés du serveur d’origine. Cet article explique bien le problème et la manipulation à faire.

Un autre article intéressant explique tout cela en détail : MachineKeys on IIS 7.x : Inside Out.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *