Nginx 兼容IE8

前言

前段时间由于业务需要,在服务器上新增一个服务专门接收各个门店的业务结算数据,接口文档指明需要使用https协议。这本不是什么问题,因为之前服务器已经有配置过https。但等到服务部署之后才发现这些客户端死活连接不上。一直提示“Error connecting with SSL”的错误。服务器明明已经配置好了,而且其它服务使用https协议通信都正常,为什么偏偏这些客户端连接不上呢?

故障排解

windows软件使用https协议访问服务器时无法成功连接,通过wireshark发现客户端软件所发送的client hello请求所支持的cipher suites的版本比较老旧,而服务器返回handshake failure的提示。

客户端软件所发送的握手请求中cipher suites的支持如下:
    Cipher Specs (29 specs)
            Cipher Spec: TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (0x000016)
            Cipher Spec: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x000013)
            Cipher Spec: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x00000a)
            Cipher Spec: TLS_DHE_DSS_WITH_RC4_128_SHA (0x000066)
            Cipher Spec: TLS_RSA_WITH_IDEA_CBC_SHA (0x000007)
            Cipher Spec: TLS_RSA_WITH_RC4_128_SHA (0x000005)
            Cipher Spec: TLS_RSA_WITH_RC4_128_MD5 (0x000004)
            Cipher Spec: TLS_DHE_RSA_WITH_DES_CBC_SHA (0x000015)
            Cipher Spec: TLS_DHE_DSS_WITH_DES_CBC_SHA (0x000012)
            Cipher Spec: TLS_RSA_WITH_DES_CBC_SHA (0x000009)
            Cipher Spec: SSL2_DES_192_EDE3_CBC_WITH_MD5 (0x0700c0)
            Cipher Spec: SSL2_IDEA_128_CBC_WITH_MD5 (0x050080)
            Cipher Spec: SSL2_RC2_128_CBC_WITH_MD5 (0x030080)
            Cipher Spec: SSL2_RC4_128_WITH_MD5 (0x010080)
            Cipher Spec: SSL2_RC4_64_WITH_MD5 (0x080080)
            Cipher Spec: SSL2_DES_64_CBC_WITH_MD5 (0x060040)
            Cipher Spec: TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA (0x000065)
            Cipher Spec: TLS_RSA_EXPORT1024_WITH_RC4_56_SHA (0x000064)
            Cipher Spec: TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA (0x000063)
            Cipher Spec: TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA (0x000062)
            Cipher Spec: TLS_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 (0x000061)
            Cipher Spec: TLS_RSA_EXPORT1024_WITH_RC4_56_MD5 (0x000060)
            Cipher Spec: TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA (0x000014)
            Cipher Spec: TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA (0x000011)
            Cipher Spec: TLS_RSA_EXPORT_WITH_DES40_CBC_SHA (0x000008)
            Cipher Spec: TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 (0x000006)
            Cipher Spec: TLS_RSA_EXPORT_WITH_RC4_40_MD5 (0x000003)
            Cipher Spec: SSL2_RC2_128_CBC_EXPORT40_WITH_MD5 (0x040080)
            Cipher Spec: SSL2_RC4_128_EXPORT40_WITH_MD5 (0x020080)

google资料发现这些加密套件都是很老旧的,有人(https://www.v2ex.com/amp/t/355178)指出,“XP 版本的 IE 8 只支持 SSLv3 和 TLS 1.0 的 Cipher Suite ,另外 nginx 自 1.9.1 开始默认不会开启 SSLv3”。因此,为了让服务器支持像IE8/XP这类客户端,就不得不重新编译Nginx,在其中加入支持3DES的参数。

编译安装Nginx

依赖工具/库
dev@ubuntu:~$ sudo apt-get install build-essential libpcre3 libpcre3-dev zlib1g-dev unzip git
下载Nginx
dev@ubuntu:~$ wget -c https://nginx.org/download/nginx-1.12.2.tar.gz
dev@ubuntu:~$ tar zxf nginx-1.12.2.tar.gz
查看openSSL版本

本机的openSSL是否支持3DES算法并不影响Nginx是否支持3DES,Nginx是否支持只与它编译时所使用的openSSL版本有关,从上面的讨论中可以知道当前版本的Nginx默认是不支持3DES算法的。而openSSL 1.1.0 以上版本默认不支持也3DES加密。

dev@ubuntu:~$ openssl version
查看openssl是否支持 3DES加密
dev@ubuntu:~$ openssl ciphers -v "3DES" 
下载openssl源

此处的openSSL源码只是为了用来编译Nginx,跟已经安装在本机上的openSSL没有任何关系。

dev@ubuntu:~$  wget -O openssl.zip -c https://github.com/openssl/openssl/archive/OpenSSL_1_0_1f.zip
dev@ubuntu:~$  unzip openssl.zip
dev@ubuntu:~$  mv openssl-OpenSSL_1_0_1f/ openssl
编译安装Nginx

其中--with-openssl指向openssl源文件 --with-http_ssl_module指明支持ssl 参数--with-openssl-opt指明openssl的选项,其中若要兼容IE8则要添加'enable-weak-ssl-ciphers'。其它的参数可按需配置。
(--with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' 这两个参数添加之后有时候会报错)

dev@ubuntu:~$   cd nginx-1.12.2
dev@ubuntu:~/nginx-1.12.2$  ./configure --with-openssl=../openssl --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module  --with-openssl-opt='enable-weak-ssl-ciphers' --with-http_ssl_module
dev@ubuntu:~/nginx-1.12.2$  make
dev@ubuntu:~/nginx-1.12.2$  sudo make install
配置Nginx

下面是Nginx关于SSL/TLS的相关配置。

server {
    listen      443 ssl;
    proxy_set_header X-Real-IP $remote_addr;
    server_name a.example.com;
    ssl_certificate /etc/nginx/cert/cert.pem;
    ssl_certificate_key /etc/nginx/cert/cert.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers EECDH+CHACHA20-draft:EECDH+CHACHA20:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    root        /home/www/html;
    index index.html index.htm;
    location /api {
        proxy_pass http://localhost:8000;
    }
}
                    

参考

https://imququ.com/post/troubleshooting-https.html
https://www.centos.bz/2017/08/nginx-enable-tls-1-3/
https://dyn.im/2016/09/14/21/
https://www.feistyduck.com/library/openssl%2dcookbook/online/
https://www.ssllabs.com/ssltest/analyze.html

转载于:https://www.cnblogs.com/zhangjpn/p/8463674.html

解决ie低版本浏览器引入ie-css3.htc无效或资源加载404问题。 公司项目需求兼容ie8 那么在ie8对c3的样式不是很友好,所以需要引入ie-css3.htc。 1.绝对路径的方法使用 在使用的过程中 发现网上说把htc写成绝对路径就可以成功找到所以我试了一下。 如果要使用绝路路径,那么你的项目也是从文件夹打开的才可以,如果是用服务起项目就会404. 也就是浏览器地址F:\itemPackage\web_terminal\assets\page\index.... 阅读详情

相关推荐

Vue咖啡店点单前端资源包:含多套CSS/JS兼容文件、商品图与可直接部署的HTML

一套开箱即用的咖啡店在线点单前端资源,基于Vue.js构建,包含index.html入口页、完整CSS样式文件(如app.54197226.css、chunk-vendors.f9e5f3db.css等共16个CSS)、适配现代浏览器与旧版IE的双版本JS(带-legacy后缀的兼容包及对应非legacy文件)、以及多张咖啡商品图片(如23.2fb4fef3.jpg、12.ff29788c.jpg等)。所有资源已通过Vue CLI构建为生产环境静态文件,支持路由懒加载和静态资源内联优化。无需后端服务即可本地

threejs5artist的博客 248

在Nginx服务器中做IE8兼容性配置

前言 目前,微软的官方网站已经有了详细的脚本,来指导用户对IIS和Apache做配置,实现IE8兼容,但是对其他的主流服务器则没有做更多介绍,由于工作需要,我这边在工作的时候,做了一些其他服务器中配置的办法。Nginx服务器到目前为止,差不多占据了服务器市场的10%的市场份额,而中国区也差不多有250万的网站用户,所以有必要讲讲如何去配置兼容性。 本文主要是介绍在Nginx服务器中的...

weixin_30929195的博客 608

nginx-1.8.0

ngix-1.8.0下载,windows版本,使用方法:解压该文件夹,进入config文件下的nginx.conf,将其中的tomcat端口更改为目前正在使用的tomcat端口,location改为目前项目的html项目路径即可

关于linux上安装nginx服务器,win10中IE不能访问,谷歌可以访问的问题

前面我在centos中安装nginx服务器后后,在用win10访问时出现一个问题: Win10中的Edge浏览器无法访问nginx,而谷歌可以访问nginx。 java代码中利用工具类访问nginx时出现time out 连接超时。 首先我查看了下nginx日志文件,在日志文件中,只有谷歌浏览器访问成功的日志记录,而没有Edge浏览器和java代码访问失败的日志记录。

qq_20565303的专栏 2282

达梦数据库JDBC连接池断开自动重连设置

一、场景 在网络状况不是非常良好,经常会出现暂时性的拥塞或者断开的情况,而且当我们重启数据库时也会发生类似的情况。所以需要配置中间件的连接池来实现连接测试以及自动重连,通过重新配置连接池,成功解决了这个问题。下面会给出一份数据源配置参数详单和一份推荐的数据源配置项。 二、连接池配置参数 1. initialSize:连接池启动时创建的初始化连接数量 2. maxActive:连接池中可同时连接的最大的连接数 3. maxIdle:连接池中最大的空闲的连接数,超过的空闲连接将被释放,如果设置为负

lilv1989的博客 7235

Cadence——原理图相关教程

包含创建文件,原理图,元器件,规则检查,PDF与BOM清单输出,各类PCB网表

haonanyayaya的博客 1万+

html判断来路域名,nginx判断来路域名,跳转,解决ie不支持记录referer跳转问题

摘要:本文档实现功能:用户访问a.com,a网站自动跳转到b网站(b.com),b网站nginx服务器判断来路域名http-referer值如果是a.com,就跳转b.com/cs.html到c网站(c.com),否则访问访问b.com主页。配置如下:首先a网站配置(a.com):index.html内容文件如下:var url='http://b.com';function goto2(){if...

weixin_39577289的博客 1331

U盘文件变exe?3步教你用火绒+批处理脚本恢复隐藏文档(附注册表修复)

本文详细解析了U盘文件被病毒隐藏并伪装成exe文件的原理,并提供了三步解决方案:首先使用火绒安全软件进行全盘查杀清除病毒;其次通过批处理脚本批量恢复被隐藏的文件属性;最后修复被篡改的注册表设置,彻底解决文件无法显示的问题,帮助用户安全找回数据并加固系统防护。

weixin_28622215的博客 917

nginx-1.22.0安装配置最全教程

Nginx-1.22.0安装教程

qq_36401705的博客 1万+

Crawl4AI实战:5分钟搞定电商价格监控爬虫(附Python代码)

本文详细介绍了如何利用开源AI网络爬虫框架Crawl4AI快速构建电商价格监控系统。通过Python实战代码,展示了从环境配置、智能内容提取到多平台适配、定时任务与数据可视化的完整流程,帮助运营人员和技术开发者高效实现自动化价格追踪与竞品分析。

weixin_29090917的博客 414

SpringBoot Actuator未授权访问漏洞实战:从发现到利用

本文深入剖析了SpringBoot Actuator未授权访问漏洞的成因、危害与利用手法。文章详细演示了如何发现暴露的端点,并通过实战案例复现了从敏感信息泄露到利用反序列化漏洞实现远程代码执行(RCE)的全过程,为开发与运维人员提供了从漏洞发现到修复加固的完整安全指南。

weixin_29231221的博客 260

nginx做负载均衡,IE浏览器访问到静态资源,但页面图片显示不出来

今天做了用nginx负载均衡一个项目,搭建了两台服务器! nginx.conf配置文件如下: #user nobody; worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout

JAVA大猩猩的博客 1275

element的el-cascader组件动态加载,以及报错处理问题

Blocked aria-hidden on an element because its descendant retained focus. The focus must not be hidden from assistive technology users. 报错处理

weixin_56527169的博客 1263

MooTool Compose 版 HTTP 响应查找“无匹配”反馈:DIFF-290 的实现原理与 Electron 对齐机制

本指南聚焦 MooTool 的 Kotlin Compose 桌面实现(`next-compose`)在 HTTP 工具响应查找条上补齐「无匹配」反馈的改动(DIFF-290),讲解它如何对齐 Electron 版 `HttpTool.findAround` 的 `toast.info(findReplace.noMatches)` 行为、为什么查找条在 `matches` 为空时依然允许点击按钮

gitblog_00628的博客 789

29. 如何通过 ABAP 代码给 SAP OData 元数据增添注解

我们先看下效果,在 MPC_EXT 类的 DEFINE 方法里编写 ABAP 代码之后,用 Postman 使用 url 访问 OData metadata,在返回的数据里,能看到我们用 ABAP 代码添加的自定义注解。你好,请问可以不可以在odata里面通过什么设置,从而自动给metadata.xml中加上注解,实现value help的功能,还是说每次需要在metadata.xml中修改?的词汇引用,然后为命名空间 com.sap.vocabularies.UI.v1 声明了一个别名。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1660

【局部路径规划模块地图算法】基于势场地图的VFH、VFH+、VFH*算法(附C++代码)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对基于地图的方法–VFH、VFH+、VFH*算法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 1686

IE踩坑之《提交到Nginx的UA和js获取的UA值不同》

ie真的是各种不兼容,尤其是到了ie7 ie8这样的远古神兽

HumorChen的博客 517

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Nginx】在Windows下使用Nginx解决前端跨域问题

提出问题:因为一些历史原因,后台代码不能动。请求别人的接口拿数据显示在前端,怎么办呢? 分析问题:通过ajax请求。 解决问题:因为浏览器的同源策略,所以需要解决跨域问题。(同源策略:请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名、端口、协议相同。) 带着问题出发:使用Nginx做反向代理解决跨域问题 1.Nginx下载地址:http://nginx.org/en...

weixin_30938149的博客 492

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

nginx在windows虚拟机的安装及常用命令

项目需要兼容ie8浏览器,在win10环境无法安装。所以安装了win7系统的虚拟机,自带ie8浏览器。 基本特性: Nginx (“engine x”) 是一个开源的,支持高性能、高并发的 Web 服务和代理服务软件。它是由俄罗斯人 Igor Sysoev 开发的,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。 最初被应用在俄罗斯的大型网站 www.rambler.ru ...

weixin_44249754的博客 478

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

asp.net如何结合前端实现视频大文件分块上传?

经技术委员会论证,决定采用。

weixin_52050572的博客 815

芯片制造行业如何通过JavaWeb解析半导体测试数据分片下载的信创兼容方案?

兼容性:从IE8到现代浏览器的全面支持大文件处理:20GB文件的分片、断点续传文件夹上传:保留层级结构的复杂处理加密:传输和存储的双重加密性能:大文件的高效处理可靠性:断点续传和进度保存使用简化版加密算法(实际项目不安全)IE8的文件夹上传需要用户手动输入路径部分功能在IE8下体验降级完整代码已经准备好,但由于篇幅限制无法全部展示。欢迎加入我们的QQ群(374992201)获取完整代码和部署文档。群里还有更多资源分享和项目合作机会!记住,程序员的头发是有限的,但知识是无限的。

2501_90646763的博客 162

ASP.NET MVC如何设计大文件上传的交互界面?

经技术委员会论证,决定采用。

2501_90646763的博客 862

HTML页面如何通过插件实现视频文件的分片上传?

经技术委员会论证,决定采用。

2501_90646763的博客 1051

浅谈X-UA-Compatible

X-UA-Compatible

qq_50424796的博客 771

告别IE!AutoVue ClientServer 21.0 在Chrome/Edge中查看三维模型的完整配置指南

本文提供AutoVue ClientServer 21.0在现代浏览器(如Chrome、Edge)中查看三维模型的完整配置指南,解决传统IE依赖问题。涵盖服务器配置、浏览器调优及PLM系统集成,助力企业实现高效三维文件协作与数字化转型。

weixin_30546189的博客 209

银行系统中ASP.NET大文件上传解决方案中如何加入文件夹断点续传?

经技术委员会论证,决定采用。

weixin_52050572的博客 272
上一篇: Express定制参数解析错误响应值
下一篇: pm2笔记
dinght2000
博客等级 码龄11年 3粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值