网站首页 > 技术教程 正文
1、问题说明
前几天运维同事反馈开发同事代码在Windows 2008 R2 Datacenter服务器上运行DotNet Framework程序出现无法正常建立SSL/TLS连接的情况,在自己的电脑上运行是OK的,代码也没有改过。于是木子问他改了服务器上什么配置没有,他说改了注册表也不行。接过这个坑,心里万马奔腾,没事改注册表,这还能够回滚吗?这坑还可以越得过去吗?连忙问了一下,改注册表有记录吗?他说还在服务器桌面上,松了一口气,还可以回滚(后来回滚操作的时候发现他是直接从网上COPY的别人写的注册表文件,COPY过来的是乱码的,所以实际导入的都是错的……)。先根据对应注册表修改文件改回了注册表配置,重启服务器。
再通过DotNet Framework代码测试接口出现以下错误:
时间:2020-03-23 12:07:44 执行开始。。。
时间:2020-03-23 12:07:44 接口出现异常WebException:
Response报文:请求被中止: 未能创建 SSL/TLS 安全通道。
时间:2020-03-23 12:07:44 执行结束。。。
时间:2020-03-23 12:07:44 总耗时:428毫秒
2、排查错误
于是写了一个Python脚本测试了一把是正常的,又通过Chrome浏览器访问接口也可以正常响应,但使用DotNet Framework写的代码就是不行。于是Google了一下,希望能够尽快解决问题,回复基本上都是修改DotNet代码,添加对于4.0对TLS1.2的支持,还有就是改注册表,开启TLS1.2的支持。前者我觉得是有可能的,根据微软官方信息显示DotNet Framework 4.0需要手动配置TLS1.2的支持才能够响应TLS1.2。于是加了以下代码:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 |(SecurityProtocolType)768 | (SecurityProtocolType)3072;
测试OK,OK问题解决了?找了另一台服务器一测试,还是不行。怎么可能一台服务器可以,另一台不行了?没有道理啊。本以为这个问题就这么简单就解决了,但实际结果并非如此,查看日志还是一样的报错Response报文:请求被中止: 未能创建 SSL/TLS 安全通道。看来只能够通过抓包解决问题了,于是分别在行与不行的服务器上安装了Wireshark,进行抓包分析。先在正常服务器上抓包,从下图可以看到,是很正常的。
而在非正常的服务器上抓包,报错(因为在测试过程中,没有保存抓包数据,只记录了报错关键字):
Level: Fatal, Description: HandShake Failure
一般来说,这种错误是因为加密套件不匹配造成的,所以开始比较两台服务器之间加密套件的区别。
#因为没有截图保存,只导出了Cipher Suites进行比较,发现正常的服务器支持28种Cipher Suites,而非正常的服务器只支持21种Cipher Suites,相差7种Cipher Suites。
#非正常服务器
Cipher Suites (21 suites)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)
Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 (0x0040)
Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)
Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 (0x006a)
Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038)
Cipher Suite: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)
Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004)
#正常服务器
Cipher Suites (28 suites)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x009f)
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e)
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)
Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d)
Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 (0x006a)
Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 (0x0040)
Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038)
Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)
Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)
Cipher Suite: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)
Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)
Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004)
再仔细查看了一下正常响应的服务器,在发送Server Hello时使用的加密套件(Cipher Suite)是:TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
而非正常的服务器响应的是:TLS 1.2 Alert(Level: Fatal, Description:Handshake failure),从这里就可以很清楚的看到原因了,是因为客户端不支持Cipher Suite:TLS_DHE_RSA_WITH_AES_256_GCM_SHA384造成的,所以HTTPS请求连接建立才会失败。
3、解决问题
找到问题,解决问题就简单了,Windows IIS Cipher Suites问题,我们可以通过IIS Crypto工具进行解决。下载工具IIS Crypto,然后查看当前服务器的加密套件:
我们会发现在这里面并没有证书支持的加密套件,于是我手动添加了证书所支持的加密套件,重启服务器。
再请求对接接口,现在可以正常获取数据了。
时间:2020-03-23 14:55:30 执行开始。。。
时间:2020-03-23 14:55:45 {
"current_page": 1,
"data": [
{
"id": xxx,
"PID": "xxxx",
"totalCount": "0"
},
正常响应抓包:
至此,这个问题就解决了。
- 上一篇: (鲜货分享)让你爆赚的TLS趋势交易法则
- 下一篇: 大话Https协议,弄清http、SSL、TLS
猜你喜欢
- 2024-10-11 Deno 是面向代码的浏览器? 360安全浏览器f12不弹出调试代码
- 2024-10-11 我用 Rust 编程的这两年 rust 界面编程
- 2024-10-11 开源鸿蒙OpenHarmony 5.0.0 Release发布
- 2024-10-11 SSL\TLS中间人攻击 https能避免中间人攻击
- 2024-10-11 一文读懂 HTTP/1、HTTP/2、HTTP/3
- 2024-10-11 群晖 Synology 发布 NAS 系统 DSM 7.0 正式版本
- 2024-10-11 《皇牌空战7:未知空域》第一弹DLC今日上线!预告赏
- 2024-10-11 HTTPS 温故知新(三)——直观感受 TLS 握手流程(中)
- 2024-10-11 超实用压力测试工具-ab工具 ab 压测工具
- 2024-10-11 HTTPS 温故知新(五)——TLS 中的密钥计算
你 发表评论:
欢迎- 05-14喜报!双色球5注824万头奖花落辽宁等地,开奖情况一览
- 05-14双色球新一期前瞻:红球蓝球走势深度剖析,精选号码提前看
- 05-1449倍、33倍、30倍、15倍!双色球第25053期开奖:多张倍投票集结
- 05-14双色球25054期:红球:04、05、15、18、29、33 蓝球:05、08
- 05-14厉害了!495倍独蓝票、万元独蓝票双双报喜!双色球第25053期开奖
- 05-14双色球25054期!龙头02凤尾31,独蓝14稳中,连号20-21围剿奖池!
- 05-14双色球25054期参考:蓝球侧重选2路蓝,红球依然三金胆、重号先
- 05-14双色球25054期:独蓝04,头01尾30,连号15-16,6+1精选
- 最近发表
-
- 喜报!双色球5注824万头奖花落辽宁等地,开奖情况一览
- 双色球新一期前瞻:红球蓝球走势深度剖析,精选号码提前看
- 49倍、33倍、30倍、15倍!双色球第25053期开奖:多张倍投票集结
- 双色球25054期:红球:04、05、15、18、29、33 蓝球:05、08
- 厉害了!495倍独蓝票、万元独蓝票双双报喜!双色球第25053期开奖
- 双色球25054期!龙头02凤尾31,独蓝14稳中,连号20-21围剿奖池!
- 双色球25054期参考:蓝球侧重选2路蓝,红球依然三金胆、重号先
- 双色球25054期:独蓝04,头01尾30,连号15-16,6+1精选
- 一号之差!井喷1416注,5注一等奖,100注二等,双色球25053开奖
- 双色球25054期:1、5尾,头单,尾双,斜连三码,胆11、12、27
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)