Nginx build with OpenSSL 1.0.1

Hello, community,

I’m having trouble compiling nginx against OpenSSL 1.0.1. When I compile
OpenSSL manually, I have no problems, everything is fine, but when
trying to compile nginx with the --with-openssl option the compilation
fails with the following message:


make[4]: Leaving directory
/usr/src/redhat/SOURCES/openssl-1.0.1/crypto/cmac' if [ -n "" ]; then \ (cd ..; make libcrypto.so.1.0.0); \ fi make[3]: Leaving directory /usr/src/redhat/SOURCES/openssl-1.0.1/crypto’
make[2]: Leaving directory `/usr/src/redhat/SOURCES/openssl-1.0.1’
make[1]: ***
[/usr/src/redhat/SOURCES/openssl-1.0.1/.openssl/include/openssl/ssl.h]
Error 2

When I try to do a “make all” from openssl-1.0.1/crypto without cleaning
the source tree, it fails with:


cc -I. -I… -I…/include -g -c -o mem_clr.o mem_clr.c
ar r …/libcrypto.a cryptlib.o mem.o mem_dbg.o cversion.o ex_data.o
cpt_err.o ebcdic.o uid.o o_time.o o_str.o o_dir.o o_fips.o o_init.o
fips_ers.o mem_clr.o
[ -z “” ] || ar r …/libcrypto.a fipscanister.o
…/libcrypto.a || echo Never mind.
/bin/sh: …/libcrypto.a: Permission denied
Never mind.
make: *** [subdirs] Error 1

Does anyone have an idea how to properly address this?

Posted at Nginx Forum:

Hello!

On Wed, Mar 14, 2012 at 03:35:09PM -0400, Samael wrote:

if [ -n “” ]; then
(cd …; make libcrypto.so.1.0.0);
fi
make[3]: Leaving directory
/usr/src/redhat/SOURCES/openssl-1.0.1/crypto' make[2]: Leaving directory/usr/src/redhat/SOURCES/openssl-1.0.1’
make[1]: ***
[/usr/src/redhat/SOURCES/openssl-1.0.1/.openssl/include/openssl/ssl.h]
Error 2

Is it vanilla OpenSSL or some redhat-patched sources? Vanilla one
builds just fine here under FreeBSD as well as CentOS 6.2.

If it indeed doesn’t work for you with vanilla OpenSSL, please try
to remove and re-extract sources from openssl-1.0.1.tar.gz tarball
to make sure there are no accedental changes.

If it still fails to build with nginx, please provide full
transcript of the nginx ./configure and build till failure, as
well as some more details information about your OS.

You may also try doing relevant build commands in openssl build
directory yourself, in particular make sure the following works ok
in the directory with openssl sources:

./config no-shared no-threads && make

If it fails, there is probably some issue completely unrelated to
nginx.

/bin/sh: …/libcrypto.a: Permission denied
Never mind.
make: *** [subdirs] Error 1

This is expected to fail, you have to run just “make” (or “make
top”, which is the same). The “all” target requires variables set
by top-level makefile.

Maxim D.

Hello, Maxim,

I’m compiling with vanilla nginx 1.1.16 with vanilla OpenSSL sources on
CentOS 5 i686. When I compile OpenSSL manually, it compiles (and works)
just fine.

Thanks for the “make all” clarification.

Posted at Nginx Forum:

Hello!

On Thu, Mar 15, 2012 at 05:13:30AM -0400, Samael wrote:

Hello, Maxim,

I’m compiling with vanilla nginx 1.1.16 with vanilla OpenSSL sources on
CentOS 5 i686. When I compile OpenSSL manually, it compiles (and works)
just fine.

Compile nginx 1.1.16 with OpenSSL 1.0.1 · GitHub

The “make -j2” you use seems to be the culprit, OpenSSL fails to
build with the “make -j2”. The following fails for me as well:

./config no-shared no-threads
make -j2

You may want to report this problem to OpenSSL folks.

Meanwile, workaround is obvious - don’t use “make -j2” till this
is fixed in OpenSSL.

Maxim D.

Oh, boy, was this stupid. Thank you very much, I’ve actually though
about this, but said “naah, probably won’t help”.

I will report it to the OpenSSL guys.

Posted at Nginx Forum: