iOS AFNetworking适配HTTPS原理简述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenglei9128/article/details/54407259

序言

请大家在看这篇文章之前最好先看一下AFNetworking之于https认证,看完之后也许你就不需要看此文章了。
最近在搞iOS的HTTPS的单向验证配置,关于HTTPS的是什么,以及HTTPS与HTTP的区别在这里不再过多阐述,网上已经有了海量的资源。在这里只是简单的阐述一下AFNetworking校验SSL证书的原理。

1.‘正经’证书

因为我们公司是用的所谓的‘正经证书’,即CA颁发的证书,一般是从第三方公司进行购买,然后由第三方公司向CA进行签名,据说是比较贵,而且我们公司买的是以*开头的,啧啧啧,那估计是更贵了。
像这种证书我们在AFN中是不需要额外设置什么的,因为数字证书认证机构也就是CA签署和管理的CA根证书,会被纳入到你的浏览器和操作系统的可信证书列表中,当客户端进行HTTPS站点访问时,服务器会返回整个证书链,客户端通过验证证书链到根证书通过纳入到浏览器和操作系统的可信证书列表进行判断是否可信。所以说当我们在AFNetworking中设置AFSecurityPolicy * securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];实际上AFNetworking在代码中已经帮我们实现了关于证书可信性的校验。

提别注意,网上很多资源说要导入cer,其实如果你们不需要特别安全来说,不要在本地导入cer,直接默认不验证域名即可,但如果考虑到中间劫持,你们导入也不是不可以,但是一定要注意证书的有效期,如果时间短的话,建议只校验域名即可,不要校验有效期。

好了,也差不多了,还一大堆活等着我,建议大家有时间,可以看看我下面的几篇参考文章,读完绝壁有很大领悟。

2. ‘非正经’证书

非正经证书也就是自建证书,这样的话,貌似你必须在本地导入cer文件来进行证书可信性的校验,因为自建证书也就是根证书并没有保存在浏览器的可信证书列表中,所以你需要通过本地导入cer文件从而将其加入你的可信证书列表中,然后进行可信性的校验。

结尾

如果有想了解HTTPS单双向验证的原理,可以参考Https单向认证和双向认证这篇博客,如果有iOS的同学想处理iOS端的双向认证,参考https双向认证 iOS客户端处理这篇博客。

参考文章

iOS 中对 HTTPS 证书链的验证
正确使用AFNetworking的SSL保证网络安全

猜你喜欢

转载自blog.csdn.net/chenglei9128/article/details/54407259
今日推荐