症状
假设Microsoft SQL Server 2012、2014 或 2016 在启用了联邦信息处理Standard (FIPS) 服务器上运行。 在这种情况下,在运行或验证包含数据流脚本组件的 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 的每个新内部版本都包含先前内部版本中包含的所有修补程序和所有安全修补程序。 建议安装 SQL Server 2016 的最新版本。
SQL Server 2014 若要在 SQL Server 2014 中解决此问题,请获取 SQL Server 2014 Service Pack 2。
关于 SQL Server 2014 的更新
SQL Server 的每个新更新都包含上一个更新中包含的所有修补程序和所有安全修补程序。 建议安装 SQL Server 2014 的最新版本。
SQL Server 2012 若要在 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 使用几种不符合 FIPS 140-2 的 Windows 加密算法,这些算法是加密模块的安全要求。 例如,SSIS 2012 使用 MD5。 这不符合 FIPS 140-2 用于计算不用于安全目的的哈希值。 FIPS 140-2 定义了美国和加拿大政府用于验证实施加密产品安全级别的安全标准。
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。