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
