工作中碰到的那些坑(一)-https网络连接错误

春节长假的最后一天,pm突然微信通知客户端线上版本登录不上去了。


于是赶紧进行如下测试

step1: 在安卓高版本(6.0)上,debug、sim、release环境上客户端工作正常。

step2: 安卓4.4版本,debug、sim环境上客户端工作正常,release环境上所有接口报网络请求出错。

step3: 安卓4.4版本,release环境换成http连接,工作正常。--说明是https连接出现了问题。

step4: 找测试同学询问是否在4.4上测试过客户端的release版本,得到的答复是当时测过没有问题,而且上线后一周都没有问题。

--说明问题是服务器端的证书有变动。


复习一下基本知识点:

1. https原理:   

     浏览器先向服务器取得公钥(证书),然后用公钥加密自己的私钥连同自己私钥加密的请求一并发送给服务器。
     服务器用自己的私钥解密得到浏览器的私钥,使用浏览器的私钥解密请求。然后再用浏览器的私钥加密response发送回服务。



2. 如果连接抓包工具(charles),https网络通信过程是怎样的呢?

client发送request,被抓包工具拦截(面对client,抓包工具充当server),把自己的crt发送给client,client验证crt后发送key给抓包工具。

同时抓包工具对于server,充当client,发送request,获得服务器的crt,验证以后发送自己的key给server。

server用抓包工具的key加密response后发送给抓包工具,抓包工具用自己的key解出response,再用client的key加密response发送给client。


在找服务器端、运维的小伙伴核实的过程中,我又对心中的疑问在网上进行了查询

问题一如果是服务器的证书出问题了,为什么安卓版本6.0的工作正常?
The reason this occur is the JVM/Dalvik haven't not confidence in the CA certificates in the system or in the user certificate stores. To fix this with Retrofit, If you are used okhttp, with another client it's very similar. You've to do: A). Create a cert store contain public Key of CA. To do this you need to launch next script for *nix. You need openssl install in your machine, and download from https://www.bouncycastle.org/ the jar bcprov-jdk16-1.46.jar. Download this version not other, the version 1.5x is not compatible with android 4.0.4.
就是android会逐渐添加一些CA的颁发机构到它的信任列表里边来,如果一个CA颁发机构是新的,那么在早期版本的安卓里边可能就不认,但是在新版本里边就可以直接使用了。

 ---从这我们推断出可能的原因是服务器更新了证书,而这个证书的颁发机构在android 5.0以上的版本里边都已经被信任了,但是在4.4以下的版本里边没有被信任。

问题二为什么4.4 release环境,连接charles以后,就工作正常?

---原因同问题一。charles的信任列表里有新证书的颁发机构。


问题的解决:

1. 运维同学先验证了证书没有变动。

2. 运维同学回忆春节前后的工作,想起来release环境的域名在春节期间进行了流量清洗。关掉流量清洗以后问题就解决了。


root cause分析:

如果release环境的域名进行了流量清洗,request访问release域名时会重定向到流量清洗公司的一个网址,这个网址会有一个证书,这个证书不在4.4版本的信任列表里,所以网络连接会出现错误。

对于高版本或者charles,这个证书在信任列表里,网络连接正常,流量清洗公司探测到这不是DDoS攻击,就会把链接重定向回我们公司的域名。


参考资料:

HTTPS 理论基础及其在 Android 中的最佳实践  http://android.jobbole.com/83787/?utm_source=blog.jobbole.com&utm_medium=relatedPosts

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大数据集群搭建过程可能会遇到一些常见的问题和,以下是一些可能的情况: 1. 硬件配置不足:搭建一个稳定高效的大数据集群需要优秀的硬件基础,包括足够的存储容量、计算资源和网络带宽。如果硬件配置不足,可能会导致性能瓶颈和系统崩溃。 2. 网络问题:在多台服务器之间建立稳定的网络连接是集群搭建的重要环节。网络延迟、故障和带宽限制都有可能对集群性能产生负面影响。 3. 版本兼容性:大数据生态系统的各个组件通常有各自的版本要求和依赖关系。在搭建集群之前需要仔细考虑各个组件之间的版本兼容性,并选择合适的版本进行安装和配置。 4. 配置错误:集群搭建过程需要配置各个组件的参数和选项,错误的配置可能导致系统运行出现问题。对于每个组件,应该仔细阅读官方文档并参考最佳实践进行配置。 5. 安全性配置:大数据集群通常存储着海量的敏感数据,安全性配置是非常重要的一环。包括访问控制、加密传输、防火墙设置等方面的安全策略都需要考虑到。 6. 数据备份与恢复:在集群运行过程,数据备份和恢复是必不可少的。如果没有合适的备份策略,一旦数据丢失或损坏,可能会导致灾难性的后果。 7. 故障排除和监控:集群搭建完成后,需要建立相应的监控系统来实时监测集群运行状态和性能指标。故障排除也是一个常见的任务,需要快速定位问题并进行修复。 这些只是一些常见的,实际搭建过程可能还会有其他问题。在遇到问题时,及时查阅文档、参考社区经验并与其他人员进行交流是解决问题的有效途径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值