zoukankan      html  css  js  c++  java
  • 解决md5不是windows平台FIPS验证的加密算法的一部分的怪异问题

    一. 发生问题

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

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

          

    二. 查找原因

          因为项目在本地是正常的,于是找到日志,发现了问题所在

           

          原因是用户的登录密码加密方式用的是md5,而md5并不是FIPS(Federal Information Processing Standards 即(美国)联邦信息处理标准)中的一个部分  

     三. 尝试解决问题   

          于是打开某度,输入上面的错误,满屏的全匹配红色关键字扑面而来,看来有这问题的人还真多,瞬间觉得有救了

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

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

                        步骤:

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

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

                       

           第二种:修改注册表

                    步骤:

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

                    2.浏览到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaFipsAlgorithmPolicy,将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
  • 相关阅读:
    Two Sum II
    Subarray Sum
    Intersection of Two Arrays
    Reorder List
    Convert Sorted List to Binary Search Tree
    Remove Duplicates from Sorted List II
    Partition List
    Linked List Cycle II
    Sort List
    struts2结果跳转和参数获取
  • 原文地址:https://www.cnblogs.com/simendancer/p/6748061.html
Copyright © 2011-2022 走看看