問題
假設在已啟用聯邦資訊處理Standard (FIPS) 伺服器上執行 Microsoft SQL Server 2012、2014 或 2016。 在此情況下,當您執行或驗證包含資料流程指令碼元件 (SSIS) 的 Microsoft SQL Server Integration Service 套件時,您會收到下列錯誤訊息:
注意
System.InvalidOperationException: 此實作不是經過 FIPS 驗證的 Windows 平台密碼編譯演算法的一部分。 位於 System.Security.Cryptography.MD5 CryptoserviceProvider..CTOR ()
注意:當下列登錄子機碼設定為 1 時,即發生這個問題:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\fipsalgorithmpolicy
原因
發生這個問題是因為 SSIS 使用 MD5 演算法。 MD5 演算法不符合 FIPS 規範。
解決方式
Service Pack 資訊
SQL Server 2016
若要在 SQL Server 2016 中修正此問題,請取得 SQL Server 2016 的 Service Pack 1。
關於 SQL Server 2016 的更新
SQL Server 2016 的每個新組建都包含所有 Hotfix 和先前組建所包含的所有安全性修正程式。 建議您安裝 SQL Server 2016 的最新組建。
SQL Server 2014若要在 SQL Server 2014 中修正此問題,請取得 SQL Server 2014 的 Service Pack 2。
關於 SQL Server 2014 的更新
SQL Server 的每個新更新都包含所有 Hotfix 和先前更新隨附的所有安全性修正程式。 建議您安裝 SQL Server 2014 的最新組建。
SQL Server 2012 若要在 SQL Server 2012 中修正此問題,請取得 SQL Server 2012 的 Service Pack 3。
關於 SQL Server 2012 的更新
SQL Server 的每個新更新都包含所有 Hotfix 和先前更新隨附的所有安全性修正程式。 建議您安裝最新的 SQL Server 2012 Service Pack。
因應措施
若要解決此問題,請嘗試下列其中一種方法:
關閉伺服器上的 FIPS 原則。 若要執行這項操作,請參閱下列 TechNet 網站上的「設定 FIPS 原則設定」一節:
其他系統對策 注釋您必須重新啟動應用程式,新設定才能生效。
此設定會影響 Windows Server 中的下列登錄值:
HKLM\System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy\Enabled此登錄值反映目前的 FIPS 設定。 如果啟用此設定,則值為 1。 如果停用此設定,則值為 0。
使用其他 Microsoft .NET 解決方案,而不是指令碼元件。
注意:MD5 演算法是在資料流程指令碼元件內硬式編碼。 因此,您無法變更此指令碼元件。
更多資訊
SQL Server Integration Services 使用數種不符合 FIPS 140-2 的 Windows 加密演算法,也就是密碼編譯模組的安全性需求。 例如,SSIS 2012 使用 MD5。 這不符合 FIPS 140-2,用於計算不用於安全性目的的雜湊值。 FIPS 140-2 定義美國和加拿大政府用來驗證實作密碼編譯之產品安全性層級的安全性標準。
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。