nginx 源码安装openssl修复Heartbleed漏洞

如果你的nginx使用的是动态的openssl库,直接升级openssl,如果你的nginx使用的是静态的openssl库,那就要重新编译安装nginx。 PHP编译修复

1. nginx使用的是动态的openssl库,直接升级openssl
    1.1 源码安装openssl1.0.1g版本
        先下载openssl 1.0.1g版本,命令如下:
            #wget  -c    https://www.openssl.org/source/openssl-1.0.1g.tar.gz
        再下载这个版本的md5校验包:
            #wget -c  https://www.openssl.org/source/openssl-1.0.1g.tar.gz.md5
        然后校验下的openssl包是否被恶意修改过:
            #md5sum openssl-1.0.1g.tar.gz | awk ‘{print $1;}‘ | cmp - openssl-1.0.1g.tar.gz.md5
        如果校验没问题,再接着解压包,命令:
            #tar   -zvxf      openssl-1.0.1g.tar.gz    //解压openssl-1.0.1g.tar.gz
        进入这个解压缩的目录:
            #cd   openssl-1.0.1g
        输入下面的命令进行编译,安装,我直接设置了一些重要的参数,因为其他的参数对于我来说就根本没用。如果需要参数,自己添加就是。输入:
            #./config shared zlib  && make && make install
        或者你什么参数都不加,完全用默认的:
            #./config  && make && make install
        话大概五六分中编译安装完。没出问题的话,继续输入下面的命令,手动软链新的openssl二进制文件:
            ln –s /usr/local/ssl/bin/openssl /usr/bin/openssl
            ln –s /usr/local/ssl/include/openssl /usr/include/openssl
        配置库文件搜索路径:
            #echo  "/usr/local/ssl/lib"  >>  /etc/ld.so.conf
            #ldconfig -v
        最后重启下服务器(重启进程麻烦的),输入:
            #reboot
        重启后,输入下面的命令检测下openssl 的版本:
            #openssl   version
        显示:
            OpenSSL 1.0.1g 7 Apr 2014

2. nginx使用的是静态的openssl库,重新编译安装nginx
    2.1 概述
    当前爆出了Openssl漏洞,会泄露隐私信息,涉及的机器较多,环境迥异,导致修复方案都有所不同。
    不少服务器使用的Nginx,是静态编译 opensssl,直接将openssl编译到nginx里面去了,这就意味着,单纯升级openssl是没有任何效果,Nginx不会加载外部的 openssl动态链接库的,必须将nginx重新编译才可以根治。
    2.2 识别Nginx是否是静态编译的
        以下三种方法都可以确认Nginx是否静态编译Openssl。
            1) 查看Nginx编译参数
                输入以下指令,查看Nginx的编译参数:
                # ./sbin/nginx -V
                如果编译参数中含有--with-openssl=...,则表明Nginx是静态编译Openssl,如下所示:
                nginx version: nginx/1.4.1
                built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)
                TLS SNI support enabled
                configure arguments: --prefix=/opt/app/nginx --with-http_ssl_module --with-openssl=/opt/app/openssl-1.0.1e --add-module=/opt/app/ngx_cache_purge-2.1
            2) 查看Nginx的依赖库
                为进一步确认,可以查看一下程序的依赖库,输入以下指令:
                # ldd `which nginx` | grep ssl
                显示
                libssl.so.10 => /usr/lib/libssl.so.10 (0xb76c6000)
                注意:如果输出中不包含libssl.so的文件(),就说明是静态编译的Openssl的
                再输入命令以确定openssl以确定库所属的openssl版本,但是不会太详细,比如本应该是1.0.1e.5.7,但是却只输出1.0.1e:
                # strings  /usr/lib/libssl.so.10 | grep "^OpenSSL "
                OpenSSL 1.0.1e-fips 11 Feb 2013
            3) 查看Nginx打开的文件
                也可以通过查看Nginx打开的文件来查看是否静态编译,输入以下指令:
                # ps aux | grep nginx
                # lsof -p 111111<这里换成Nginx的进程PID>  | grep ssl
                如果没有打开Openssl的库文件,就说明是静态编译Openssl的,如下图所:
                20140411213555359
    2.3 重新编译Nginx
    参考《重新编译Nginx指导手册【修复静态编译Openssl的Nginx漏洞 】[Openssl Heartbleed]

