记一次TLS协议升级及openssl升级、nginx重新编译

TLS协议漏洞

之前客户反馈系统存在https漏洞,经查询后是由于低版本的TLS协议导致的,需要采用TLS1.2版本
由于系统使用的是用nginx1.12.1做的反向代理,本身这个版本的nginx是支持TLS1.2协议的,但需要对应的openssl库支持
通过openssl version指令查询当前版本为0.9.8,而支持TLS1.2协议的需要openssl版本是1.0.1及以上,所以需要对openssl版本进行升级

由于卸载老版本可能会引起其他问题,我们这边不卸载原有版本,而是新增一个版本
1.通过wget指令获取对应版本的openssl
我这边使用1.0.2版本进行处理
wget https://www.openssl.org/source/openssl-1.0.2h.tar.gz

2.解压缩
tar -zxvf openssl-1.0.2h.tar.gz

3.进行编译安装
./config shared zlib-dynamic (添加zlib-dynamic参数,使其编译成动态库)
make
make install

4.备份原版本数据
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak

5.添加新版openssl的软链接
将安装好的openssl 的openssl命令软连到/usr/bin/openssl
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
将安装好的openssl 的openssl目录软连到/usr/include/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl

6.修改系统自带的openssl库文件
(注意这个要根据服务器libssl.so自身路径情况进行)
ln -s /usr/local/ssl/lib/libssl.so /usr/lib64/libssl.so

7.查看依赖库版本是否为新安装版本
strings /usr/local/lib64/libssl.so |grep OpenSSL
一致即可

8.写入openssl库文件的搜索路径(写入ld.so.conf)
echo “/usr/local/ssl/lib” >> /etc/ld.so.conf
使其生效
ldconfig -v

9.检查openssl版本
openssl version
是你新安装的版本即可

这样openssl升级就完成了

对于nginx使用,必须要重新编译一个版本

1.首先查看原有编译指令
进入nginx安装目录的sbin目录后执行
./nginx -V
通过这个指令能够查询到原有的编译指令

2.修改编译参数
在原有指令基础上曽加新安装openssl路径
–with-openssl=/usr/local/ssl

3.进入原有的nginx解压后的目录进行重新静态编译
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-openssl=/usr/local/ssl
make
(因为只是重新编译不安装,所以不要输入make install指令)
如果出现了如下错误
make[1]: *** [/usr/local/ssl/.openssl/include/openssl/ssl.h] Error 127
需要修改对应解压后目录中的
auto/lib/openssl/conf文件

找到以下代码
CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"

CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"

CORE_LIBS=“ C O R E L I B S / CORE_LIBS / CORELIBS/OPENSSL/.openssl/lib/libssl.a”

CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"

CORE_LIBS="$CORE_LIBS $NGX_LIBDL"

修改成以下代码:
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"

CORE_LIBS="$CORE_LIBS $NGX_LIBDL"

然后重新configure+make编译即可

4.复制新编译好的脚本到nginx安装目录
复制解压缩后目录objs中的nginx脚本到对应nginx安装目录中的sbin目录下

关于nginx相关的一些注意点:
由于openssl存在多个版本,所以在nginx重新编译的时必须要进行openssl的静态编译,也就是加–with-openssl=/usr/local/ssl 参数,如果依旧进行动态编辑可能会出现这样的情况:
在运行./nginx -V后会显示这样
built with OpenSSL 1.0.2h 3 May 2016 (running with OpenSSL 0.9.8k 25 Mar 2009)
这个时候通过改编译脚本运行时会报segmentation fault错误

参考文章:
https://blog.csdn.net/linux_newbie_rookie/article/details/79245503

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值