Tuesday, April 21, 2009

IIS 6.0 - Failed to decrypt using provider efter reboot

Konfigurationsfiler, som fx web.config, bør krypteres hvis de indeholder følsom information (fx connections strings eller brugernavn og kodeord). Dette kan ske på flere måder, se fx:

How To: Encrypt Configuration Sections in ASP.NET 2.0 Using DPAPI

eller

How To: Encrypt Configuration Sections in ASP.NET 2.0 Using RSA (i web farm scenarier)

Hvis du vælger kryptering af en web.config vha. DPAPI skal du være opmærksom på, at denne metode på IIS 6.0 ikke tåler, at du genstarter af serveren! Genstart af IIS fungerer fint, men genstartes hele serveren vil du få fejlen:

Failed to decrypt using provider

Dette skyldes, at IIS 6.0 pr default ikke loader brugerprofilen for den konto der anvendes af application poolen, hvorfor der ikke efter genstart er adgang til de nødvendige nøgler.

En mulig løsning er, at lave en dummy windows service og konfigurere denne til at logge på med den samme konto som benyttes af web-applikationens application pool.

På IIS 7.0 kan man under application pools advanced settings sætte load user profile til true, og herved undgå at lave ovenstående dummy service hack: