openssl 3.0.0 legacy provider won't lload via config file

Tomas Mraz tomas at openssl.org
Mon Sep 20 07:18:39 UTC 2021


This is really weird. The OPENSSLDIR as in the Makefile should be
applied during the build. If you do strings <path-to-libcrypto.so> does
it show the ssl-3? Is it possible that you have some other build of
openssl-3.0 with incorrect (default) OPENSSLDIR lying on the system
somewhere?

Please open an GitHub issue so we can investigate this further.

Tomas Mraz


On Fri, 2021-09-17 at 11:55 -0700, Kory Hamzeh wrote:
> 
> 
> > On Sep 14, 2021, at 12:03 AM, Tomas Mraz <tomas at openssl.org> wrote:
> > 
> > On Mon, 2021-09-13 at 16:13 -0700, Kory Hamzeh wrote:
> > > I have cross-compiled OpenSSL 3.0.0 for the ARMv7. So far,
> > > everything
> > > seems to be working fine, except for the fact that I cannot get
> > > OpenSSL to load the legacy module when I configure
> > > /ssl/openssl.cnf
> > > as such. I can, however, load the module explicitly at run time.
> > > 
> > ...
> > > 
> > > The EVP_DecryptInit_ex() fails if I compile without -
> > > DLOAD_PROVIDER.
> > > The other flag, CRYPTO_INIT does not make any difference. What is
> > > puzzling is that I can build OpenSSL natively on an x86_64
> > > machine
> > > and using the same openssl.cnf file, the code above works and the
> > > legacy module loads without the code to explicitly load it.
> > > 
> > > Any thoughts on what I may have done wrong or how to track this
> > > down?
> > 
> > Could it be that your cross-compiled build expects the
> > configuration
> > file to be somewhere else? Have you tried to strace the application
> > to
> > see where it searches for the openssl.cnf?
> 
> OK, I ran strace and notice what might be a bug in OpenSSL 3.0.0.
> 
> Let me first start by saying that we run a mixture of OpenSSL 1.0.1g
> and OpenSSL 3.0.0. We are planning to upgrade all of the apps to
> 3.0.0, but some of the vendors have not upgraded yet.
> 
> The 1.0.1g config directory is /ssl.
> 
> I configured OpenSSL 3.0.0 to use /ssl-3 for its config files as
> follows:
> 
> ./Configure linux-armv4 -march=armv7-a shared enable-fips --cross-
> compile-prefix=arm-none-linux-gnueabi- --prefix=/ --openssldir=/ssl-3
> 
> The Makefile confirms this:
> 
> OPENSSLDIR=/ssl-3
> 
> I make and make install like this:
> 
>  make DESTDIR=$INSTALL_DIR install_ssldirs install_sw install_fips
> 
> where $INSTALL_DIR is where we build the rootfs structure. I can see
> that it created $INSTALL_DIR/ssl-3.
> 
> But an stace of the apps show:
> 
> open("/ssl/openssl.cnf", O_RDONLY|O_LARGEFILE) = 3
> 
> If I:
> 
> export OPENSSL_CONF="/ssl-3/openssl.cnf” 
> 
> before I run my apps, everything works. But this is disconcerting.
> 
> Any thoughts or feedback?
> 
> Thanks,
> Kory
> 

-- 
Tomáš Mráz
No matter how far down the wrong road you've gone, turn back.
                                              Turkish proverb
[You'll know whether the road is wrong if you carefully listen to your
conscience.]




More information about the openssl-users mailing list