1. 程式人生 > >修復OpenSSL漏洞 升級OpenSSL版本 nginx靜態編譯ssl模塊

修復OpenSSL漏洞 升級OpenSSL版本 nginx靜態編譯ssl模塊

nginx openssl

背景
   OpenSSL全稱為Secure Socket Layer,是Netscape所研發,利用數據加密(Encryption)作技術保障在Internet上數據傳輸的安全。可確保數據在網絡上的傳輸不會被竊聽及截取。

    當然,OpenSSL是一個強大的密碼庫,我們在使用SSL協議的時候不一定非得采用OpenSSL,不過目前基本上都是用的OpenSSL,因為它更安全,使用起來也更簡單。

通常出現的OpenSSL的漏洞需要升級版本解決

查看openssl版本

openssl version 

進入存放源碼包位置

cd /usr/local/scr  

下載最新版openssl 源碼包 下載openssl地址

https://www.openssl.org/source/

解壓

tar  zxf    openssl-1.1.0h.tar.gz

編譯

./config  --prefix=/usr/local/openssl-1.1.0h/ssl
make  && make install

將新編譯的openssl替換系統老版本的

mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak 
ln -s /usr/local/openssl-1.1.0h/ssl/bin/openssl   /usr/bin/openssl
ln -s /usr/local/openssl-1.1.0h/ssl/include/openssl   /usr/include/openssl

配置文件搜索路徑

echo "/usr/local/ssl/lib/" >> /etc/ld.so.conf  
 ldconfig -v |grep openssl  

查看安裝完成後的最新版本

 openssl version
 openssl version -a

以上openssl 安裝更新完成

########

nginx靜態編譯ssl模塊

nginx用戶:
如果您是使用動態編譯ssl模塊的方式,需保證nginx鏈接的是升級後的libssl.so
如果您是使用靜態編譯ssl模塊的方式,需重新編譯nginx,--with-openssl參數指向新的openssl源碼目錄

識別nginx是否為靜態編譯https://blog.csdn.net/hujkay/article/details/23476557

我的nginx為靜態編譯的

進入nginx解壓包的源碼包路徑

cd /usr/local/scr/nginx-1.10.2

進入nginx源碼目錄 重新編譯。

./configure  --prefix=/usr/local/nginx --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre --with-http_ssl_module --with-openssl=/usr/local/openssl-1.1.0h/ssl
註釋:
編譯參數需要拷貝原來參數
查看nginx編譯的參數
/usr/local/nginx/sbin/nginx -V
參數解析 --with-http_ssl_module --with-openssl=/usr/local/openssl-1.1.0h/ssl
【--with-http_ssl_module 使得nginx支持ssl模塊  --with-openssl指定安裝目錄,通常兩個都加上】

編譯

make   【生成最新二進制文件】  
這裏可以不make install  ,避免把原來的nginx其他配置覆蓋了
編譯時可能出現的報錯
/usr/local/openssl//.openssl/include/openssl/ssl.h] Error 127
解決方案:
https://www.cnblogs.com/huanhang/p/7580843.html

修改後

需要把最新nginx二進制文件拷貝到安裝目錄的sbin

@需要的可以備份好原來的二進制文件
cp  /usr/local/src/nginx-1.10.2/objs    /usr/local/nginx/sbin/nginx

驗證nginx配置文件是否正確

/usr/local/nginx/sbin/nginx -t

重啟nginx服務

/usr/local/nginx/sbin/nginx -s stop
 啟動代碼格式:nginx安裝目錄地址 -c nginx配置文件地址
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

修復OpenSSL漏洞 升級OpenSSL版本 nginx靜態編譯ssl模塊