解决md5不是windows平台FIPS验证的加密算法的一部分的怪异问题

一. 发生问题html

      临近下班时间的下午,领导一句话:项目先上到测试服吧,我明早来看看。web

      我想项目还没作完,先上到测试服务器,简单看下应该是没什么问题,部署也只是一下子的事嘛,随后把手头的项目编译,发布,拷到远程服务器上,IIS配置一下,各种服务装一下,在浏览器中输入地址,成功进入登陆界面,输入正确的账号密码,却发现登陆不了,what,什么鬼?算法

      

二. 查找缘由windows

      由于项目在本地是正常的,因而找到日志,发现了问题所在浏览器

       

      缘由是用户的登陆密码加密方式用的是md5,而md5并非FIPS(Federal Information Processing Standards 即(美国)联邦信息处理标准)中的一个部分  安全

 

 三. 尝试解决问题   服务器

      因而打开某度,输入上面的错误,满屏的全匹配红色关键字扑面而来,看来有这问题的人还真多,瞬间以为有救了编辑器

      主要缘由就是系统的组策略安全设置开启了FIPS致使没法使用MD5算法,秉着志在必得的心情,按照网友们的解决办法去弄了一遍,不外乎就两种方式:测试

       第一种:到系统的组策略安全设置中把FIPS禁用掉this

                    步骤:

                   1.按 WIN+R(或点击开始-运行),并输入gpedit.msc后肯定,启动组策略编辑器。

                   2.左侧列表中找到 计算机配置 - Windows设置 - 安全设置 - 本地策略 - 安全选项,并在右侧找到“系统加密:将FIPS兼容算法用于加密、哈希和签名”,设置为禁用

                   

 

 

       第二种:修改注册表

                步骤:

                1.按WIN+R(或点击开始-运行),并输入 后肯定,启动注册表编辑器。

                2.浏览到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy,将Enabled的值改成0

                 

  

       通过上面两种方法尝试后发现竟然仍是不行!!!,众多教程几乎全都是这两种解决办法,为何我不行!!

 

       思考片刻,我想国内找不到,国外总有吧,这时候打开了某歌,输入错误信息。。。等等,外国人是用英文的,因而先去找到了错误信息对应的英文翻译(This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms),搜索,又是一片,呵呵

       在浏览多个页面的过程当中,不经意间就进到巨硬msdn的一个页面,终于又发现了两个解决方法:

       1. 升级系统补丁,或者找到一个名叫KB935434的补丁(这个补丁根本已经找不到了好么)

       2. 在webconfig加入一段配置,能够绕过FIPS的验证  (一点用没有。。。)

       参考页面:https://blogs.msdn.microsoft.com/dataaccesstechnologies/2015/07/16/report-manager-system-invalidoperationexception-this-implementation-is-not-part-of-the-windows-platform-fips-validated-cryptographic-algorithms/

 

四. 解决问题

       通过上面全部的尝试,包括重启,反复尝试,寻找方案,各类技术群询问,已通过去了3个多小时,我已经有点崩溃

       忽然想到上面说的系统补丁,我想会不会是系统的缘由,服务器的系统是win server 2008 r2 sp1 ,我去翻看了我本机电脑的注册表,发现是有不一样的,我甚至还把本机注册表里有的项,而服务器里没有的,全给它建上去了,仍是不行! 

 

      会不会是系统不一样,读取的目录是不一样的,或者说这个FIPS开关是会有多个的??

      因而我尝试着在注册表里全局搜索FipsAlgorithmPolicy这个关键字,一项一项的查找,最后定位到了一个仅有一层父级目录不一样,可是其余目录结构,名字如出一辙的项

       

      把里面的项改为0,立刻去登陆账号,经过了!!!

      果真系统不一样,读取的注册表目录是会有差异的。。。

五. 总结

      有时候项目在本机是没问题的,可是发布到服务器上后总会出现一些奇怪的问题,这是常常发生的事情,你们都懂的。可是发生了问题,确定是须要去解决的,首先,代码里作好基本的错误日志记录确定是须要的,再找到解决方案,发现不可用以后,须要冷静下来,思考为何会发生这样的问题,而后能够根据现有的解决办法延伸出去,多方位去判断缘由,并尝试去动手,花时间不重要,重要的是累积经验,之后就能够少踩一些坑了。

 

做者:Harry
相关文章
相关标签/搜索