nginx源码编译http_ssl_module安装失败

问题描述 投票:0回答:2

我正在尝试使用 certbot 设置我的 https,所以我需要重新编译 ngx 添加 '--with-http_ssl_module',这是完整的步骤:

 - sudo make clean 
 - sudo  ./auto/configure --prefix=/var/www/html --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --with-pcre --with-http_ssl_module  --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --modules-path=/etc/nginx/modules
 - check Makefile , I can see 'http_ssl_module' added in objs/Makefile  
 - sudo make 
 - sudo make install

完成上述所有步骤后(没有观察到错误) 我检查了 'ngx_modules.o'(仍然缺少 ssl 模块) 并运行下面的命令

sudo certbot --nginx -d feedme.pub 
Saving debug log to /var/log/letsencrypt/letsencrypt.log 
The nginx plugin is not working; there may be problems with your existing configuration. 
The error was: PluginError('Nginx build is missing SSL module (--with-http_ssl_module).') 

另外,我检查了我的 ssl lib-libssl 是否已安装:

ldconfig -p | grep libssl
    libssl3.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl3.so
    libssl.so.1.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl.so.1.1
    libssl.so.1.0.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0
    libssl.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl.so

任何人都可以帮助回答为什么我无法在中构建'--with-http_ssl_module'?

ubuntu nginx ssl certbot
2个回答
0
投票

解决方案如下:

  1. 在./configuration中添加了stepps
    --with-openssl=/usr/include/openssl'
    选项,因为'--with-http_ssl_module'需要使用openssl
  2. 构建时我遇到了另一个错误:
make -f objs/Makefile
make[1]: Entering directory `/root/soft/nginx-1.17.3'
cd /usr/local/openssl \
&& if [ -f Makefile ]; then make clean; fi \
&& ./config --prefix=/usr/local/openssl/.openssl no-shared no-threads  \
&& make \
&& make install_sw LIBDIR=lib
/bin/sh: line 2: ./config: No such file or directory
make[1]: *** [/usr/local/openssl/.openssl/include/openssl/ssl.h] Error 127  make[1]: Leaving directory `

我所做的是手动修改

./auto/lib/openssl/conf

将下面的路径更改为我的ubuntu上的实际位置

    CORE_INCS="$CORE_INCS <your openssl lib's path>/include"
    CORE_DEPS="$CORE_DEPS <your openssl lib's path>/include/openssl/ssl.h"
    CORE_LIBS="$CORE_LIBS <your local libssl.a path>/lib/libssl.a"
    CORE_LIBS="$CORE_LIBS <your local libcrypto.a path>/lib/libcrypto.a"

然后运行 make ,一切正常


0
投票

现有的答案违背了

--with-openssl
的意图,它应该与openssl源代码树一起使用,并且它假设存在静态库
libssl.a
libcrypto.a
,这不能保证在每个发行版上.

正确的方法是解压 openssl 源 tarball 并再次编译它。

© www.soinside.com 2019 - 2024. All rights reserved.