Windows で [暗号化、ハッシュ、および署名に FIPS 準拠のアルゴリズムを使用する] セキュリティ ポリシー オプションを有効にした場合、.NET Framework で多くの暗号化クラスを使用しようとすると、InvalidOperationException が発生します。デフォルトでは、ASP.NET は AES を使用して ViewState blob を暗号化するため、失敗します。これを回避するには、次のようなキーを web.config に追加します。
<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>
これで、基本的な ASP.NET の使用がカバーされます。私の問題は次のとおりです。ScriptManagers (ASP.NET AJAX の基盤) を多用する大規模で複雑な ASP.NET Web アプリケーションがあり、この FIPS ポリシー設定を有効にする必要がある政府の顧客によって展開される必要があります。ScriptManager を含む ASP.NET ページは、次の例外をスローします。
[InvalidOperationException: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.]
System.Security.Cryptography.SHA1Managed..ctor() +3607454
System.Security.Policy.Hash.get_SHA1() +45
System.Web.Handlers.ScriptResourceHandler.GetAssemblyInfoInternal(Assembly assembly) +85
System.Web.Handlers.ScriptResourceHandler.GetAssemblyInfo(Assembly assembly) +99
System.Web.Handlers.RuntimeScriptResourceHandler.GetScriptResourceUrlImpl(List`1 assemblyResourceLists, Boolean zip, Boolean notifyScriptLoaded) +525
System.Web.Handlers.RuntimeScriptResourceHandler.System.Web.Handlers.IScriptResourceHandler.GetScriptResourceUrl(List`1 assemblyResourceLists, Boolean zip, Boolean notifyScriptLoaded) +910
System.Web.Handlers.RuntimeScriptResourceHandler.System.Web.Handlers.IScriptResourceHandler.GetScriptResourceUrl(Assembly assembly, String resourceName, CultureInfo culture, Boolean zip, Boolean notifyScriptLoaded) +193
System.Web.UI.ScriptReference.GetUrlFromName(ScriptManager scriptManager, IControl scriptManagerControl, Boolean zip) +306
System.Web.UI.ScriptManager.RegisterUniqueScripts(List`1 uniqueScripts) +169
System.Web.UI.ScriptManager.RegisterScripts() +407
System.Web.UI.ScriptManager.OnPagePreRenderComplete(Object sender, EventArgs e) +200
System.Web.UI.Page.OnPreRenderComplete(EventArgs e) +11041982
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3672
要素を web.config に追加しても<enforceFIPSPolicy enabled="false"/>
、例外は解決されません。
Windows FIPS セキュリティ ポリシーで ScriptManager を使用できるように ASP.NET を構成する方法はありますか?