3 php编译时,是否制定了openssl目录
    我们直接查看php探针,就是<?php phpinfo(); ?> 保存到info.php。
    浏览器打开info.php 看显示openssl 那几栏,如下:
    openssl
    OpenSSL support     enabled
    OpenSSL Library Version     OpenSSL 1.0.1g 7 Apr 2014
    OpenSSL Header Version     OpenSSL 1.0.1g 7 Apr 2014
    如果不是1.0.1g版本,那就重新编译下php。指定openssl的目录。
    可以使用下面的命令,查看php版本和编译参数:
    #php   -v     #查看php版本
    # /usr/local/php/bin/php -i | grep configure   #查看php编译所用的参数
    用这个命令显示的编译结果都有单引号包住了,要删掉。同时将其中的--with-openssl  改为:
    --with-openssl=/usr/local/ssl/
    然后重新编译即可,只是编译参数变了,但不改变php的版本。

时间: 2024-08-03 15:40:27

nginx 源码安装openssl修复Heartbleed漏洞的相关文章

Nginx源码安装及调优配置(转)

导读 由于Nginx本身的一些优点,轻量,开源,易用,越来越多的公司使用nginx作为自己公司的web应用服务器,本文详细介绍nginx源码安装的同时并对nginx进行优化配置. Nginx编译前的优化 [[email protected] ~]# wget http://nginx.org/download/nginx-1.10.1.tar.gz [[email protected] ~]# tar xvf nginx-1.10.1.tar.gz -C /usr/local/src/ [[em

LAMP环境部署:Apache源码安装+MySQL二进制安装+PHP源码安装+Nginx源码安装

Apache 版本:2.2.27 MySQL 版本:5.5.54-linux2.6-x86_64PHP 版本:5.3.27一.源码安装Apache1.首先安装上传工具2.上传LAMP环境所需安装包3.解压所有安装包4.安装Apache依赖包5.创建安装目录6.配置安装文件./configure \ #./configure 是用来生成Makefile文件用于编译安装 --prefix=/application/apache-2.2.27 \ #指定安装目录--enable-deflate \ #

nginx 源码安装

安装nginx 安装pcre库是为了让nginx支持具备URI重写功能的rewrite模块 [[email protected] ~]# yum install pcre pcre-devel -y [[email protected] ~]# rpm -qa pcre pcre-devel 安装nginx 依赖的包 openssl-devel [[email protected] ~]# yum install openssl openssl-devel [[email protected]

nginx 源码安装以及后续升级https

事情的来源是,公司要将网站从http升级到https,由于历史遗留原因,才发现现有的nginx是通过源码安装的,并没有安装ssl模块,需要现安装sll模块,这个nginx是整个公司最前端的一个代理,涉及到很多部门,因为之前没有操作过,还是小心点为妙,下面是在虚拟机上演示的. 1,先安装后面所需的一些包 yum install gcc-c++ yum install pcre pcre-devel yum install zlib zlib-devel yum install openssl op

NGINX源码安装配置详解(./configure),最全解析

NGINX ./configure详解 在"./configure"配置中,"--with"表示启用模块,也就是说这些模块在编译时不会自动构建"--without"表示禁用模块,也就是说这些模块在编译时会自动构建,若你想Nginx轻量级运行,可以去除一些不必要的模块. [[email protected] nginx-1.14.0]# ./configure --help => 查看安装配置项 --help 打印帮助信息. --prefix

nginx源码安装(CentOS版)

准备工作: 1) 配好网易yum源 登录此网站(http://mirrors.163.com/.help/centos.html),下载相应版本的yum源至服务器的/etc/yum.repos.d/目录下,然后按照此步骤进行操作,即可完成网易yum源的配置准备. 2) 安装make/gcc/zlib等安装包 yum install -y gcc automake autoconf libtool make yum install -y gcc gcc-c++ 开始: 1) 选定源码目录 cd /

Centos下Nginx源码安装与配置并附shell编程实现自动化安装

一.首先安装必要的库 nginx 中gzip模块需要 zlib 库,rewrite模块需要 pcre 库,ssl 功能需要openssl库.选定/usr/local为安装目录,以下具体版本号根据实际改变. 1.安装PCRE库 $ cd /usr/local/ $ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz $ tar -zxvf pcre-8.36.tar.gz $ cd pcre-8.3

nginx源码安装-及lnmp搭建 phpmyadmin

1.下载源码编译安装nginx wget http://nginx.org/download/nginx-1.17.1.tar.gztar -xvf nginx-1.17.1.tar.gzyum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel #安装编译环境./configure #运行内部的配置脚本make && make install #编译安装安装完成 cd 到 cd /usr/local/

nginx源码安装

1.安装开发包 # yum install -y pcre-devel openssl-devel 2.解压源码包并编辑文件隐藏nginx版本 # tar zxvf nginx-1.8.0.tar.gz #  cd nginx-1.8.0 #  vim auto/cc/gcc #CFLAGS="$CFLAGS -g"               #注释掉这行,去掉debug模式编译,编译以后程序只有几百k # vim src/core/nginx.h #define NGINX_VER