之前处理过很多ThreadX平台及安卓平台上的SSL问题。

SSL问题几乎都和握手失败有关,大致分为四种:

1.客户端没有与服务器相匹配的加密套件,以及SSL版本不匹配。

2.SSL证书错误。

3.网络链路问题。

4.其他问题。

这时使用wireshark抓取网络报文就显得很重要了,下面列出的是使用PC模拟以上问题情况的报文:

正常报文:

PC端命令:openssl s_client -connect www.sogou.com:443

    通过https://myssl.com/,已经查到118.184.170.59不支持DES-CBC3-SHA (TLS_RSA_WITH_3DES_EDE_CBC_SHA) 加密套件,此网址可以快速知晓服务端支持的各种信息。

1.客户端没有与服务器相匹配的加密套件,或者SSL版本不匹配。

可以用火狐浏览器SSL版本查看与设置来模拟服务器是否支持某个版本TLS:

https://blog.csdn.net/weixin_30396699/article/details/98960323

或者用下面类似的openssl命令来模拟SSL连接,wireshark抓取网络报文对比分析。

PC端命令:openssl s_client -cipher DES-CBC3-SHA -connect www.sogou.com:443

上图服务器的fatal警告很明显表示客户端的client hello报文有问题。

根据https://myssl.com/信息,对应加密套件不匹配。

解决方案:增加加密套件或更换版本。

2.SSL证书错误。

1)系统时间不对导致握手失败。

解决方案:本地时间同步或者修正时间。

2)服务器证书有问题。

解决方案:客户端可以不验证服务器证书,需要注意安全问题。

3)证书验证算法不支持。

解决方案:扩展相应的如SHA384摘要算法。

3.网络链路问题。

此种问题一般很好查,与服务端有很多重传报文,且最后客户端一直重传,服务端没有回复,回复包括RST、警告报文,超时之后断开连接。

4.其他问题。

前面几种是比较好查的,下面是遇到的比较个例的问题:

1) 服务器仅支持HTTP2.0导致的问题:

大家应该清楚ALPN,其实质上是TLS的扩展,为了协商应用层协议,如HTTP2.0

之前是在android4.4平台手机无法访问亚马逊的语音平台。

首先无法握手成功,经过查看源码,android4.4平台,openssl为1.0.1版本,虽然支持亚马逊的加密套件,但是framework层没有完全扩展加密套件。

故此修改方案无法完全生效:

    Android解决okhttpUtils框架无法在4.4.4以下系统访问https协议的问题

https://blog.csdn.net/weixin_30267253/article/details/72417399

需在framework层添加所需加密套件的调用。此处略。

之后握手成功,但每次HTTP请求,服务器会直接RST,对比正常报文发现ALPN字段。

解决方案: 需升级平台OpenSSL 1.0.2版本(支持ALPN)并升级支持HTTP2.0。

2)SNI不支持导致的握手失败。

Server Name Indication是 TLS 的扩展,用来解决一个服务器拥有多个域名的情况。

PC端正常命令:openssl s_client -tls1_2 -connect  partner-listing.thredup.com:443 -servername partner-listing.thredup.com

PC端模拟SNI不支持导致握手失败命令:openssl s_client -tls1_2 -connect  partner-listing.thredup.com:443

同正常访问的client hello报文做对比

正常报文:

SNI不支持:

解决方案: 支持SNI。

