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