关于HTTPS的iOS应该做的事

苹果官方最新消息:原定于2017.1.1强制的https被延期了,但是具体到什么时候不确定,等官方通知:

关于HTTPS的iOS应该做的事_第1张图片
官方通知

但是https我们势在必行,那么真正需要我们做的到底是什么呢?一般分为两种情况:

1.如果我们用的是付费的公信机构颁发的证书,标准的https,那么无论我们的客户端用的是AFN或者原生的NSUrlSession,我们什么都不用做,代理方法也不用实现,网络请求就能正常完成。

2.如果我们用的是自签名的证书:

    * 首先需要在plist文件中,设置可以返回不安全的请求(关闭该域名的ATS)。

    * 其次,如果我们使用的是NSUrlSession,那么需要我们在代理方法实现:


关于HTTPS的iOS应该做的事_第2张图片

如果是AFN,则需要设置policy:


关于HTTPS的iOS应该做的事_第3张图片

把证书倒进工程之后在AFN里设置


总结一下https的验证流程:

就是用户发起请求,服务器响应后返回一个证书,证书中包含一些基本信息和公钥。

用户拿到证书后,去验证这个证书是否合法,不合法,则请求终止。

合法则生成一个随机数,作为对称加密的密钥,用服务器返回的公钥对这个随机数加密。然后返回给服务器。

服务器拿到加密后的随机数,利用私钥解密,然后再用解密后的随机数(对称密钥),把需要返回的数据加密,加密完成后数据传输给用户。

最后用户拿到加密的数据,用一开始的那个随机数(对称密钥),进行数据解密。整个过程完成。

你可能感兴趣的:(关于HTTPS的iOS应该做的事)