HTTPS基本原理
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基本原理的更多相关文章
- 深入浅出HTTPS基本原理
基础知识准备:在了解HTTPS的基本原理之前,需要先了解如下的基本知识. 一.什么是HTTPS,TLS,SSL HTTPS,也称作HTTP over TLS.TLS的前身是SSL,TLS 1.0通常被 ...
- HTTPS静态服务搭建过程详解
HTTPS服务对于一个前端开发者来说是一个天天打招呼的老伙计了,但是之前我跟HTTPS打交道的场景一直是抓包,自己没有亲自搭建过HTTPS服务,对HTTPS的底层知识也是一知半解.最近正好遇到一个用户 ...
- 使用caddy实现非标准端口https
近来使用Halo搭建博客,并顺便把WeHalo小程序也把玩了起来,但是发现几个非常棘手的问题: 根据访问日志发现有三方在刷取关键接口的请求,http请求在部分情况下会暴露出很显著的安全问题: 小程序强 ...
- 系统安全-Man in the middleattack
窃听VS加密(解决数据机密性) 加密由两部分组成:算法&秘钥(算法要够复杂,秘钥要够安全) 对称加密:(Symmetric encryption) 采用单秘钥密码系统的加密方法,同一个秘钥可以 ...
- https的基本原理,看完你的程序员女朋友再也不和你提分手了
[http风险] 首先,我们来讲一下平时上网的时候,存在的风险. 初步接触过网络的同学都知道,网络上是很不安全的,尤其是各种公共场合的免费WIFI,以及手机上各种免费上网的万能钥匙.这些不安全因素会导 ...
- HTTPS 互联网世界的安全基础
近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...
- 动态令牌-(OTP,HOTP,TOTP)-基本原理
名词解释和基本介绍 OTP 是 One-Time Password的简写,表示一次性密码. HOTP 是HMAC-based One-Time Password的简写,表示基于HMAC算法加密的一次性 ...
- ZooKeeper基本原理
ZooKeeper简介 ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等. ZooKeeper设计目的 1. ...
- 【腾许Bugly干货分享】“HTTPS”安全在哪里?
背景 最近基于兴趣学学习了下 HTTPS 相关的知识,在此记录下学习心得. 在上网获取信息的过程中,我们接触最多的信息加密传输方式也莫过于 HTTPS 了.每当访问一个站点,浏览器的地址栏中出现绿色图 ...
随机推荐
- android:TableLayout表格布局详解
1.TableLayout简介2.TableLayout行列数的确定3.TableLayout可设置的属性详解4.一个包含4个TableLayout布局的实例及效果图一.Tablelayout简介 ...
- Json 基于jQuery+JSON的省市联动效果
helloweba.com 作者:月光光 时间:2012-09-12 21:57 标签: jQuery JSON Ajax 省市联动 省市区联动下拉效果在WEB中应用非常广泛,尤其在一些 ...
- CentOS RHEL 安装 Tomcat 7
http://www.davidghedini.com/pg/entry/install_tomcat_7_on_centos This post will cover installing and ...
- I/O 流和对象序列化
一.I/O 流(java 如何实现与外界数据的交流) 流定义: 任何有能力产出数据的数据源对象或者有能力接收数据的数据源对象.他屏蔽了实际的I/O设备处理数据的细节. 1.Input/Output:指 ...
- 【转】CSS Sprites教程大全(使用方法、工具介绍)
什么是CSS Sprite CSS Sprite 又叫CSS精灵,是目前大型网站中经常运用的图片处理方式.它的原理很简单,将网站上零散的小图片(或图标)整合在一张大图上,再用CSS中“backgrou ...
- 分享:关于之前锤子手机刷MIUI之后,现在有事跌宕起伏的刷回了Smartisan OS!
序言: 距离上次把锤子手机刷成MIUI之后已经一个半月了,我是一个刷机党,一个半月足够让我适应一个系统,了解一个系统.刷机有风险,不过我愿意冒这个风险,因为兴趣,没别的.刷机之后,肯定是有问题的,没 ...
- BASH 命令以及使用方法小结
最近工作中需要写一个Linux脚本,用到了很多BASH命令,为了防止以后忘记,在这里把它们一一记下来.可能会比较乱,随便看看就好了.如果有说的不对的地方也欢迎大家指正. 1,export VAR=.. ...
- PC互联网和移动互联网的本质差别
网一代,我们先称为PC互联网,这大约可以从2010年作为分界,然后就是基于手机,及可穿戴的移动互联网. 在PC时代,软件都很庞大复杂,甚至客端端和网页混合,比如常见的桌面软件,Office及Photo ...
- [CF#250 Div.2 D]The Child and Zoo(并查集)
题目:http://codeforces.com/problemset/problem/437/D 题意:有n个点,m条边的无向图,保证所有点都能互通,n,m<=10^5 每个点都有权值,每条边 ...
- XMl各种格式转换功能代码
package com.cdv.test; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.File ...