一. 發生問題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,立刻去登陸賬號,經過了!!!
果真系統不一樣,讀取的註冊表目錄是會有差異的。。。
五. 總結
有時候項目在本機是沒問題的,可是發佈到服務器上後總會出現一些奇怪的問題,這是常常發生的事情,你們都懂的。可是發生了問題,確定是須要去解決的,首先,代碼裏作好基本的錯誤日誌記錄確定是須要的,再找到解決方案,發現不可用以後,須要冷靜下來,思考爲何會發生這樣的問題,而後能夠根據現有的解決辦法延伸出去,多方位去判斷緣由,並嘗試去動手,花時間不重要,重要的是累積經驗,之後就能夠少踩一些坑了。