天天看點

linux環境中,openssl更新及openresty中nginx基于新版本openssl重新編譯

需求說明:

  最近在對系統進行安全掃描的時候,出現了openssl版本的問題,建議對openssl版本進行更新,在此記錄下更新過程。

環境說明:

  作業系統:RHEL 6.6

更新操作過程:

1.下載下傳最新版本openssl

   下載下傳位址:https://www.openssl.org/source/

下載下傳1.0.2的分支版本

linux環境中,openssl更新及openresty中nginx基于新版本openssl重新編譯

2.将壓縮包上傳到伺服器上

3.檢視目前openssl版本資訊

[root@openssl ~]# openssl version -a
OpenSSL 1.0.1e-fips 11 Feb 2013
built on: Fri Aug 15 03:59:00 EDT 2014
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       

4.解壓,檢查配置,安裝

[root@openssl ~]# ls -l openssl-1.0.2s.tar.gz 
-rw-r--r--. 1 root root 5349149 May 30 11:28 openssl-1.0.2s.tar.gz
[root@openssl ~]# tar -zxf openssl-1.0.2s.tar.gz 
[root@openssl ~]# cd openssl-1.0.2s
[root@openssl openssl-1.0.2s]# ./config shared zlib-dynamic
[root@openssl openssl-1.0.2s]# make && make install      

備注:新的openssl預設安裝在/usr/local/ssl目錄下

5.将原來openssl指令備份,重命名原來的openssl目錄

[root@openssl openssl-1.0.2s]# mv /usr/bin/openssl  /usr/bin/openssl.old
[root@openssl openssl-1.0.2s]# mv /usr/include/openssl  /usr/include/openssl.old      

6.基于新安裝openssl建立指令,目錄的軟連結

[root@openssl openssl-1.0.2s]# ln -s /usr/local/ssl/bin/openssl  /usr/bin/openssl
[root@openssl openssl-1.0.2s]# ln -s /usr/local/ssl/include/openssl  /usr/include/openssl      

7.修改系統自帶的openssl庫檔案,軟連結更新後的openssl庫

[root@openssl openssl-1.0.2s]# mv /usr/lib64/libssl.so /usr/lib64/libssl.so.bak
[root@openssl openssl-1.0.2s]# ln -s /usr/local/ssl/lib/libssl.so /usr/lib64/libssl.so      

8.檢視openssl依賴的庫的版本

[root@openssl openssl-1.0.2s]# strings /usr/lib64/libssl.so |grep OpenSSL
OpenSSLDie
SSLv3 part of OpenSSL 1.0.2s  28 May 2019
TLSv1 part of OpenSSL 1.0.2s  28 May 2019
DTLSv1 part of OpenSSL 1.0.2s  28 May 2019
OpenSSL 1.0.2s  28 May 2019      

9.在/etc/ld.so.conf檔案中寫入openssl庫檔案的搜尋路徑,并使得修改生效

[root@openssl openssl-1.0.2s]# echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
[root@openssl openssl-1.0.2s]# ldconfig -v      
linux環境中,openssl更新及openresty中nginx基于新版本openssl重新編譯

10.檢視openssl版本

[root@openssl openssl-1.0.2s]# openssl version -a
OpenSSL 1.0.2s  28 May 2019
built on: reproducible build, date unspecified
platform: linux-x86_64
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) 
compiler: gcc -I. -I.. -I../include  -fPIC -DOPENSSL_PIC -DZLIB_SHARED -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/local/ssl"      

openssl版本更新成功。

更新openresty中openssl

 1.檢視目前openresty中nginx的編譯資訊

[root@openssl nginx]# sbin/nginx -V
nginx version: openresty/1.11.2.3
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013           #openssl版本是之前的版本
TLS SNI support enabled
configure arguments: --prefix=/usr/local/openresty/nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.0 --add-module=../echo-nginx-module-0.60 --add-module=../xss-nginx-module-0.05 --add-module=../ngx_coolkit-0.2rc3 --add-module=../set-misc-nginx-module-0.31 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.06 --add-module=../srcache-nginx-module-0.31 --add-module=../ngx_lua-0.10.8 --add-module=../ngx_lua_upstream-0.06 --add-module=../headers-more-nginx-module-0.32 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.18 --add-module=../redis2-nginx-module-0.14 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.14 --add-module=../rds-csv-nginx-module-0.07 --with-ld-opt=-Wl,-rpath,/usr/local/openresty/luajit/lib --with-http_ssl_module      

 2.重新對openresty進行編譯

[root@openssl openresty-1.11.2.3]# ./configure --with-openssl=/usr/local/ssl/      

編譯時報錯:

cd /root/openresty-1.11.2.3/build/nginx-1.11.2 && make
make[1]: Entering directory `/root/openresty-1.11.2.3/build/nginx-1.11.2'
make -f objs/Makefile
make[2]: Entering directory `/root/openresty-1.11.2.3/build/nginx-1.11.2'
cd /usr/local/ssl \
    && if [ -f Makefile ]; then make clean; fi \
    && ./config --prefix=/usr/local/ssl/.openssl no-shared  \
    && make \
    && make install_sw LIBDIR=lib
/bin/sh: line 2: ./config: No such file or directory
make[2]: *** [/usr/local/ssl/.openssl/include/openssl/ssl.h] Error 127
make[2]: Leaving directory `/root/openresty-1.11.2.3/build/nginx-1.11.2'
make[1]: *** [build] Error 2
make[1]: Leaving directory `/root/openresty-1.11.2.3/build/nginx-1.11.2'
make: *** [all] Error 2      

 解決該問題,修改配置檔案/bundle/nginx-1.11.2/auto/lib/openssl/conf

[root@openssl openssl]# pwd
/root/openresty-1.11.2.3/bundle/nginx-1.11.2/auto/lib/openssl
[root@openssl openssl]# ls -l
total 16
-rw-rw-r--. 1 1000 1000 3587 Jul 18  2016 conf
-rw-rw-r--. 1 1000 1000 1480 Jul 18  2016 make
-rw-rw-r--. 1 1000 1000  365 Jul 18  2016 makefile.bcc
-rw-rw-r--. 1 1000 1000  211 Jul 18  2016 makefile.msvc      

 修改之後,如下(将/.openssl删除掉,也就是避免了找路徑的時候找.openssl這個路徑):

linux環境中,openssl更新及openresty中nginx基于新版本openssl重新編譯

3.重新編譯、安裝

[root@openssl openresty-1.11.2.3]# make clean
rm -rf build
[root@openssl openresty-1.11.2.3]# ./configure --with-openssl=/usr/local/ssl/
[root@openssl openresty-1.11.2.3]# make && make install      

4.檢視編譯後的nginx資訊

[root@openssl nginx]# sbin/nginx -V
nginx version: openresty/1.11.2.3
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) 
built with OpenSSL 1.0.2s  28 May 2019
TLS SNI support enabled
configure arguments: --prefix=/usr/local/openresty/nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.0 --add-module=../echo-nginx-module-0.60 --add-module=../xss-nginx-module-0.05 --add-module=../ngx_coolkit-0.2rc3 --add-module=../set-misc-nginx-module-0.31 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.06 --add-module=../srcache-nginx-module-0.31 --add-module=../ngx_lua-0.10.8 --add-module=../ngx_lua_upstream-0.06 --add-module=../headers-more-nginx-module-0.32 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.18 --add-module=../redis2-nginx-module-0.14 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.14 --add-module=../rds-csv-nginx-module-0.07 --with-ld-opt=-Wl,-rpath,/usr/local/openresty/luajit/lib --with-openssl=/usr/local/ssl --with-http_ssl_module      

openssl更新成功。

備注:如果在生産環境操作,必須在更新之前進行備份。

文檔建立時間:2019年5月30日18:46:58

特别提醒:

如果你想知道,如何輕松學習技術、快速賺取現金、鈔票的秘訣,

讓你的技術實作超高的收益,

讓你的技術獲得的收益是身邊朋友、周圍同僚的3倍、5倍。

請立即添加微信:13240133388

繼續閱讀