Need Help on OpenSSl 3.0.x and FIPS enablement

Dr Paul Dale pauli at
Thu Mar 2 08:45:54 UTC 2023

You **must** run the fipsinstall program on every device that you want 
to claim as FIPS validated.  This means that it must be installed & 
executed on each and every platform.  There is no room for maneuver 
here.  Obey the security policy to the letter or not be FIPS.  Deeply 
embedded platforms do **not** get an exception and never have.

If you want to discuss things further, you should engage with your FIPS lab.


On 2/3/2023 7:34 pm, Prasad, PCRaghavendra wrote:
> Hi Paul,
> Thanks for the information.
> We will go through the documents once again for more understanding.
> One basic doubt is when we deploy/build OpenSSL on our build machine 
> with FIPS enabled (enable_fips) which will generate fips.dll/so and 
> fipsmodule.cnf.
> We then change the openssl.cnf to access the fipsmodule.cnf and enable 
> fips on the build machine and execute the application or do it 
> programmatically to load the fips module and run the application.
> As for running on different machines to the build one, the security 
> policy [] 
> <;!!LpKI!m6MpgYacWH24YdMndJMC-_RMlzLmjAHdaRHojogd7dgY9kbo0NUvc9yknt1Y_6gxdXxScH71o77lFX7ijN_GHg$> 
> is clear that the checksum configuration cannot be copied between 
> machines:
>   * But we carry and in our build artifacts
>     till now and activate the fips at run time in our application
>     (OpenSSL 1.0.2 FIPS)  on different machines (customer machines) as
>     we are embedded software, so how it can be achieved using OpenSSL
>     3.0.x + FIPS versions? how can we achieve FIPS on different
>     machines but built on one machine? Is it possible
> Can you please throw some input on this?
> Thanks,
> Ragahvendra
> *From:* openssl-users <openssl-users-bounces at> *On Behalf 
> Of *Dr Paul Dale
> *Sent:* Wednesday, March 1, 2023 3:34 AM
> *To:* openssl-users at
> *Subject:* Re: Need Help on OpenSSl 3.0.x and FIPS enablement
> Have you read the relevant documentation? Specifically, the FIPS 
> module guide [] 
> <;!!LpKI!m6MpgYacWH24YdMndJMC-_RMlzLmjAHdaRHojogd7dgY9kbo0NUvc9yknt1Y_6gxdXxScH71o77lFX4qN9JYmA$>, 
> the FIPS provider [] 
> <;!!LpKI!m6MpgYacWH24YdMndJMC-_RMlzLmjAHdaRHojogd7dgY9kbo0NUvc9yknt1Y_6gxdXxScH71o77lFX7hLE-Nwg$> 
> and the migration guide [] 
> <;!!LpKI!m6MpgYacWH24YdMndJMC-_RMlzLmjAHdaRHojogd7dgY9kbo0NUvc9yknt1Y_6gxdXxScH71o77lFX4Csj3-Tw$>?  
> These answer most of your questions and can be easy to miss.
> With the FIPS provider in OpenSSL 3.0 you will not be able to escape 
> having some configuration in a file.  The FIPS provider does an 
> integrity check on start up and the correct checksum comes from 
> configuration.
> As for running on different machines to the build one, the security 
> policy [] 
> <;!!LpKI!m6MpgYacWH24YdMndJMC-_RMlzLmjAHdaRHojogd7dgY9kbo0NUvc9yknt1Y_6gxdXxScH71o77lFX7ijN_GHg$> 
> is clear that the checksum configuration cannot be copied between 
> machines:
>     /Note: The Module shall have the self-tests run, and the Module
>     config file output generated on each platform where it is intended
>     to be used. The Module config file output data shall not be copied
>     from one machine to another./
> I'll note that following the build and installation instructions from 
> in the security policy [] 
> <;!!LpKI!m6MpgYacWH24YdMndJMC-_RMlzLmjAHdaRHojogd7dgY9kbo0NUvc9yknt1Y_6gxdXxScH71o77lFX7ijN_GHg$> 
> is necessary for a FIPS compliant provider.
> Pauli
> On 1/3/23 04:52, Prasad, PCRaghavendra via openssl-users wrote:
>     Hi Team,
>     Our team has started migrating from OpenSSL 1.0.2 to OpenSSL 3.0.x
>     version.
>     We are doing POC for the same on windows and Linux.
>     We have a tight schedule to finish the migration by April 1^st
>     week as we need to fix one critical BD issue and support TLS 1.3
>     feature as well.
>     The team and I are going through multiple docs of OpenSSL 3.x and
>     trying to figure out how to configure fips once we build the OpenSSL.
>     Few things:
>      1. In openssl 3.0.x Fips module is installed/integrated by
>         default (enable-fips) during the build step
>      2. Fipsmodule.cnf is present in the default location
>         (c:\usr\local\ssl\)
>      3. After reading multiple ways on how to enable fips, one way is
>         the config way where we need to change few params in openssl.cnf
>      4. By changing that and we did the test using openssl.exe ( sha1
>         passed and md5 failed) all good
>      5. Now the challenge is we need to set the fips enablement
>         programmatically which we were going through multiple docs
>         (openssl and some forums)
>      6. Till now we used OpenSSL 1.0.2 where the fipsmodule is
>         embedded in libcrypto and we need to set it at the beginning
>         of the application (fips_mode_set()) and everything else is
>         taken care by default.
>      7. Now with OpenSSL 3.0.x how to set that fips mode for the
>         entire application is not very clear
>      8. Very where they are talking about the config files, our
>         application is a standalone application that bundles all the
>         required libs(crypto/SSL) and runs on its own, it will not
>         refer to any system config/lib files
>      9. So our doubt is if we build on the application on build
>         machine containing OpenSSL 3.0.x and create an artifact. We
>         need to run on different machines.
>     10. In OpenSSL 3.0.x is there any hard dependency on the .cnf
>         files should we carry them in our artifact and if so should we
>         install them in the default path like ( C:\usr or /us/local)
>         which we were not doing till now?
>     Any input on this will be really helpful
>     Thanks,
>     Raghavendra
>     Internal Use - Confidential
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the openssl-users mailing list