一.HTTPS概括
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申请证书 |
二.HTTPS的实质
- 信任主机的问题.
采用https 的server(服务器) 必须从CA 申请一个用于证明服务器用途类型的证书. 所以目前所有的银行系统网站,关键部分应用都是https 的. 客户通过信任该证书,从而信任了该主机. 其实这样做效率很低,但是银行更侧重安全. 这一点对我们没有任何意义,我们的server ,采用的证书不管自己issue(问题) 还是从公众的地方issue, 客户端都是自己人,所以我们也就肯定信任该server. - 通讯过程中的数据的泄密和被窜改
一般意义上的https, 就是 server 有一个证书,主要目的是保证server是目标服务器,服务端和客户端之间的所有通讯,都是加密的。
三.iOS开发中如果实现https的请求
我推荐一篇写的比较好的iOS中如果配置https请求的方式
我推荐一篇写的比较好的iOS中如果配置https请求的方式
我推荐一篇写的比较好的iOS中如果配置https请求的方式
接下来这3句话很重要
3. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥. 一般意义上的握手过程.
3. https所有的信息往来就都是加密的. 第三方即使截获,也没有任何意义.因为他没有密钥(钥匙串)
- (记住这里)少许对客户端有要求的情况下,会要求客户端也必须有一个证书.【这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个CA 认证过的身份. 这样能够更安全的确认自己的身份。比如少数个人银的具体证书可能是拿U盘作为一个备份的载体.这里的U盾就是CA 验证过的身份】
**接下来作为拓展可以不做了解
HTTPS 的实现
1.http协议,一个get(获取)一个response(返回). 由于https 要还密钥和确认加密算法的需要.单握手就需要6/7 个往返.过多的round trip(巡回) 肯定影响性能.
2.具体的http协议,每一次响应或者请求, 都要求客户端和服务端对会话的内容做加密/解密.尽管对称加密/解密效率比较高,可是仍然要消耗过多的CPU,为此有专门的SSL 芯片. 如果CPU 信能比较低的话,肯定会降低性能,从而不能serve 更多的请求.加密后数据量的影响. 所以,才会出现那么多的安全认证提示。
补充附录:
说道安全机制 不得不说说钥匙串(密钥=密码钥匙)
公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。
通过算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。(比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功)
一把私有的钥匙,仅有用户才拥有。
一把公开的钥匙,可公开发行配送,只要有要求即取得。