iOS中https的网络请求的配置

版权声明:Coder Bruce https://blog.csdn.net/bruceyou1990/article/details/51308485

一.HTTPS概括

点击阅读更多iOS开发技能

HTTPS: HTTPS(Secure Hypertext Transfer Protocol)安全 超文本传输协议 ,它是一个安全通信通道,HTTPS经由 超文字传输协议(HTTP) 进行通信,但利用SSL/TLS來加密封包。HTTPS开发的主要目的,是提供对网路伺服器的身分认证,保护交换资料的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到网际网路上。简单来说它是HTTP+SLL/TSL安全版。

HTTP与HTTPS的比较

比较 http https
端口 80 443
协议 超文本传输协议(明文传输) HTTP+SSL(SSL使用40位关键字作为RC4流加密算法)
证书 需要到ca申请证书

CA证书的介绍 点击阅读

二.HTTPS的实质

  1. 信任主机的问题.
    采用https 的server(服务器) 必须从CA 申请一个用于证明服务器用途类型的证书. 所以目前所有的银行系统网站,关键部分应用都是https 的. 客户通过信任该证书,从而信任了该主机. 其实这样做效率很低,但是银行更侧重安全. 这一点对我们没有任何意义,我们的server ,采用的证书不管自己issue(问题) 还是从公众的地方issue, 客户端都是自己人,所以我们也就肯定信任该server.
  2. 通讯过程中的数据的泄密和被窜改
    一般意义上的https, 就是 server 有一个证书,主要目的是保证server是目标服务器,服务端和客户端之间的所有通讯,都是加密的。

三.iOS开发中如果实现https的请求

我推荐一篇写的比较好的iOS中如果配置https请求的方式

我推荐一篇写的比较好的iOS中如果配置https请求的方式

我推荐一篇写的比较好的iOS中如果配置https请求的方式

接下来这3句话很重要
3. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥. 一般意义上的握手过程.
3. https所有的信息往来就都是加密的. 第三方即使截获,也没有任何意义.因为他没有密钥(钥匙串)

  1. (记住这里)少许对客户端有要求的情况下,会要求客户端也必须有一个证书.【这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个CA 认证过的身份. 这样能够更安全的确认自己的身份。比如少数个人银的具体证书可能是拿U盘作为一个备份的载体.这里的U盾就是CA 验证过的身份

**接下来作为拓展可以不做了解


HTTPS 的实现
1.http协议,一个get(获取)一个response(返回). 由于https 要还密钥和确认加密算法的需要.单握手就需要6/7 个往返.过多的round trip(巡回) 肯定影响性能.

2.具体的http协议,每一次响应或者请求, 都要求客户端和服务端对会话的内容做加密/解密.尽管对称加密/解密效率比较高,可是仍然要消耗过多的CPU,为此有专门的SSL 芯片. 如果CPU 信能比较低的话,肯定会降低性能,从而不能serve 更多的请求.加密后数据量的影响. 所以,才会出现那么多的安全认证提示。

补充附录:

说道安全机制 不得不说说钥匙串(密钥=密码钥匙)
公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。
通过算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。(比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功)
一把私有的钥匙,仅有用户才拥有。
一把公开的钥匙,可公开发行配送,只要有要求即取得。

点击阅读更多iOS开发技能
小龙哥的技术博客

猜你喜欢

转载自blog.csdn.net/bruceyou1990/article/details/51308485
今日推荐