nginx无法yum安装openssl时如何开启https



无法yum安装的时候,只能去手动下载安装了

目前版本最新的SSL地址为

http://www.openssl.org/source/openssl-1.0.2j.tar.gz

1、将下载的压缩包放在根目录,

2、在文件夹下解压缩,命令:tar -xzf openssl-1.0.2j.tar.gz,得到openssl-1.0.2j文件夹

3、进入解压的目录:cd openssl-1.0.2j

4、设定Openssl 安装,( –prefix )参数为欲安装之目录,也就是安装后的档案会出现在该目录下:

执行命令: ./config –prefix=/usr/local/openssl

5、执行命令./config -t

6.执行make,编译Openssl

7、安装 Openssl:make install

8、执行以下命令

1
  [root@localhost /]# cd /usr/local
2  [root@localhost local]# ldd /usr/local/openssl/bin/openssl

会出现类似如下信息:

9、查看路径

...]# which openssl

查看版本

...]# openssl version

卸载旧版本 OpenSSL的方法

apt-get purge openssl
rm -rf /etc/ssl #删除配置文件

安装openssl之后

进入到nginx目录下如果已经make过执行

make clean

因为无法yum安装 所以配置nginx时需要修改参数

./configure –prefix=/usr/local/nginx –with-openssl=/usr/local/openssl

(yum方式:./configure --prefix=/usr/local/nginx  --with-http_ssl_module)

然后执行make

若出现以下错误

# make

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

从报错信息上看,可以看到编译是openssl相关的组件报错了,可能是“–with-

openssl=/usr/local/openssl” 这个参数导致。这里提到了

“/usr/local/openssl/.openssl/include/openssl/ssl.h”这个文件,我尝试去找这个文件,发现文

件找不到:(/usr/local/openssl是我自己安装的openssl)

# ll /usr/local/openssl/.openssl/

ls: cannot access /usr/local/openssl/.openssl/: No such file or directory

可以发现.openssl这个目录本身是不存在的,应该是nginx 1.17.3版本编译的时候默认去找

了“/usr/local/openssl/.openssl/”这个目录,所以导致了make失败。

解决

发现了问题可能的原因后,尝试修改一下nginx1.17.3添加openssl模块时候的相关编译信

息(auto/lib/openssl/conf):

# vi auto/lib/openssl/conf
            CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
            CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
            CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
            CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"

//在该文件中,看到openssl的core相关目录,都被添加上了.openssl这级目录,尝试修改目录信息,去除.openssl这级

目录:

# more auto/lib/open/ssl
            CORE_INCS="$CORE_INCS $OPENSSL/include"
            CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
            CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
            CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"

修改完auto/lib/openssl/conf的信息之后,重新编译安装nginx1.17.3,即可正常编译安装

成功。

# make clean
# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-openssl=/usr/local/openssl --with-

http_stub_status_module –with-http_dav_module –with-http_realip_module –with-http_gzip_static_module –with-

http_v2_module

# make && make install

原始页面布局(第 3 页)