Regarding FIPS 140-2 support on embedded target
Tomas Mraz
tomas at openssl.org
Wed Nov 15 16:09:26 UTC 2023
The most probable reason is that the /etc/ssl/openssl.cnf file is
actually not being loaded because the libcrypto.so expects it to be at
a different location.
I would recommend using strace to find out what config file is
libcrypto trying to load.
Tomas Mraz, OpenSSL
On Wed, 2023-11-15 at 19:03 +0530, manjunatha srinivasan wrote:
> Hi
> I want to bring up the FIPS 140-2 support for my embedded target for
> openssl. The current version of openssl is being used is
> OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022) and
> the kernel is LInux 5.15.32 (arm64). Aim is to execute a sample
> application, nginx, openssh to execute as FIPS 140-2 compliance.
> For this I had set up the configuration environment for
> the FIPS provider and tried to execute a sample application
> programmatically to load fips provider (fips.so) which all failed.
> I have attached the following file as reference.
> openssl.cnf
> fipsmodule.cnf
> fp.cpp (fips-test executable)
>
> With cross compilation of openssl from Yocto with fips support
> (enable-fips as part of configuration), fips provider 'fips.so'
> shared library
> is produced.
> From build outcome used following files are placed in embedded
> target:
> binary file: /usr/bin/openssl
> libraries: /usr/lib/libcrypto.so.3
> /usr/lib/libssl.so.3
> /usr/lib/ossl-modules/fips.so
> configuration files:
> /etc/ssl/openssl.cnf
> /usr/lib/ssl-3/fipsmodule.cnf
> The file /etc/ssl/openssl.cnf is configured for fips/base providers
> and includes the path for fipsmodule.cnf.
> Below are changes in file /etc/ssl/openssl.cnf.
> -------------
> --- /home/root/backup-openssl/openssl.cnf 2023-11-14
> 16:28:59.117481173 +0000
> +++ /etc/ssl/openssl.cnf 2023-11-14 17:19:55.627228042 +0000
> @@ -8,6 +8,7 @@
> # Note that you can include other files from the main configuration
> # file using the .include directive.
> #.include filename
> +.include /usr/lib/ssl-3/fipsmodule.cnf
>
> # This definition stops the following lines choking if HOME isn't
> # defined.
> @@ -64,8 +65,11 @@
>
> # List of providers to load
> [provider_sect]
> -default = default_sect
> -legacy = legacy_sect
> +fips = fips_sect
> +base = base_sect
> +
> +#default = default_sect
> +#legacy = legacy_sect
> # The fips section name should match the section name inside the
> # included fipsmodule.cnf.
> # fips = fips_sect
> @@ -78,13 +82,16 @@
> # becomes unavailable in openssl. As a consequence applications
> depending on
> # OpenSSL may not work correctly which could lead to significant
> system
> # problems including inability to remotely access the system.
> -[default_sect]
> - activate = 1
> +#[default_sect]
> +# activate = 1
>
> -[legacy_sect]
> -activate = 1
> +#[legacy_sect]
> +#activate = 1
>
>
> +[base_sect]
> +activate = 1
> +
> ####################################################################
> [ ca ]
> default_ca = CA_default # The default ca section
> --------------
>
> After the above changes executed below command which was successful
> for self test and updating digest of fips provider.
> openssl fipsinstall -out /usr/lib/ssl-3/fipsmodule.cnf -module
> /usr/lib/ossl-modules/fips.so
> HMAC : (Module_Integrity) : Pass
> SHA1 : (KAT_Digest) : Pass
> SHA2 : (KAT_Digest) : Pass
> SHA3 : (KAT_Digest) : Pass
> TDES : (KAT_Cipher) : Pass
> AES_GCM : (KAT_Cipher) : Pass
> AES_ECB_Decrypt : (KAT_Cipher) : Pass
> RSA : (KAT_Signature) : RNG : (Continuous_RNG_Test) : Pass
> Pass
> ECDSA : (PCT_Signature) : Pass
> ECDSA : (PCT_Signature) : Pass
> DSA : (PCT_Signature) : Pass
> TLS13_KDF_EXTRACT : (KAT_KDF) : Pass
> TLS13_KDF_EXPAND : (KAT_KDF) : Pass
> TLS12_PRF : (KAT_KDF) : Pass
> PBKDF2 : (KAT_KDF) : Pass
> SSHKDF : (KAT_KDF) : Pass
> KBKDF : (KAT_KDF) : Pass
> HKDF : (KAT_KDF) : Pass
> SSKDF : (KAT_KDF) : Pass
> X963KDF : (KAT_KDF) : Pass
> X942KDF : (KAT_KDF) : Pass
> HASH : (DRBG) : Pass
> CTR : (DRBG) : Pass
> HMAC : (DRBG) : Pass
> DH : (KAT_KA) : Pass
> ECDH : (KAT_KA) : Pass
> RSA_Encrypt : (KAT_AsymmetricCipher) : Pass
> RSA_Decrypt : (KAT_AsymmetricCipher) : Pass
> RSA_Decrypt : (KAT_AsymmetricCipher) : Pass
> INSTALL PASSED
> ---
> Further testing of the below command shows MD5 is still supported,
> where the expectation digest is unsupported.
> openssl md5 /dev/null
> MD5(/dev/null)= d41d8cd98f00b204e9800998ecf8427e
>
> Also executed sample application fips-test which fails to load fips
> provider. Below is the output.
> ---
> /tmp/fips-test
> Failed to load FIPS provider
> ----
>
> Please let me know if I am doing anything wrong in my settings. Also
> let me know how to test nginx, openssh with fips provider.
> I appreciate your help. Thanks in advance.
>
> Regards
> Manjunatha Srinivasan N
--
Tomáš Mráz, OpenSSL
More information about the openssl-users
mailing list