问题描述

远程服务使用通过密码弱哈希算法(例如 MD2、MD4、MD5 或 SHA1)签名的 SSL 证书链。已知这些签名算法容易遭受碰撞攻击。攻击者可利用此漏洞生成具有相同数字签名的其他证书,从而允许攻击者伪装成受影响的服务。

请注意,该插件将把 2017 年 1 月 1 日之后过期的所有 SHA-1 签名 SSL 证书链报告为漏洞。这符合 Google 逐渐汰换 SHA-1 加密哈希算法的做法。

请注意,已忽略 Nessus CA 数据库 (known_CA.inc) 包含的链中的证书。

说人话就是把http转为https

解决方案

联系证书颁发机构,请其重新颁发证书

流程步骤

一、配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块:–with-http_ssl_module

docker ps
进入docker下Nginx容器

或者docker exec -it 容器的name bash
在这里插入图片描述
查看nginx编译参数:nginx -V
在这里插入图片描述
如果没有红色框内:–with-http_gzip_static_module这个参数,需要重新编辑nginx
本人安装Nginx后就有这个参数,所以没有重新编辑

二、生产SSL证书

1、使用exit退出docker容器,然后安装openssl和openssl-devel

yum install openssl openssl-devel

在这里插入图片描述

2、进入Nginx文件夹的conf.d目录下(与default.conf同目录)

在这里插入图片描述

3、openssl genrsa -des3 -out server.key,需要你设置一个密码
在这里插入图片描述

4、创建csr证书,命令:openssl req -new -key server.key -out server.csr

在这里插入图片描述

地区,省份,城市,公司名和邮箱随便写,其他的直接回车
5、成功后可以看到多了两个文件

在这里插入图片描述

6、拷贝server.key并重命名为server.key.org
在这里插入图片描述

7、去除密码,命令:openssl rsa -in server.key.org -out server.key,输入刚刚设置的密码,回车
在这里插入图片描述

8、生成证书文件server.crt,命令:openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

(我申请的3650天也就是10年)

在这里插入图片描述

9、所有生成的文件如图

在这里插入图片描述
版权声明:以上文章为CSDN博主「Air锐」的原创文章,原文链接:点击蓝字去Air锐的页面查看全文

二、修改Nginx配置文件

vim default.conf

server{

    listen 443 ssl;
	
    server_name IP地址;
	
    ssl_certificate certs/server.crt;#填写你的证书所在的位置
	
    ssl_certificate_key certs/server.key;#填写你的key所在的位置
	
    ssl_session_timeout 5m;
	
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
	
    ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!3DES:!aNULL:!eNULL;
	
    ssl_prefer_server_ciphers on;
	
    location / {
       root   /usr/share/nginx/html;
       index  index.html index.htm;
       try_files $uri $uri/ /index.html;    
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
server{

    listen 9999 ssl;
    server_name IP地址;
    ssl_certificate certs/server.crt;#填写你的证书所在的位置

    ssl_certificate_key certs/server.key;#填写你的key所在的位置

    ssl_session_timeout 5m;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!3DES:!aNULL:!eNULL;

    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:1m;


    location  /api/   {
         proxy_pass http://IP地址:9999/;
    }
}

三、到nginx文件夹下新建certs文件,把刚刚生成的crt文件和key文件放进去。

在这里插入图片描述

四、关闭原来的nginx并移除它,再重启nginx

docker ps -a
docker stop nginx的ID
docker rm nginx的ID

使用包含代理、certs路径的命令重启nginx

docker run  -p 19999:9999 -p 8200:443 --restart=always -v /home/dsep/web_rp/:/usr/share/nginx/html/ -v /home/dsep/docker/nginx/certs:/etc/nginx/certs -v /home/dsep/docker/nginx_rp/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/dsep/docker/nginx_rp/conf/conf.d/default.conf:/etc/nginx/conf.d/default.conf --name nginx_rp -d nginx

其中对应关系为:19999对应99998200对应443
应用软件的前后端都在同一IP下
19999是代理了9999端口,8200代理了https的443端口

五、在前端config.js修改IP

BASE_URL: “https://IP:9999/api/”

重新登录系统,要把网址设置为:https://IP:8200/xxxx 就能登录了

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