Crypto (OpenSSL 3.0) module issue when building Erlang 26.1.2 on Ubuntu 22.04 LTS using KERL

Hi guys,

I’m trying to build Erlang 26.1.2 on Ubuntu 22.04 LTS which only provides OpenSSL 3.0 (OpenSSL 1.x was deprecated):

[...]
Checking out Erlang/OTP git repository from https://github.com/erlang/otp.git...
Building (git) Erlang/OTP OTP-26.1.2; please wait...
Initializing (build) log file at /home/zab/.kerl/builds/26.1.2/otp_build_git.log.
APPLICATIONS DISABLED (See: /home/zab/.kerl/builds/26.1.2/otp_build_git.log)
 * debugger       : User gave --without-debugger option
 * wx             : User gave --without-wx option
 * debugger       : User gave --without-debugger option
 * observer       : User gave --without-observer option
 * et             : User gave --without-et option

APPLICATIONS INFORMATION (See: /home/zab/.kerl/builds/26.1.2/otp_build_git.log)
 * crypto         : Static linking with OpenSSL 3.0 *MAY* require special configuring of the cryptolib.

DOCUMENTATION INFORMATION (See: /home/zab/.kerl/builds/26.1.2/otp_build_git.log)
 * documentation  :
 *                  xsltproc is missing.
 *                  fop is missing.
 *                  xmllint is missing.
 *                  The documentation cannot be built.

Erlang/OTP '26.1.2' (from git) has been successfully built.
Installing Erlang/OTP git (26.1.2) in /opt/erlang/26.1.2...
Initializing (install) log file at /home/zab/.kerl/builds/26.1.2/otp_install_git.log.

The install process finished by the crypto module isn’t working properly:

Erlang/OTP 26 [erts-14.1.1] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit:ns]
Eshell V14.1.1 (press Ctrl+G to abort, type help(). for help)
1> crypto:version().
=ERROR REPORT==== 12-Nov-2023::14:17:41.655630 ===
Unable to load crypto library. Failed with error:
"load, Library load-call unsuccessful (227)."

What am I supposed to do for this warning?

 * crypto         : Static linking with OpenSSL 3.0 *MAY* require special configuring of the cryptolib.

Which flag should I use in my .kerlrc to properly configure and build Erlang with OpenSSL 3.0?
I tried with and without --disable-dynamic-ssl-lib but it didn’t (same issue described above).

Help appreciated.

1 Like

Unable to load crypto library. Failed with error:
“load, Library load-call unsuccessful (227).”

This means a nif load failure in lib/crypto/c_src/crypto.c line 227:

#ifdef FIPS_SUPPORT
     if (!(... = OSSL_PROVIDER_load(NULL, "fips"))) return __LINE__;
#endif

It seems configure option --enable-fips has been passed when building Erlang/OTP but OpenSSL fails to load the fips provider, probably because it’s not built or configured with fips support.

2 Likes

@sverker thanks a lot. Problem solved by commenting out FIPS.

1 Like