[gnutls-help] Compiling with the FIPS option

jonetsu at teksavvy.com jonetsu at teksavvy.com
Tue Jan 13 11:47:04 CET 2015


Hello,

I'm trying to compile gnutls-3.3.11 with the FIPS option.  The host
already has a libgnutls.so.28 installed but, I'm using the default
location of /usr/local/lib/ so this should cause no problem.  But it
does.  Here are the details.

This is in two parts.  The first part is about the error in the
linking of gnutls-cli against the /usr/local/lib/ new install.  The
second part is about some HMAC files that are missing.

Help would be greatly appreciated !

Already in the host, (a Linux Mint 17 system, 64 bit) :

% dpkg -l | grep tls
  [...]
  libgnutls28:amd64  3.2.11-2ubuntu1

Compiling the source:

% ./configure --enable-fips140-mode

Option is really set:

  [...]
  FIPS140 mode:   yes

Building, installling:

% make
% make install

1)

Verifying that gnutls-cli is the new one from /usr/local/ :

% which gnutls-cli
/usr/local/bin/gnutls-cli

Verifying the lib link:

ldd /usr/local/bin/gnutls-cli
 libgnutls.so.28 => /usr/lib/x86_64-linux-gnu/libgnutls.so.28
(0x00007f6c2f0e9000)

Please note that it is linked against the host's library.

Verifying the FIPS option will then appropriately report an error:

% gnutls-cli --fips140-mode

gnutls-cli: relocation error: gnutls-cli: symbol
gnutls_fips140_mode_enabled, version GNUTLS_3_1_0 not defined in file
libgnutls.so.28 with link time reference

Why does it link to the lib in /usr/lib/x86_64-linux-gnu/ instead of
using its own in /usr/local ?



2) Re-do the host's link to point to the new lib:

libgnutls.so.28 -> /usr/local/lib/libgnutls.so.28

% gnutls-cli --fips140-mode
library is NOT in FIPS140-2 mode

OK.  Exporting the env. var.:

% export GNUTLS_FORCE_FIPS_MODE=1

% gnutls-cli --fips140-mode
Error in GnuTLS initialization: Error while performing self checks.
library is in FIPS140-2 mode

Now it goes that far.  When enabling some debug output, we see that it
fails trying to access soem HMAC files.  These files are nowhere to be
found, either on the host, or in the fresh sources.

% gnutls-cli --fips140-mode

gnutls[2]: Loading: /usr/lib/x86_64-linux-gnu/libgnutls.so.28

gnutls[2]: Could not open
/usr/lib/x86_64-linux-gnu/.libgnutls.so.28.hmac for MAC testing: Error
while reading file.

gnutls[2]: Could not open
/usr/lib/x86_64-linux-gnu/fipscheck/libgnutls.so.28.hmac for MAC
testing: Error while reading file.


How to get GnuTLS compiled in the right manner to have a FIPS build ?

Thanks.



More information about the Gnutls-help mailing list