Red Hat Bugzilla – Bug 869827
FIPS mode: Subversion fails due to MD5 attempt
Last modified: 2012-10-25 14:59:51 EDT
Description of problem:
When I try to use Subversion against an https URL, and my system is in FIPS mode (booted with fips=1 on kernel command line), Subversion exits with an error:
DBG: md_enable: algorithm 1 not available
svn: OPTIONS of 'https://my-server/svn/bla/bla': SSL handshake failed: SSL error: Encryption has failed. (https://my-server)
Exitcode is 1.
When I put '0' in /etc/gcrypt/fips_enabled, Subversion works fine.
I expect you could reproduce without fips=1 by putting '1' in /etc/gcrypt/fips_enabled.
I've confirmed using gdb that, on my system, Subversion uses neon to talk https, and neon in turn uses libgcrypt, and "algorithm 1" is MD5.
It seems that without linking in gnutls-extra, which is GPLed not LGPLed, you can't do much with TLS < 1.2 using libgcrypt - this is according to
http://lists.gnu.org/archive/html/gnutls-devel/2008-09/msg00063.html. I assume that licensing conflicts are the reason that gnutls-extra appears not to be in play on my system.
It may be that I could rebuild neon against OpenSSL instead of libgcrypt, but I'm afraid of losing the facility with PKCS#11 that libgcrypt seems to have, because I'm using a smartcard to authenticate to the Subversion server.
Because I don't know the right course of action, I can't provide a patch; but I do feel this is an issue that hinders RHEL from its goals of compliance and functionality, and so merits reporting as a bug.
The /etc/gcrypt/fips_enabled should not be present at all on your system. The recommended way to enable FIPS mode on your system is with fips=1 on the kernel command line. Does the problem really appear even when /etc/gcrypt/fips_enabled is not present?
No. svn no longer exits with an error when I remove /etc/gcrypt/fips_enabled. But I do get a message in /var/log/messages: "svn: Libgcrypt warning: MD5 used - FIPS mode inactivated." That doesn't look compliant. Is it actually OK? I wrote /etc/gcrypt/fips_enabled because http://www.gnupg.org/documentation/manuals/gcrypt/Enabling-FIPS-mode.html says that turns on "Enforced FIPS mode," which it sounded like I needed.
Yes, the message is not particularly correct as usage of MD5 in TLS is and must be allowed otherwise TLS versions < 1.2 which have only one PRF that uses SHA1 and MD5 together would not work at all. Also note that the inactivated FIPS mode of libgcrypt does not mean that the operational self tests such as the pairwise tests of generated keys or RNG continuous test will not be invoked anymore. They will be still invoked.
OK, thanks for your explanation. I'll point at it from my compliance documentation. Unless you want to use this bug to track changes to the message, it seems like NOTABUG to me.