HTTPS SSL/TLS问题及解决方法汇总相关推荐

  1. 细读HTTPS -- SSL/TLS历史,密码学

    文章目录 细读HTTPS -- SSL/TLS历史,密码学 SSL/TLS协议历史 密码学 对称加密 分组密码模式 ECB CBC 非对称加密 消息验证代码 散列函数 数字签名 细读HTTPS – S ...

  2. ES shard unassigned的解决方法汇总

    ES shard unassigned的解决方法汇总 参考文章: (1)ES shard unassigned的解决方法汇总 (2)https://www.cnblogs.com/bonelee/p/ ...

  3. 共享打印机出错,错误代码0x00000bcb解决方法汇总

    共享打印机出错,错误代码0x00000bcb解决方法汇总 参考文章: (1)共享打印机出错,错误代码0x00000bcb解决方法汇总 (2)https://www.cnblogs.com/xknigh ...

  4. 常见小票打印机打印故障及解决方法汇总视频教程

    通过对"常见小票打印机故障及解决方法汇总视频教程"课程学习,达到以下目的:1.可以独立自主安装打印机驱动以及安装打印机硬件设备 2.可以独立自主排除常见打印机故障 学习教程 常见小 ...

  5. WebService系列之Axis Https(SSL)证书校验错误处理方法

    WebService系列之Axis Https(SSL)证书校验错误处理方法 最近在用Axis调用https的接口,抛出异常: javax.net.ssl.SSLHandshakeException: ...

  6. python-报错和解决方法汇总

    python-报错和解决方法汇总 参考文章: (1)python-报错和解决方法汇总 (2)https://www.cnblogs.com/timotong/p/9502483.html (3)htt ...

  7. 前端必备技能~H5网页无法转发给朋友和分享朋友圈,解决方法汇总

    H5转发给朋友和分享朋友圈,在前端经常碰到,2021年9月微信又出新政策,不允许通过微信或者浏览器访问H5页面进行转发给朋友和分享到朋友圈. 下面把最新解决方法汇总一下,分享给大家,欢迎留言讨论. 目 ...

  8. Eclipse报错解决方法汇总

    Eclipse报错一些解决方法汇总(1) 1.An invalid character [44] was present in the Cookie value 说明:ascii为44的字符是&quo ...

  9. APM(pixhawk)飞控疑难杂症解决方法汇总

    摘自:http://www.nufeichuiyun.com/?p=28 APM(pixhawk)飞控疑难杂症解决方法汇总(持续更新) by 怒飞垂云2019年11月4日 APM无法解锁/飞控连不上/ ...

最新文章

  1. GetLastError()和FormatMessage()
  2. 直播 | 彩云科技CEO袁行远:NLP与冒险游戏研究一览
  3. dataTables本地刷新数据解决只能初始化一次问题
  4. J2EE的13个规范之(二) JDBC 及其使用
  5. 架构组件:基于Shard-Jdbc分库分表,数据库扩容方案
  6. CoreData学习-最好的一片文章
  7. [3]2020-IEEE Access-Batch Active Learning With Two-Stage Sampling 论文笔记
  8. Parallels Desktop 17 亮点整理,7 大改进与变化
  9. id导出pdf失败_InDesign 导出印刷用PDF时如何设置?
  10. CSS Sprite(CSS雪碧图)
  11. 计算机科学基础word实验一,【实验2】熟悉WORD界面及其基本操作
  12. 怎么解决ZBrush保存历史记录太多问题
  13. adsl拨号服务器构建代理池
  14. SQL Injection Bypassing WAF ——from DVWA ——2012-12-8
  15. 任务管理器中的PID是什么 怎么查看
  16. 阿里云数据迁移工具解决方案:腾讯云迁移到阿里云
  17. 【黄啊码】微信朋友圈的几分钟/几小时前如何实现
  18. 年底裁员潮,这个冬天你怎样度过?
  19. 狼奔权限管理系统开源啦
  20. CVPR2019文章解读 Pyramid Feature Attention Network for Saliency detection 用于显著性检测的金字塔特征注意网络

热门文章

  1. resultset mysql_MySql——得到ResultSet的记录个数的正确方法
  2. html中未填写完提示未填写,亚马逊官方试题(开店及运营篇)
  3. Qt扫盲-QLineEdit理论总结
  4. xUtils使用详解(一)
  5. 屏幕后处理故障艺术效果
  6. R语言ETL工程系列:排序(arrange)
  7. 苹果开发者账号认证(五步超简单)
  8. 安卓ListView
  9. 网页如何与服务器连接到服务器,怎样把网页连接到云服务器上
  10. ACPI Specification 概述(基于ACPI_Spec_6_4_Jan22)