Nginx OpenSSL版本升级

Nginx OpenSSL版本升级

openssl升级

OpenSSL程序库当前广泛用于实现互联网的传输层安全(TLS)协议。心脏出血(Heartbleed),也简称为心血漏洞,是一个出现在加密程序库OpenSSL的安全漏洞,此漏洞于2012年被引入了软件中,2014年4月首次向公众披露。只要使用的是存在缺陷的OpenSSL实例,无论是服务器还是客户端,都可能因此而受到攻击。此问题的原因是在实现TLS的心跳扩展时没有对输入进行适当验证(缺少边界检
查),因此漏洞的名称来源于“心跳”(heartbeat)。该程序错误属于缓冲区过读,即可以读取的数据比应该允许读取的还多。

下载地址
  • https://www.openssl.org/source/
升级步骤
#查看当前版本
nginx -V |& grep -i "openssl"|sed -rn "s/.* +(OpenSSL.*)-.*/\1/p"
#下载openssl的高版本,这里以1.1.1q举例
wget -P /var/download https://www.openssl.org/source/old/1.1.1/openssl-1.1.1q.tar.gz --no-check-certificate
#解压
tar -xvf openssl-1.1.1q.tar.gz -C /apps/
#重新编译
cd /apps/nginx-1.20.2/
./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --withhttp_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module --add-module=/usr/local/src/echo-nginx-module --with-openssl=/apps/openssl-1.1.1q
#编译安装
#make -j $(lscpu|sed -rn "s/^CPU\(s\).*([0-9]+)$/\1/p") && make install
make -j $(lscpu|awk '/^CPU\(s\)/{print $2}')&& make install
#关闭nginx进程
nginx -s quit
#重启nginx
nginx
#查看版本
nginx -V |& grep -i "openssl"|awk 'NR==1{print $3,$4}'
强制升级脚本(会直接中断nginx运行)
#!/bin/bash
Openssl_Vsion=openssl-1.1.1q
Suffix=tar.gz
Install_Url=/root/apps
Grt_url=https://www.openssl.org/source/old/1.1.1/$Openssl_Vsion.$Suffix
Download_url=/var/download
#nginx_url=/apps/nginx-1.20.2/
nginx_url=/apps/nginx/nginx-1.19.0
Make_option=$(nginx -V |& sed -rn "s/^configure.*: (.*)/\1/p")

function check() {
    #判断当前版本是否大于1.1.1
    if [[ $(nginx -V|& grep -i "openssl"| awk 'NR==1{print $3,$4}'|grep -o "[0-9]"|tr -d "\n") -ge $(echo $Openssl_Vsion|grep -o "[0-9]"|tr -d "\n") ]];then
        echo "当前版本不需要升级" && exit
    fi
    #判断是否存在软件包,不存在则下载
    if [ ! -f $Download_url/${Openssl_Vsion}.$Suffix ];then
    [ -d $Download_url ] || mkdir -pv $Download_url
    wget -P $Download_url $Grt_url --no-check-certificate
    fi
}

function make_pkg() {
    [ ! -d  $Install_Url ] && mkdir -pv $Install_Url
    [ -d  $Install_Url/$Openssl_Vsion ] ||  tar -xvf $Download_url/$Openssl_Vsion.$Suffix -C $Install_Url
    #重新编译
    cd $nginx_url || exit
    sh configure $Make_option --with-openssl=$Install_Url/$Openssl_Vsion
    make -j $(lscpu|awk '/^CPU\(s\)/{print $3}') && make install
    sleep 10
    [ $? -eq 0 ] || exit
    #关闭nginx 进程
    nginx -s quit
    #启动nginx
    nginx && echo "升级成功,当前版本为:$(nginx -V |& grep -i "openssl"|awk 'NR==1{print $3,$4}')"
}
check
make_pkg

你可能感兴趣的:(linux,nginx,运维,服务器)