Openssl 升级操作
转自:http://www.cnblogs.com/lzcys8868/p/9235538.html
首先我觉得没事就用绿盟扫漏洞的公司,就是闲的蛋疼,傻逼!不少服务器使用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版本
> openssl version -a
OpenSSL 1.0.1e-fips 11 Feb 2013
built on: Wed Mar 22 21:43:28 UTC 2017
platform: linux-x86_64
options: bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -DTERMIO -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
OPENSSLDIR: "/etc/pki/tls"
engines: rdrand dynamic
二. 升级openssl(后续需要重新编译nginx,建议采用此方法升级openssl)
> cd /opt/
> wget https://www.openssl.org/source/openssl-1.1.0j.tar.gz
> tar xvf openssl-1.1.0j.tar.gz
> cd /opt/openssl-1.1.0j/
> ./config --prefix=/usr/local/openssl
> echo $?
0
> make && make install
> echo $?
0
将新编译的openssl 替换老版本的
> mv /usr/bin/openssl /usr/bin/openssl.bak
> mv /usr/include/openssl /usr/include/openssl.bak
> ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
> ln -s /usr/local/openssl/include/openssl /usr/include/openssl
> cd /usr/local/openssl/lib/
> cp libssl.so.1.1 /usr/lib64/libssl.so.1.1
> cp libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
> ldconfig -v | grep ssl
ldconfig: /etc/ld.so.conf.d/kernel-2.6.32-696.13.2.el6.x86_64.conf:6: duplicate hwcap 1 nosegneg
ldconfig: /etc/ld.so.conf.d/kernel-2.6.32-696.16.1.el6.x86_64.conf:6: duplicate hwcap 1 nosegneg
ldconfig: /etc/ld.so.conf.d/kernel-ml-aufs-3.10.5-3.el6.x86_64.conf:6: duplicate hwcap 1 nosegneg
libssl.so.1.1 -> libssl.so.1.1
libssl.so.10 -> libssl.so.1.0.1e
libssl3.so -> libssl3.so
> openssl version -a
OpenSSL 1.1.0j 20 Nov 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/ssl\"" -DENGINESDIR="\"/usr/local/openssl/lib/engines-1.1\"" -Wa,--noexecstack
OPENSSLDIR: "/usr/local/openssl/ssl"
ENGINESDIR: "/usr/local/openssl/lib/engines-1.1"
三.重新编译nginx
查看nginx 中openssl 的版本
> ./nginx -V
nginx version: nginx/1.12.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_perl_module --with-http_random_index_module --with-http_secure_link_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module --with-stream --with-stream_ssl_module --with-threads --add-module=modules/nginx-rtmp-module
重新编译nginx,并制定openssl 新版本的目录。重新编译nginx时,之前nginx 的配置参数要保证一样
> cd /opt
> git clone https://github.com/nginx/nginx.git
> cd /opt/nginx
如果有添加的额外模块,要将其模块代码也拉下来
下载 nginx-rtmp-module 模块,并切换到稳定版本
> mkdir modules
> cd modules
> git clone https://github.com/arut/nginx-rtmp-module
> cd nginx-rtmp-module
> git checkout v1.2.0
> cd ..
> cp /opt/nginx/auto/configure ./
> ./configure --prefix=/usr/local/nginx --with-debug --with-pcre-jit --with-openssl=/usr/local/openssl --with-http_ssl_module --with-openssl=/usr/local/openssl --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_perl_module --with-http_random_index_module --with-http_secure_link_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module --with-stream --with-stream_ssl_module --with-threads --add-module=modules/nginx-rtmp-module
make 报错
[root@localhost nginx]# make
make -f objs/Makefile
make[1]: Entering directory `/opt/nginx'
cd /usr/local/openssl \
&& if [ -f Makefile ]; then make clean; fi \
&& ./config --prefix=/usr/local/openssl/.openssl no-shared \
&& 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 `/opt/nginx'
make: *** [build] Error 2
解决方法如下:
修改nginx 源文件下的 /opt/nginx/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_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"
然后重新编译安装nginx
> ./configure --prefix=/usr/local/nginx --with-debug --with-pcre-jit --with-openssl=/usr/local/openssl --with-http_ssl_module --with-openssl=/usr/local/openssl --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_perl_module --with-http_random_index_module --with-http_secure_link_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module --with-stream --with-stream_ssl_module --with-threads --add-module=modules/nginx-rtmp-module
> make
注:此处千万不要 执行make install,否则会覆盖nginx 之前的配置文件
拷贝nginx的二进制目录到nginx的安装目录下
> ps -ef|grep nginx
root 4261 1 0 09:16 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody 4267 4261 0 09:16 ? 00:00:00 nginx: worker process
root 24701 5987 0 16:09 pts/3 00:00:00 grep nginx > kill -9 4261
> kill -9 4267
> cp /opt/nginx/objs/nginx /usr/local/nginx/sbin/
# 重启nginx 查看nginx中的openssl 版本
> cd /usr/local/nginx/sbin
> ./nginx -c /usr/local/nginx/conf/nginx.conf
>./nginx -V
nginx version: nginx/1.12.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)
built with OpenSSL 1.1.0j 20 Nov 2018
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-debug --with-pcre-jit --with-openssl=/usr/local/openssl --with-http_ssl_module --with-openssl=/usr/local/openssl --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_perl_module --with-http_random_index_module --with-http_secure_link_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module --with-stream --with-stream_ssl_module --with-threads --add-module=modules/nginx-rtmp-module
如果你将nginx的版本做了升级,直接替换可执行文件,启动时会报错:
> /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nginx: [alert] version 1.14.2 of nginx.pm is required, but 1.12.2 was found
原因:perl文件,在make install的时候,也会安装,如果不指定安装目录,这个文件会默认安装到/usr/local/lib64/perl5/nginx.pm
而nginx.pm里面记录了nginx的版本号。所以,如果启动nginx的时候,运行的nginx与nginx.pm版本号不一致就有问题,特别是升级nginx,或者一台机器上部署了多个nginx
解决办法:
1. --with-perl_modules_path=/home/webserver/nginx3/perl 把相关perl程序/模块 安装到指定目录里
2. 将旧版本的安装目录进行备份,然后切换到新版本的编译目录 , 执行 make install
再执行 ./nginx -c /usr/local/nginx/conf/nginx.conf 进行启动
至此,openssl 升级结束。在此过程中,遇到很多坑,以此文档帮助需要没事就升级openssl的小伙伴
Openssl 升级操作的更多相关文章
- openssl 升级操作 -2
首先我觉得没事就用绿盟扫漏洞的公司,就是闲的蛋疼,傻逼!不少服务器使用nginx,如果openssl 是静态编译的,直接将openssl 编译到nginx里面去了,这就意味着,单纯升级openssl ...
- openssl 升级 操作 -1
好多公司都会用绿盟扫描系统漏洞,里边就会涉及到ssl 漏洞,原因是openssl 版本低导致,会让你升级到指定版本.下面就介绍一下openssl 版本升级的操作方案. 一. 查看系统版本 [root@ ...
- openssl版本升级操作记录
需要部署nginx的https环境,之前是yum安装的openssl,版本比较低,如下: [root@nginx ~]# yum install -y pcre pcre-devel openssl ...
- openssl版本升级操作记录【转】
需要部署nginx的https环境,之前是yum安装的openssl,版本比较低,如下: [root@nginx ~]# yum install -y pcre pcre-devel openss ...
- linux环境中,openssl升级及openresty中nginx基于新版本openssl重新编译
需求说明: 最近在对系统进行安全扫描的时候,出现了openssl版本的问题,建议对openssl版本进行升级,在此记录下升级过程. 环境说明: 操作系统:RHEL 6.6 升级操作过程: 1.下载最新 ...
- CentOS6.5的openssl升级
CentOS6.5的openssl升级:(修复心脏漏血漏洞) [root@linux1 ~]# rpm -qi openssl|grep VersionVersion : 1.0.1e Vendor: ...
- DS4700磁盘阵列的控制器微码升级操作记录(收录百度文库)
DS4700磁盘阵列的控制器微码升级操作记录 项目介绍: 于10年3月,XX地市区/州XX分公司相继反映生产读取数据速度较之前变得非常慢,表现在:日常报表抽取数据速度明显变慢,客户打开前台页面速度 ...
- tomcat 8.0安装ssl证书,及centos7.2 的openssl升级到最新版本,及ERR_SSL_OBSOLETE_CIPHER错误解决
openssl官网https://www.openssl.org/source/下载最新的文件 2017-Feb-16 12:03:39 openssl-1.1.0e.tar.gz 安装的时候,可能由 ...
- openssl升级并发症
简单介绍一下系统环境: 操作系统:redhat6.3 ,安装的主要涉及到的包有: root@192.168.100.252:/root# rpm -qa | grep ssh openssh-.3p1 ...
随机推荐
- MyOD-Linux od命令的实现
MyOD 一.设计思路 确定MyOD的要求 根据需求可知MyOD需要实现类似Linux下 od -tx -tc XXX的功能,于是先去网上查找了一下od命令的-tx以及-tc参数的作用,经查找后了解到 ...
- io 口方向调整 stm32
zonggo//IO方向设置 CRL为0-7 CRH为 8-15 总共四个寄存器位置有效#define DS18B20_IO_IN() {GPIOB->CRH&=0X0FFFFFFF;G ...
- COMP9334 Project
COMP9334 Project, Term 1, 2019:Fog/cloud ComputingVersion 1.0Due Date: 11:00pm Friday 26 April 2019. ...
- Windows10 ntoskrnl.exe占用大量的磁盘空间(100%)
一.解决办法: 1.此电脑(右键)> 管理(点击)> 系统工具 > 任务计划程序 > 任务计划程序库 > Microsoft > windows > .NE ...
- Windows下安装使用python的Flask框架
1.安装python环境: 这里就不赘述了. 2.安装virtualenv虚拟环境: 这里使用使用第三方工具 virtualenv 创建虚拟环境.虚拟环境的好处如下(摘录网络): “ 安装 Flask ...
- vue 使用
[1_01 vue的双向绑定] [1_02 Vue Slot] [vue实例属性template不能使用] [vue-property-decorator 提供 OO 的风格 Vue Componen ...
- 工程经验记录yolo框下移引发的思考
事件叙述: 缘起:yolo检测框,在项目开始之前由于在一些场景下观察到yolo的框在大车检测的时候,回归的位置不好,一些车辆的尾部会被漏掉,特别是车牌部分,恰好被框在外面的时候,在后续就无法进行车牌检 ...
- leetcode 之 two sum (easy)c++
1.数组的长度 length() .容器vector长度 size() .容器vector vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库. ...
- redis 3.2 新数据结构:quicklist、String的embstr与raw编码方式分界点
Redis3.2.0引入了新的quicklist的数据结构做了list的底层存储方案.废弃了原来的两个配置参数, list-max-ziplist-entries list-max-ziplist-v ...
- CRT乱码问题
本人在使用CRT过程中遇到乱码问题,经调试发现要把字体调整为"新宋体",编码格式用"UTF-8". 调整字体: Options à Session option ...