我有两台 CentOS 6.7 机器(服务器 A 和 B)。每个系统上都安装了相同的软件包版本。
上周我在服务器 A 上启用了 openSSH FIPS 140-2 模块,并且该系统完美运行(包括对 SQL Server 实例的 tsql 查询)。
今天我在服务器 B 上完成了相同的步骤(在上面的链接中)。重新启动后,fips 显示启用并测试正常 - 但是tsql
(对于同一个 SQL Server 实例)停止工作并出现以下错误:
[serverB ~]# tsql -S egServer80 -U myusername
Password:
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Error 20002 (severity 9):
Adaptive Server connection failed
There was a problem connecting to the server
我检查了日志文件并找到了这个:
tsql: Libgcrypt warning: MD5 used - FIPS mode inactivated
在 freetds 中启用调试会产生这个额外的错误:
14:56:46.617196 3577 (net.c:1366):'''handshake failed: GnuTLS internal error.
退出 FIPS 模块(从 grub.conf 中删除 fips=1)并重新启动设置,我再次能够tsql
进入我的 SQL Server 实例。
两台 CentOS 机器使用相同的 libgcrypt 版本(1.4.5)。
为什么(或如何)在 grub 中启用 FIPS 导致libgcrypt
在这台机器上失败? 显然,机器之间的某些配置已关闭,但我无法发现它,并且已经用尽了资源来寻找下一步。
注意#1:
tsql
通过创建一个空文件,我可以在服务器 B 上重现该问题,而无需在 grub 中启用 FIPS 140-2 /etc/gcrypt/fips_enabled
。删除此文件可使系统恢复正常,并tsql
再次运行。
笔记2:
在服务器 A 上添加文件/etc/gcrypt/fips_enabled
根本不会影响tsql
功能。
附加信息
libgcrypt version 1.4.5
freetds version 0.91
openssl version 1.0.1e
CentOS version 6.7