| |
| David Acker has patched socat to add OpenSSL FIPS. |
| See http://oss-institute.org/fips-faq.html and |
| http://linuxdevices.com/news/NS4742716157.html for more information. |
| |
| The patch that is integrated into socat 1.5 does the following: |
| |
| Add support for LDFLAGS in Makefile. LDFLAGS can be specified on the |
| configure command line and then will be carried over into the make. |
| |
| Add fips support. Requires OpenSSL 0.9.7j-fips-dev from |
| http://www.openssl.org/source/OpenSSL-fips-1.0.tar.gz built with fips |
| support turned on. use ./Configure fips [os-arc], for example |
| ./Configure fips linux-pentium |
| |
| The LDFLAGS is needed to point a build against a library |
| located in a non-standard location. For example, if you download and |
| build openssl manually, it gets installed in /usr/local/ssl by default. |
| |
| The FIPS support patches involve adding an option to enable/disable fips |
| in configure (enabled by default), checking the system for FIPS support |
| during configure, and then adding a fips option to socats openssl address |
| to turn on fips mode. The openssl binary uses an environment variable |
| instead of a command line flag. |
| FIPS mode requires both a compile time flag of OPENSSL_FIPS and a |
| runtime call of FIPS_mode_set(1). Fips mode requires building with the |
| fipsld script provided by OpenSSL. FIPS tracks the pid of the process that |
| initializes things so after a fork, the child must reinitialize. When the |
| ssl code detects a forks occur and if FIPS mode was enabled, it reinitializes |
| FIPS by disabling and then enabling it again. |
| |
| To produce Davids enviroment, do the following: |
| To build openssl |
| download OpenSSL 0.9.7j-fips-dev from |
| http://www.openssl.org/source/OpenSSL-fips-1.0.tar.gz |
| tar xzf OpenSSL-fips-1.0.tar.gz |
| cd openssl |
| ./Configure fips linux-pentium |
| make |
| make test |
| (become root) |
| make install |
| This leaves an install in /usr/local/ssl |
| |
| To build socat: |
| setup directory with socat 1.5 or higher. |
| cd socat-1.5.0.0 |
| ./configure CPPFLAGS=-I/usr/local/ssl/include/ LDFLAGS=-L/usr/local/ssl/lib/ FIPSLD=/usr/local/ssl/bin/fipsld |
| make |
| (become root) |
| make install |
| |
| To run tests we make sure the new openssl is used: |
| |
| export PATH=/usr/local/ssl/bin:$PATH |
| ./test.sh fips |
| |
| There are two tests in test.sh that depend on fips: |
| |
| OPENSSL_FIPS_BOTHAUTH performs a SSL client to server connection with |
| certificate based authentication in both directions. If it works FIPS mode |
| seems to be ok. |
| |
| OPENSSL_FIPS_SECURITY generates a certificaet/key pair without fips support. It |
| then tries a SSL connection in "normal" mode which is expected to work. In the |
| second phase it uses fips mode with these credentials which is expected to |
| fail. If so, the test succeeded. |