就是在不断的踩坑1——HTTPS踩坑记

写在前面,因为是踩坑记,所以基本上是按着自己遇到的坑写上去的,没有整理,可能嫌的很乱,写下来只是为了加深下印象。

之前以为自己是懂https的,但是这两天折腾了一下后,发现都是止于表面。所以记录一下这两天踩过的坑。

首先,之前的服务器其实就已经是支持https的了,然后当时苹果刚推出ATS的时候,浏览了相关教程,错误的理解到如果服务器购买了https证书,就等于支持了https,然后app端就不需要做任何适配的工作,苹果做好了一切。又同时一直以来,app都能正常跟后台打交道,所以认为这个错误的理解是正确的,就没管了。直到昨天,服务器证书过期,并且从之前的绑定域名转到直接绑定IP访问,就出现了一系列的踩坑,填坑过程了。。。

服务器证书过期,但是app还能正常请求接口,只是不能访问图片,视频等资源,查证之后发现,原来工程plist里面一直都把NSAllowsArbitraryLoads设置为YES,禁用ATS了。没多久,服务器部署新证书后,把NSAllowsArbitraryLoads设置为NO,打开app,没想到竟一直报SSL验证错误,突然想死的心都有了。然后把报错信息贴到度娘,看了半天发现都还是千篇一律的说把policy的允许自签证书设为YES等等。因为之前对https的理解都是止于表面,所以没想太多,把代码复制上去,还是失败。心想不行,还是重头认识下https吧。

第一时间想到了陈宜龙大神写的一篇ios9网络适配_ats改用更安全的https,马上开撸,经历了之前的挖坑,心烦带意燥,第一遍没看太细,没得到答案,然后又分心找度娘了,后来再看第二遍,发现漏掉了很重要的东西,而且也是文章多次提到的东西“forward secrecy协议”,开始以为这是购买https证书自带的,所以没留意,后来度娘了一下,发现这也得后台配置,后台不配置的话,plist文件得声明暂不支持这个协议,果不其然,按文章步骤配置之后,app正常访问了。文章里面提到

nscurl --verbose --ats-diagnostics https://#your server name

这句命令可以查看服务器是否符文ATS标准,会返回不同ATS配置下请求https的结果,可以按照这个返回结果配置项目的plist。

横向开拓,度娘了一下“forward secrecy协议”,大概意思是即便服务器私钥丢了,也不会泄漏之前用私钥加密得到会话密钥来加密的数据,称之为向前保密协议。

然后再次横向开拓,度娘了下中间人攻击,就是两个主机发起通信,被中间人截获,中间人就可以伪造信息,或者监听双方信息,信息就泄漏了。同时也提到了发起中间人攻击很重要的一个步骤就是ARP欺骗。

横向开拓,度娘了ARP协议,(Address Resolution Protocol,地址解析协议)是根据IP地址获取物理地址的一个TCP/IP协议,主机发送信息时,将包含目标地址的IP地址的ARP请求广播到局域网中,局域网中的主机接收到ARP请求匹配自己的IP地址,如果匹配不成功就丢弃,如果匹配成功,就保存源主机的IP地址和MAC地址到本地ARP缓存中,并返回一个包含本机MAC地址的响应给源主机,源主机也把目标主机的MAC地址缓存到本地的ARP缓存中,下次发送信息时,就可以直接从缓存读取。因为OSI模型把网络工作分为7层,IP地址在第三层网络层,MAC地址在第二层数据链路层,所以需要把IP解析成MAC地址,才能顺利执行网络访问。

那ARP欺骗呢,因为主机把ARP请求广播到局域网的时候,任何主机都可以响应,并且源主机并不会验证响应的主机是否为目的主机,所以就出现ARP欺骗了。源主机信任了伪造的主机,伪造的主机就可以发起中间人攻击了。

防止ARP欺骗,提到了IP地址跟MAC地址静态绑定,启用ARP防火墙,查看ARP缓存是否正常等等。

那防止中间人攻击呢?就是https的作用了。https采用非对称加密,提供一个私钥和公钥??突Ф朔梦逝渲胔ttps的服务器时,服务器会返回公钥,然后客户端把请求的数据列表和一个对称加密的密钥使用公钥加密传到服务器,服务器利用私钥解密得到数据和对称加密的密钥把数据使用对称加密返回给客户端,客户端解密得到数据,完成交互。因为中间人不知道私钥,所以即便拦截到请求也不能解密。其中也涉及到数字签名的概念,如果中间人伪装了证书,返回了一个假的证书并跟客户端说,这是服务器的安全证书,请用这个公钥匙加密,欢迎享用??突Ф诵湃瘟撕?,数据也还是会发给到这个中间人的服务器,中间人也采用同样的措施跟服务器打交道,就还是GG了。所以数字签名的目的就是创建一个权威的标记,贴到安全证书上“这个证书得到ynot的认证,是安全的”,客户端才会信任,颁发这个数字签名的机构就是CA,根CA可以认证子CA,子CA也可以颁发数字签名,有了CA的认证,第三方就不能伪造证书了。最坏的结果就是如果CA机构因为自己掌握的权力而伪造证书,那么这就是TLS的中间人攻击了。

手里掌握权力的人,只有道德能够防止他做坏事

这里有一个有趣的例子,可能有助于理解。什么是 TLS 中间人攻击?如何防范这类攻击?

经过这两天挖坑,我的理解是,https所做的,或者网络安全所做的就是通过一系列验证,确保通信双方我是我,你是你之后,才进行进一步的数据传输。PS:最近好长一段时间断断续续在做Jenkins的CI,也是踩了好多坑,等完成之后,再总结一篇。

最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容