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. 【深入ASP.NET原理系列】--ASP.NET页面生命周期

    前言 ASP.NET页面运行时候,页面将经历一个生命周期,在生命周期中将执行一系列的处理步骤.包括初始化.实例化控件.还原和维护状态.运行时间处理程序代码以及进行呈现.熟悉页面生命周期非常重要,这样我 ...

  2. 配置Supervisor开机启动

    配置Supervisor开机启动: 新建一个"supervisord.service"文件 # dservice for systemd (CentOS 7.0+) # by ET ...

  3. 无法安装 DotNetCore.1.0.0-VS2015Tools.Preview2解决方法

    安装 DotNetCore.1.0.0-VS2015Tools.Preview2,已经安装vs2015update3,还是提示检测到 Visual Studio 2015 Update 3没有完全安装 ...

  4. Delphi常用系统函数总结

    Delphi常用系统函数总结 字符串处理函数 Unit System 函数原型 function Concat(s1 [, s2,..., sn]: string): string; 说明 与 S : ...

  5. windows Server 2008各版本区别详解

    Windows Server 2008 是专为强化下一代网络.应用程序和 Web 服务的功能而设计,是有史以来最先进的 Windows Server 操作系统.拥有 Windows Server 20 ...

  6. IO调度器(二) IO的中断返回

    IO的中断返回也是相当让人激动的一件事情: 28470  1)               |        handle_irq() { 28471  1)   0.237 us    |      ...

  7. Android — Camera聚焦流程

    原文  http://www.cnphp6.com/archives/65098 主题 Android Camera.java autoFocus()聚焦回调函数 @Override public v ...

  8. 10 个迅速提升你 Git 水平的提示

    1. Git自动补全 假使你使用命令行工具运行Git命令,那么每次手动输入各种命令是一件很令人厌烦的事情.为了解决这个问题,你可以启用Git的自动补全功能,完成这项工作仅需要几分钟. 为了得到这个脚本 ...

  9. 在iframe中获取本iframe DOM引用

    window.frameElement 获取本iframe DOM window.frameElement.contentDocument.getElementById('id') 获取这个ifram ...

  10. TinyFrame开篇:基于CodeFirst的ORM

    前言 做项目的这段时间,由于比较忙,一直没有机会闲下来思考.正好趁目前手头活儿轻松点,就花了一两天时间搭建了一个比较简单的框架,名称暂时就叫做:TinyFrame吧.顾名思义,就是微框架的意思.虽然这 ...