说明
此文章主要记录OpenSSL Security Advisory [22 Sep 2016]漏洞的修复方法。
漏洞信息
官方漏洞报告信息:
1、OpenSSL Security Advisory [22 Sep 2016]
链接:https://www.openssl.org/news/secadv/20160922.txt
请在下列网页下载最新版本:
2、对于nginx、apache、lighttpd等服务器禁止使用DES加密算法
主要是修改conf文件
3、Windows系统可以参考如下链接:
SSL Medium Strength Cipher Suites Supported (SWEET32)-CVE-2016-2183
建议:避免使用IDEA、DES和3DES算法
解决办法
1、容器环境
升级nginx容器镜像到1.20.0版本以上即可,因为1.20.0版本的openssl版本已经满足1.1.1k
2、主机环境
升级主机环境的openssl版本到1.1.1k即可
解决过程
1、容器环境
说明:
我的网站的跑在K8S环境中,服务nginx版本为1.19.0,暴露80端口,通过ingress统一开放。
第一步--替换dockerfile中容器基础镜像版本
# 我直接升级到1.22.0
FROM llody/nginx:v1.22.0
第二步--重新发布版本并验证openssl版本
docker exec -it 容器名称 sh
# 执行
nginx -V
第三步--禁用掉指定算法
# 在服务的ingress配置项添加如下注解
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
nginx.ingress.kubernetes.io/configuration-snippet: |
ssl_ciphers '!DES:!IDEA:!3DES';
spec:
...
# 或者使用官方给的加密套件
nginx.ingress.kubernetes.io/ssl-ciphers: "ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP"
第四步--验证方法
根据SSL/TLS协议信息泄露漏洞(CVE-2016-2183)原理,通过发送精心构造的数据包到目标服务,根据目标的响应情况,验证漏洞是否存在
2、主机环境
第一步--升级当前的openssl版本
#github地址
wget https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1t/openssl-1.1.1t.tar.gz
#官网地址
wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz
# 解压
tar -zxvf openssl-1.1.1t.tar.gz
# 进入到解压后的目录下
cd openssl-1.1.1t
# 配置并指定安装路径
./config --prefix=/usr --openssldir=/etc/ssl --libdir=lib no-shared zlib-dynamic
# 在build之前做make depend(通过这种安装方式,openssl和openssl-devel都将会被安装)
make depend
# 编译并安装
make && make install
# 配置环境变量
export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64
echo "export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64" >> ~/.bashrc
第二步--确认升级版本即可
# 再次查看版本,确认是否安装成功
openssl version
第三步--修改服务.conf文件,禁用指定算法
# 全局配置
worker_processes auto;
error_log /var/log/nginx/error.log;
events {
worker_connections 1024;
}
http {
# HTTP配置
# 使用https的监听端口
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/ssl_certificate.crt;
ssl_certificate_key /path/to/private_key.key;
# 启用TLS协议版本定义
ssl_protocols TLSv1.2 TLSv1.3;
# 禁用DES算法的密码套件
ssl_ciphers '!DES:!IDEA:!3DES';
location / {
root /path/to/root;
index index.html;
}
}
# HTTP重定向到HTTPS
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
}