blob: 8cc6d28e1b107dc9c172a62d00e5c79dcbafc93e [file] [log] [blame]
SANDBOX httpd/branches/fips-dev explained:
This sandbox is for development around the FIPS 140-2 standard as implemented
by Ben Laurie and team of OpenSSL with the 0.9.7 verisons. The effort for
OpenSSL FIPS certification is coordinated by the Open Source Software
Institute. OpenSSL 0.9.7 is in the process of certification testing. See:
http://oss-institute.org/index.php?option=content&task=view&id=109
The crypto layer, itself, is the object of certification. In this case,
that is encompased in libcrypto.so. But libcrypto.so needs to be told to
enforce FIPS 140 policy, and mod_ssl needs to be adjusted to the FIPS 140
subset of permitted cryptography.
This effort is initially coordinated by Ben Laurie and Will Rowe; of course
all voulenteers and feedback are welcome!
It is something of the cart before the horse; meant to demonstrate both the
need for the NIST to certify OpenSSL, and the proper application of a fips
build of the OpenSSL library.
Note this branch includes apr and apr-util, while the authors figure out what
to do about apr MD5 and other fips issues are resolved. That work will be
submitted to the apr project, once the least distruptive change is
ascertained.
Note also that even with FIPS mode is off, operations using MD5 are
not possible.
Stuff FIPS requires
-------------------
Random number seeding: strangeness about the FIPS PRNG means that at
least one random source must supply at least 24 bytes of randomness in
a single chunk (note that this could be relaxed at the cost of more
code).
Certificates: must be signed using SHA-1.
Passwords: must be SHA-1 hashed.
httpd.conf:
SSLProtocol +TLSv1
SSLCipherSuite DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-SHA:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA:DES-CBC3-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:AES128-SHAEXP1024-DHE-DSS-DES-CBC-SHA:EXP1024-DES-CBC-SHA:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DES-CBC-SHA:EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:EXP-DES-CBC-SHA
The cipher suites can, of course, be a subset of the above.
General: All crypto should be done via OpenSSL (or another FIPS
certified package). Any external packages using crypto must enable
FIPS mode in OpenSSL. The OpenSSL FIPS security policy must be
followed.
Note that because Apache sets FIPS mode in OpenSSL, other libraries or
modules using OpenSSL that coexist may exhibit unexpected behaviour
because of the restrictions FIPS mode imposes.
In particular, only DES, AES, RSA, DSA/DSS and SHA-1 can be
used. There is a special exception that permits the use of MD5 within
TLS, but not elsewhere.