从源代码构建Nginx和OpenSSL

vcirk6k6  于 2023-06-21  发布在  Nginx
关注(0)|答案(3)|浏览(210)

我正在尝试配置nginx以使用http2的ALPN。我需要更新openssl才能做到这一点。
目前独立的openssl已经更新了,但是nginx由于某些原因没有使用它。

# /etc/nginx $ nginx -V

nginx version: nginx/1.10.3
built with OpenSSL 1.0.1f 6 Jan 2014
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -fPIC -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module --add-dynamic-module=/build/nginx-wa6Kgn/nginx-1.10.3/debian/modules/nginx-auth-pam --add-dynamic-module=/build/nginx-wa6Kgn/nginx-1.10.3/debian/modules/nginx-dav-ext-module --add-dynamic-module=/build/nginx-wa6Kgn/nginx-1.10.3/debian/modules/nginx-echo --add-dynamic-module=/build/nginx-wa6Kgn/nginx-1.10.3/debian/modules/nginx-upstream-fair --add-dynamic-module=/build/nginx-wa6Kgn/nginx-1.10.3/debian/modules/ngx_http_substitutions_filter_module

# /etc/nginx $ openssl version -a

OpenSSL 1.1.1-dev  xx XXX xxxx
built on: reproducible build, date unspecified
platform: linux-x86_64
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/lib/\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\""  -Wa,--noexecstack
OPENSSLDIR: "/usr/local/lib/"
ENGINESDIR: "/usr/local/lib/engines-1.1"

自然理念:要重建nginx,配置并使运行没有错误,但nginx永远不会改变它的版本。

./configure --with-http_ssl_module --with-openssl=~/openssl/ --with-http_v2_module
make

https://gist.github.com/SilentImp/be9c088298a94e0dba6cbaf3c51b9ad0
但一切都没变

~/nginx-1.11.13 $ nginx -V
nginx version: nginx/1.10.3
built with OpenSSL 1.0.1f 6 Jan 2014
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -fPIC -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module --add-dynamic-module=/build/nginx-wa6Kgn/nginx-1.10.3/debian/modules/nginx-auth-pam --add-dynamic-module=/build/nginx-wa6Kgn/nginx-1.10.3/debian/modules/nginx-dav-ext-module --add-dynamic-module=/build/nginx-wa6Kgn/nginx-1.10.3/debian/modules/nginx-echo --add-dynamic-module=/build/nginx-wa6Kgn/nginx-1.10.3/debian/modules/nginx-upstream-fair --add-dynamic-module=/build/nginx-wa6Kgn/nginx-1.10.3/debian/modules/ngx_http_substitutions_filter_module

会出什么差错呢?有没有办法在不重建nginx的情况下更改nginx的openssl版本?

pprl5pva

pprl5pva1#

是否要使用另一个存储库,该存储库具有内置ALPN支持的nginx
https://launchpad.net/~fxr/+archive/ubuntu/nginx-alpn
如果这不是一个选项,您应该仔细检查您使用的nginx二进制文件、您构建的二进制文件以及您在--with-openssl=~/openssl/上使用的openssl源文件的目录的路径

u3r8eeie

u3r8eeie2#

始终检查nginx的路径

$ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.11.13
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) 
built with OpenSSL 1.1.1-dev  xx XXX xxxx
TLS SNI support enabled
configure arguments: --with-http_ssl_module --with-openssl=~/openssl/ --with-http_v2_module

$ which nginx
/usr/sbin/nginx
rmbxnbpk

rmbxnbpk3#

当我将编译好的Nginx+OpenSSL安装到用户环境(在Ubuntu 23.04上)时,我经常遇到这种情况。然后编译一个默认位置安装稍后在我的根帐户旁边。所以我在同一个VPS上得到了2个Nginx/OpenSSL组合。If you want to make 2 installations, do this as a user.然后您可以重新安装openssl或在您的root帐户上编译它。
然后我运行下面的两个导出命令,都是!* (它仍然可以错误只有1).*
然后,安装版本和库版本将从您设置的位置运行。这适用于Nginx和OpenSSL。

# -下载OpenSSL源
git clone https://github.com/openssl/openssl/releases/download/openssl-3.1.1/openssl-3.1.1.tar.gz
cd openssl-3.1.1
# -(NO-SUDO)以确保没有从默认位置加载任何内容,因为没有访问权限,否则会出错。配置、创建和安装OpenSSL:
./config --prefix=/home/benginx/openssl-3.1.1 --openssldir=/home/benginx/openssl-3.1.1 --libdir=/home/benginx/openssl-3.1.1 enable-buildtest-c++ enable-external-tests enable-crypto-mdebug enable-crypto-mdebug-backtrace enable-acvp-tests enable-trace enable-weak-ssl-ciphers enable-ec_nistp_64_gcc_128 enable-fips no-fips-securitychecks enable-ssl3 enable-ssl3-method enable-md2 enable-rc5 enable-ec enable-ecdh enable-ecdsa enable-zlib enable-zlib-dynamic enable-egd enable-ktls enable-sctp enable-threads
make -j6
make install -j6
# -更新系统路径:检查系统的环境变量PATH,确保它包含新编译的OpenSSL二进制文件所在的目录:
export PATH=/home/benginx/openssl-3.1.1/bin:$PATH
# -更新openssl库版本PATH:- 如果没有显示新库,请设置环境变量:
export LD_LIBRARY_PATH=/home/benginx/openssl-3.1.1/lib:$LD_LIBRARY_PATH

相关问题