HTTPS基本原理

Xcode7上,默认采用的传输协议就是HTTPS,大家都知道HTTPS = HTTP + SSL,利用HTTPS协议传输的数据是加密的,更加安全。在此对概念性知识不再介绍。直接介绍HTTPS工作的握手原理。

在网上找到了一个网友关于HTTPS工作的流程图,感觉不错,分享该大家。如下图:

接下来,笔者将对上图7个步骤逐一解释。

第一步:客户端的浏览器向服务器发送一个HTTPS请求,这个请求是连接到服务器的443端口,因为https默认采用的端口号是443。这一步客户端的客户端向服务器传送的还有客户端SSL 协议的版本号,加密算法的种类等等其他很多信息。

第二步:采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用证书颁发机构颁发的证书则不会弹出提示页面,但是证书颁发机构提供的证书是需要缴费的,一年大概两千多人民币的样子。据我所知,12306网站的证书就不是受信任的。

第三步:上一步申请或者自己制作的这套证书其实就是一对公钥和私钥。服务器把公钥包装在证书中返回给客户端。与此同时,服务器传送的还有SSL 协议的版本号,加密算法的种类等等信息。

第四步:这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,验证内容包括颁发机构,过期时间等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果公钥验证没有问题,客户端随机产生一个用于后面通讯的随机值,这里我们叫他“对称密码”,然后用服务器的公钥(服务器的公钥从步骤三中的服务器的证书中获得)对其加密。

第五步:然后将加密后的“对称密码”传给服务器。以后客户端和服务端的通信就是使用这个“对称密码”来进行加解密。

第六步:服务端得到客户端传过来的“对称密码”。使用私钥对这个对称密码进行解密。然后用这个“对称密码”对服务器需要发送给客户端的数据进行加密。

第七步:服务器把加密后的数据传递给客户端。因为“对称密码”是客户生成的,所以客户端可以用“对称密码”对服务器的数据进行解密得到真实的数据。

注意:因为Xcode7采用的安全传输层协议是1.2版本,即TLS1.2,所以即便某些服务器采用了HTTPS,但没有使用TLS1.2(比如仍然使用TLS1.0)也不能访问HTTPS服务器。所以,只有不能保证服务器使用的是不是TLS1.2时,我们需要修改项目中info.plist文件,具体修改请见笔者之前写过的文章:http://www.cnblogs.com/wsnb/p/4802023.html

HTTPS基本原理的更多相关文章

  1. 深入浅出HTTPS基本原理

    基础知识准备:在了解HTTPS的基本原理之前,需要先了解如下的基本知识. 一.什么是HTTPS,TLS,SSL HTTPS,也称作HTTP over TLS.TLS的前身是SSL,TLS 1.0通常被 ...

  2. HTTPS静态服务搭建过程详解

    HTTPS服务对于一个前端开发者来说是一个天天打招呼的老伙计了,但是之前我跟HTTPS打交道的场景一直是抓包,自己没有亲自搭建过HTTPS服务,对HTTPS的底层知识也是一知半解.最近正好遇到一个用户 ...

  3. 使用caddy实现非标准端口https

    近来使用Halo搭建博客,并顺便把WeHalo小程序也把玩了起来,但是发现几个非常棘手的问题: 根据访问日志发现有三方在刷取关键接口的请求,http请求在部分情况下会暴露出很显著的安全问题: 小程序强 ...

  4. 系统安全-Man in the middleattack

    窃听VS加密(解决数据机密性) 加密由两部分组成:算法&秘钥(算法要够复杂,秘钥要够安全) 对称加密:(Symmetric encryption) 采用单秘钥密码系统的加密方法,同一个秘钥可以 ...

  5. https的基本原理,看完你的程序员女朋友再也不和你提分手了

    [http风险] 首先,我们来讲一下平时上网的时候,存在的风险. 初步接触过网络的同学都知道,网络上是很不安全的,尤其是各种公共场合的免费WIFI,以及手机上各种免费上网的万能钥匙.这些不安全因素会导 ...

  6. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  7. 动态令牌-(OTP,HOTP,TOTP)-基本原理

    名词解释和基本介绍 OTP 是 One-Time Password的简写,表示一次性密码. HOTP 是HMAC-based One-Time Password的简写,表示基于HMAC算法加密的一次性 ...

  8. ZooKeeper基本原理

    ZooKeeper简介 ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等. ZooKeeper设计目的 1. ...

  9. 【腾许Bugly干货分享】“HTTPS”安全在哪里?

    背景 最近基于兴趣学学习了下 HTTPS 相关的知识,在此记录下学习心得. 在上网获取信息的过程中,我们接触最多的信息加密传输方式也莫过于 HTTPS 了.每当访问一个站点,浏览器的地址栏中出现绿色图 ...

随机推荐

  1. EF的入门使用 (电影管理)

    控制器代码: public class HomeController : Controller { private NewDBContext ndc = new NewDBContext(); pub ...

  2. http应用优化和加速说明-负载均衡

    负载均衡技术       现代企业信息化应用越来越多的采用B/S应用架构来承载企业的关键业务,因此,确保这些任务的可靠运行就变得日益重要.随着越来越多的企业实施数据集中,应用的扩展性.安全性和可靠性也 ...

  3. mysql--测试前缀索引能否用于order by 或者 group by

    创建一个测试用表 mysql> desc two; +-------+-------------+------+-----+---------+----------------+ | Field ...

  4. IE浏览器下ajax缓存导致数据不更新的解决方法

    摘自:http://www.iefans.net/ie-ajax-json-shuju-huancun/ 最近做设计的时候遇到一个小问题,当你用jquery的getjson函数从后台获取数据的时候,I ...

  5. C#/JS 获取二维数组组合

    C#获取二维数组组合 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

  6. 拒绝了对对象 'XXX' (数据库 'XXX',架构 'dbo')的 SELECT 权限

    2010-04-17 23:16 在IIS里测试ASP.NET网站时会遇到这样的问题(ASP.NET+SQL2005)我自己的解决方法是这样的: 1.打开SQL2005管理界面(没有安装SQLServ ...

  7. Eclipse工作常见问题总结

    一.Eclipse常见快捷键使用 自动完成单词:Alt+/ 重命名:Shift+Alt+r(统一改变字段或方法名) 生成getter/setter方法: Shift+Alt+s,然后r 删除当前行:C ...

  8. Block Chain, a protocol view

    我做了个区块链的文档,给自己扫盲用的,有兴趣的可以看下,主要是自己画示意图比较好理解,示意图之后的专题部分,内容直接取自参考链接.网上的资料都是谈区块链有什么性质.有什么能力.有什么应用之类的,我主要 ...

  9. MC700 安装双系统

    2011年买的MBP MC700给老婆用了一段时间后,老婆还不习惯不了Mac OS或是虚拟机,要求必须给安装windows,无奈时隔四年后,只能重新尝试在MC700上用bootcamp安装Window ...

  10. JavaScript面试题收集(一)

    简述javascript中的“=.==.===”的区别? 答:=赋值 ==比较是否一般相等   "3"==3 //会做类型的隐式转换,true ===比较是否严格相等 " ...