2 台の CentOS 6.7 マシン (サーバー A とサーバー B) があります。各システムに同じパッケージ バージョンがインストールされます。
先週、サーバー A でopenSSH FIPS 140-2 モジュールを有効にしました。そのシステムは問題なく動作します (SQL Server インスタンスへの tsql クエリを含む)。
今日、サーバー B (上のリンク) で同じ手順を実行しました。再起動後、fips は有効でテスト済みで OK を示しましたが、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 モジュールをバックアウト (fips=1 を grub.conf から削除) し、再起動して設定を元に戻すと、再びtsql
SQL Server インスタンスにアクセスできるようになりました。
どちらの CentOS マシンも同じ libgcrypt バージョン (1.4.5) を使用しています。
なぜ (またはどのように) grub で FIPS を有効libgcrypt
にすると、この 1 台のマシンで失敗するのですか? 明らかに、マシン間で何か構成がずれていますが、私はそれを見つけることができず、次に探す場所を見つけるためにリソースを使い果たしました。
注 1:
tsql
空のファイルを作成することで、grub で FIPS 140-2 を有効にせずにサーバー B で問題を再現できます/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