徵狀
假設您在啟用 [聯邦資訊處理標準(FIPS)] 的伺服器上執行 Microsoft SQL Server 2012、2014或2016。 在這種情況下,當您執行或驗證封裝含資料流程程腳本元件的 Microsoft SQL Server Integration Service 套件(SSIS)時,您會收到下列錯誤訊息:
InvalidOperationException:此實現不是 Windows 平臺 FIPS 驗證的加密演算法的一部分。 在 System. Security. 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 的最新組建。
SQL Server 2014若要在 SQL Server 2014 中修正這個問題,請取得 Service Pack 2 (適用于 sql server 2014)。
每個新的 SQL Server 更新,都包含前一個更新中所包含的所有修復程式及所有安全性修正程式。 我們建議您安裝 SQL Server 2014 的最新組建。
SQL Server 2012若要在 SQL Server 2012 中修正這個問題,請取得 Service Pack 3 (適用于 sql server 2012)。
每個新的 SQL Server 更新,都包含前一個更新中所包含的所有修復程式及所有安全性修正程式。 我們建議您安裝 適用于 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 使用數個 Windows 加密演算法,這些演算法不符合 FIPS 140-2,就是加密模組的安全性需求。 例如,SSIS 2012 會使用 MD5。 此做法不符合 FIPS 140-2,用於計算不會用於安全性的雜湊值。 FIPS 140-2 定義了美國和加拿大政府用來驗證實施密碼技術之產品安全等級的安全性標準。
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。