症状
假设你在启用了联邦信息处理标准(FIPS)的服务器上运行 Microsoft SQL Server 2012、2014或2016。 在这种情况下,当你运行或验证包含数据流脚本组件的 Microsoft SQL Server Integration Service 程序包(SSIS)时,将收到以下错误消息:
InvalidOperationException:此实现不是 Windows 平台 FIPS 验证的加密算法的一部分。 在 CryptoserviceProvider 中进行安全加密。 MD5ctor ()
注意 当以下注册表子项设置为 1时,会出现此问题:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\fipsalgorithmpolicy
原因
出现此问题的原因是 SSIS 使用 MD5 算法。 MD5 算法不符合 FIPS 标准。
解决方案
服务包信息
SQL Server 2016
若要在 SQL Server 2016 中修复此问题,请获取 SQL Server 2016 的 Service Pack 1 。
SQL Server 2016 的每个新版本都包含上一版本中包含的所有修补程序和所有安全修补程序。 我们建议你安装 SQL Server 2016 的最新版本。
SQL Server 2014若要在 SQL Server 2014 中修复此问题,请获取 SQL Server 2014 的 Service Pack 2 。
SQL Server 的每个新更新均包含以前更新中附带的所有修补程序和所有安全修补程序。 我们建议你安装 SQL Server 2014 的最新版本。
SQL Server 2012若要在 SQL Server 2012 中修复此问题,请获取 SQL Server 2012 的 Service Pack 3 。
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 产品存在的问题。