我目前正在使用 DotNetOpenAuth v4.1.0.12182 来执行简单的依赖方功能,并且无需添加任何功能即可使其正常运行(经过测试的Google和Yahoo) web.config条目。但是,此站点将部署到启用了以下设置的Web服务器上:
如果没有启用此功能,网站可以正常运行。启用此功能后,我收到服务器错误"此实现不是Windows平台FIPS验证的加密算法的一部分"。我确实在dotnetopenauth v4-0 beta版本页面上找到了相关信息,其中提到,截至DotNetOpenAuth 4.0版本,其中一项更改是"现在可以在.config文件中配置符合FIPS标准的SHA算法。&# 34;
我需要帮助...
我想知道我需要做什么配置更改才能让这个FIPS消息/错误消失。我已经查看了[http://www.dotnetopenauth.net/developers/help/configuration-options/] [2],但对于与FIPS相关的内容,我找不到任何明确的信息。非常感谢任何帮助,谢谢!
更新(7/10/2012)
我提供了我重新采取的步骤,以便可以复制错误:
[ InvalidOperationException :此实现不是Windows平台FIPS验证的加密算法的一部分。]
System.Security.Cryptography。 SHA512 Managed..ctor()+4479214[ TargetInvocationException :调用目标时抛出异常。]尝试执行System.Security.Cryptography。 SHA512 .Create +11然后系统.Security.Cryptography.CryptoConfig.CreateFromName +1195
[ TypeInitializationException :' DotNetOpenAuth.OpenId.HmacShaAssociation'的类型初始值设定项抛出异常。] DotNetOpenAuth.OpenId.HmacShaAssociation.TryFindBestAssociation(cs:134)
疑难解答步骤......
[ InvalidOperationException :此实现不是Windows平台FIPS验证的加密算法的一部分。]
System.Security.Cryptography。 SHA384 Managed..ctor()+ 4486510[ TargetInvocationException :调用目标时抛出异常。]尝试执行System.Security.Cryptography。 SHA384 .Create +11然后系统.Security.Cryptography.CryptoConfig.CreateFromName +1195
[ TypeInitializationException :' DotNetOpenAuth.OpenId.HmacShaAssociation'的类型初始值设定项抛出异常。] DotNetOpenAuth.OpenId.HmacShaAssociation.TryFindBestAssociation(cs:134)
我注意到现在它抱怨SHA384而不是SHA512,所以SHA512的machine.config条目(告诉ASP.NET在System.Core中使用SHA512Cng类)必须正常工作!
接下来,我继续添加SHA384& SHA256条目,执行iisreset,并浏览并单击使用Yahoo ID按钮登录。这次我最终被重定向到Yahoo,登录并被发送回我的localhost URL,但收到了这个FIPS错误:
[ InvalidOperationException :此实现不是Windows平台FIPS验证的加密算法的一部分。] System.Security.Cryptography。 HMACSHA256 .. ctor(字节[]键)+4491026
所以现在我继续以下内容:
好像新的加密DLL没有被拾取"通过ASP.NET和使用。所以,接下来我试过了:
答案 0 :(得分:0)
您需要配置.NET本身以创建所需算法的FIPS兼容版本。请查看此previously filed and fixed issue,包括评论,以获取有关如何继续的指导。
答案 1 :(得分:0)
使用Andrew的评论/链接,我能够使解决方案正常运行。但是,我无法使用.NET Framework 3.5克服FIPS问题。我不得不升级到.NET Framework 4.0,然后将以下内容添加到 machine.config XML文件的根配置元素中:
<mscorlib>
<cryptographySettings>
<cryptoNameMapping>
<cryptoClasses>
<cryptoClass CoreSHA512="System.Security.Cryptography.SHA512Cng, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<cryptoClass CoreSHA384="System.Security.Cryptography.SHA384Cng, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<cryptoClass CoreSHA256="System.Security.Cryptography.SHA256Cng, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</cryptoClasses>
<nameEntry name="System.Security.Cryptography.SHA512" class="CoreSHA512"/>
<nameEntry name="System.Security.Cryptography.SHA384" class="CoreSHA384"/>
<nameEntry name="System.Security.Cryptography.SHA256" class="CoreSHA256"/>
</cryptoNameMapping>
</cryptographySettings>
</mscorlib>
如果上面删除了XML,请按照Andrew提供的链接进行操作,您将通过 joeudwin 在帖子中找到XML。我删除了“TestHMACSHA512”的行,并为384和256个条目复制了“TestSHA512”的行。我不需要从CodePlex下载Security.Cryptography.dll。