zoukankan      html  css  js  c++  java
  • openssl 升级操作 -2

            首先我觉得没事就用绿盟扫漏洞的公司,就是闲的蛋疼,傻逼!不少服务器使用nginx,如果openssl 是静态编译的,直接将openssl 编译到nginx里面去了,这就意味着,单纯升级openssl 是没有任何效果的,nginx不会加载外部的openssl动态链接库的,必须将nginx重新编译才可以根治。所以我说那些没事就扫漏洞的公司是傻逼。。。

    一.判断nginx 是否是静态编译的

    [root@bogon ~]# /usr/local/nginx/sbin/nginx –V

    如果编译参数中含有 –with-openssl= path ,或者有 –with-http_ssl_module ,则表明nginx 是静态编译的,那么恭喜你在升级完openssl 之后还有重新编译nginx,指定openssl 的目录。

     

    二. 升级openssl(后续需要重新编译nginx,建议采用此方法升级openssl)

    [root@bogon soft]# cd /usr/src/openssl-1.1.0h/

    [root@bogon openssl-1.1.0h]# ./config --prefix=/usr/local/openssl-1.1.0h/ssl

    [root@bogon openssl-1.1.0h]# echo $?

    0

    [root@bogon openssl-1.1.0h]# make && make install

    [root@bogon openssl-1.1.0h]# echo $?

    0

    将新编译的openssl 替换老版本的

    [root@bogon openssl-1.1.0h]# mv /usr/bin/openssl /usr/bin/openssl.bak

    [root@bogon openssl-1.1.0h]# mv /usr/include/openssl /usr/include/openssl.bak

    [root@bogon openssl-1.1.0h]# ln -s /usr/local/openssl-1.1.0h/ssl/bin/openssl /usr/bin/openssl

    [root@bogon openssl-1.1.0h]# ln -s /usr/local/openssl-1.1.0h/ssl/include/openssl  /usr/include/openssl

     

    [root@bogon lib]# pwd

    /usr/local/openssl-1.1.0h/ssl/lib

    [root@bogon lib]# cp libssl.so.1.1 /usr/lib64/libssl.so.1.1

    [root@bogon lib]# cp libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

     

    [root@bogon lib]# ldconfig -v | grep ssl

    ldconfig: 无法对 /usr/lib64/nx/X11 进行 stat 操作: 没有那个文件或目录

    /usr/local/openssl-1.1.0h/ssl:

    libssl.so.1.1 -> libssl.so.1.1

        libssl3.so -> libssl3.so

        libssl.so.10 -> libssl.so.1.0.1e

    [root@bogon lib]# echo $?

    0

     

    [root@bogon lib]# openssl version -a

    OpenSSL 1.1.0h  27 Mar 2018

    built on: reproducible build, date unspecified

    platform: linux-x86_64

    options:  bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr)

    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/openssl-1.1.0h/ssl/ssl"" -DENGINESDIR=""/usr/local/openssl-1.1.0h/ssl/lib/engines-1.1""  -Wa,--noexecstackOPENSSLDIR: "/usr/local/openssl-1.1.0h/ssl/ssl"

    ENGINESDIR: "/usr/local/openssl-1.1.0h/ssl/lib/engines-1.1"

     

    三.重新编译nginx

    查看nginx 中openssl 的版本

    [root@bogon wwwroot]# /usr/local/nginx/sbin/nginx -V

    nginx version: nginx/1.14.0

    built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)

    built with OpenSSL 1.0.1e-fips 11 Feb 2013

    TLS SNI support enabled

    configure arguments: --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf

    /nginx.conf --modules-path=/usr/local/nginx/modules --error-log-path=/data/logs/nginx/error.log --http-log-path=/data/logs/nginx/access.log --user=www --group=www --http-client-body-temp-path=/usr/local/nginx/tmp/client_body --http-proxy-temp-path=/usr/local/nginx/tmp/proxy --http-fastcgi-temp-path=/usr/local/nginx/tmp/fastcgi --http-uwsgi-temp-path=/usr/local/nginx/tmp/uwsgi --http-scgi-temp-path=/usr/local/nginx/tmp/scgi --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-mail=dynamic --with-stream=dynamic

     

    重新编译nginx,并制定openssl 新版本的目录。重新编译nginx时,之前nginx 的配置参数要保证一样

    [root@bogon nginx-1.14.0]# pwd

    /usr/src/nginx-1.14.0

    [root@bogon nginx-1.14.0]# ./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --modules-path=/usr/local/nginx/modules --error-log-path=/data/logs/nginx/error.log --http-log-path=/data/logs/nginx/access.log --user=www --group=www --http-client-body-temp-path=/usr/local/nginx/tmp/client_body --http-proxy-temp-path=/usr/local/nginx/tmp/proxy --http-fastcgi-temp-path=/usr/local/nginx/tmp/fastcgi --http-uwsgi-temp-path=/usr/local/nginx/tmp/uwsgi --http-scgi-temp-path=/usr/local/nginx/tmp/scgi --with-http_ssl_module --with-openssl=/usr/local/openssl-1.1.0h/ssl --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-mail=dynamic --with-stream=dynamic

    [root@bogon nginx-1.14.0]# echo $?

    0

    [root@bogon nginx-1.14.0]# make

    make -f objs/Makefile

    make[1]: Entering directory `/usr/src/nginx-1.14.0'

    cd /usr/local/openssl-1.1.0h/ssl

     && if [ -f Makefile ]; then make clean; fi

    && ./config --prefix=/usr/local/openssl-1.1.0h/ssl/.openssl no-shared no

    -threads     && make

      && make install_sw LIBDIR=lib

    /bin/sh: line 2: ./config: 没有那个文件或目录

    make[1]: *** [/usr/local/openssl-1.1.0h/ssl/.openssl/include/openssl/ssl.h] 错误

     127make[1]: Leaving directory `/usr/src/nginx-1.14.0'

    make: *** [build] 错误 2

    [root@bogon nginx-1.14.0]# echo $?

    2

     make 之后报错,解决方法如下:

    修改nginx 源文件下的 /usr/src/nginx-1.14.0/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"
    CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
    修改成以下代码:
    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"
    CORE_LIBS="$CORE_LIBS $NGX_LIBDL"

     

    然后重新编译安装nginx

    [root@bogon nginx-1.14.0]# ./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --modules-path=/usr/local/nginx/modules --error-log-path=/data/logs/nginx/error.log --http-log-path=/data/logs/nginx/access.log --user=www --group=www --http-client-body-temp-path=/usr/local/nginx/tmp/client_body --http-proxy-temp-path=/usr/local/nginx/tmp/proxy --http-fastcgi-temp-path=/usr/local/nginx/tmp/fastcgi --http-uwsgi-temp-path=/usr/local/nginx/tmp/uwsgi --http-scgi-temp-path=/usr/local/nginx/tmp/scgi --with-http_ssl_module --with-openssl=/usr/local/openssl-1.1.0h/ssl --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-mail=dynamic --with-stream=dynamic

     

    [root@bogon nginx-1.14.0]# echo $?

    0

     

    [root@bogon nginx-1.14.0]# make

    [root@bogon nginx-1.14.0]# echo $?

    0

     

    注:此处千万不要 执行make install,否则会覆盖nginx 之前的配置文件

     

    拷贝nginx的二进制目录到nginx的安装目录下

    @ 可以先备份原来的二进制文件(/usr/local/sbin/nginx),然后在拷贝

    [root@bogon vhost]# pkill nginx

    [root@bogon vhost]# cp /usr/src/nginx-1.14.0/objs/nginx /usr/local/nginx/sbin/nginx

    cp:是否覆盖"/usr/local/nginx/sbin/nginx"? y

     

     

    # 重启nginx 查看nginx中的openssl 版本

     [root@bogon nginx-1.14.0]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

     

    [root@bogon vhost]# /usr/local/nginx/sbin/nginx -V

    nginx version: nginx/1.14.0

    built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)

    built with OpenSSL 1.1.0h  27 Mar 2018

    TLS SNI support enabled

     

    至此,openssl 升级结束。在此过程中,遇到很多坑,以此文档帮助需要没事就升级openssl的小伙伴。

     

     

     

  • 相关阅读:
    combobox获取dataset部分数据的方法
    vs2008设置Jquery自动感知方法
    iOS7 初体验
    数据采集[即与 WEB 相关的功能函数]
    javascript 时间倒计时效果
    有进度条圆周率计算
    python科学计算库
    python随笔
    jieba库
    数据分析模块pandas
  • 原文地址:https://www.cnblogs.com/lzcys8868/p/9235538.html
Copyright © 2011-2022 走看看