Android 关于 https SSL handshake aborted 问题查找

记录这个问题的定位过程和问题定位的方法

1、问题描述:

项目改为使用 https 协议,访问时发现返回错误代码:
域名:https://sandbox.api.xxx.com
错误:SSL handshake aborted: ssl=0x5ef8e720: I/O error during system call, Connection reset by peer

错误描述:https 在使用 ssl 时候 handshake aborted(握手失败),导致tcp连接被reset了。那么发生这个原因有哪些呢?

2、搜索问题关键字查找解决办法:

stackoverflow.com 上的原因解释:点击链接 stackoverflow

3、可能存在的问题分析及排除

SSL 的协议问题?

如: Android 系统版本不一样对使用SSL 时候支持使用的协议版本(TLS1.1 TLS1.2等)是不一样的
点击查看SSLSocket 说明

Protocols Client socket
Protocol Supported (API Levels) Enabled by default (API Levels)
SSLv3 1+ 1+
TLSv1 1+ 1+
TLSv1.1 16+ 20+
TLSv1.2 16+ 20+

Server socket:

Protocol Supported (API Levels) Enabled by default (API Levels)
SSLv3 1+ 1–22
TLSv1 1+ 1+
TLSv1.1 16+ 16+
TLSv1.2 16+ 16+

* 端口问题?

4、辅助定位方法:

通过抓包协助服务端分析最后发现是服务端 Nagix

(1)抓包分析过程

Android tcp dump 抓包分析

命令备忘:

/data/local/tcpdump -p -vv -s 0 -w /sdcard/ThinkDrive.pcap

pull ThinkDrive.pcap 文件到电脑使用 Wireshark 分析,(我这个问题分析发现,户端发送 Client Hello 服务端没有返回 Clinet Hello 和 public key 所以是服务端处理有问题

(2)如何修改host等文件信息辅助服务端(运维)调试

Unable to chmod ***: Read-only file system问题的解决方法

  • 1.ROOT你的手机
  • 2.用adb shell登录后,用su root切换到root用户,切换后显示 # 号,表示切换成功
  • 3.用mount命令重新加载文件系统:mount -o rw,remount yaffs2 /system

注意:

hosts文件格式的问题 ,如果编码格式不对可能导致hosts失效,推荐在Android 上直接用 echo "ip domain" >> /system/ects/hosts 的方式。


LAST: 发现是运维配置nginx 中在协商SSL对称加密算法时出了问题。

更多相关文章

  1. 编写android jni代码时遇到的问题
  2. Android的一些小问题处理
  3. 解决:Failed to fectch URl https://dl-ssl.google.com/android/r
  4. Android兼容性测试GTS-环境搭建、测试执行、结果分析
  5. Android权限问题 及 APP应用图标
  6. 关于Android环境配置SDK的问题Failed to fetch URL http://dl-ss
  7. Android(安卓)wakeLock 分析
  8. Android(安卓)Battery 分析
  9. 彻底解决Android(安卓)应用方法数不能超过65K的问题

随机推荐

  1. Android(安卓)手势 正则匹配图片
  2. android 仿QQ登陆界面实现
  3. android 读取电话本,并加载到list相关
  4. Android Studio 常用插件收集
  5. 生成android apikey
  6. Android深入浅出系列课程---Lesson6 AAF1
  7. (Android)处理图片成圆形
  8. Mac 10.12 编译 Android 源码
  9. android 设置Button或者ImageButton的背
  10. 用Flex开发移动应用(1)---- 创建一个新的Mo