一:什么是HTTPS

https全称是超文本传输安全协议,https利用SSL/TLS加密数据包来进行http通信。https开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

通常,HTTP直接和TCP通信,当使用SSL时,则变成了HTTP先和SSL通信,再由SSL和TCP通信 ,如下图所示。

一个安全的网络环境包含以下3个方面:

  • 通信内容的保密
  • 通信双方身份的真实
  • 通信内容的完整

而https的诞生就是为了解决这3个问题。所以可以理解为:HTTP + 加密 + 认证 + 完整性保护 = HTTPS

二:密码学基本概念

https中就是应用了各种密码学技术,保证

1、数字证书

一种文件的名称,好比一个人或者机构的名称,能够证明这个人或者机构的真实性。其中包含的信息,用于实现上述功能。其作用类似于生活中的身份证。最简单的证书包含一个公开秘钥、公钥的数字签名,公钥拥有者的信息。

2、数字签名

对文件加密只是确保了文件的完整性,通过数字签名的技术可以确定发件人的身份。而如何实现发件人的身份不是伪造的呢,简单来说,数字签名(digital signature)是公钥密码的逆应用:用私钥加密消息,用公钥解密消息。

生成签名过程:

一般来说,不直接对消息进行签名,而是对消息的哈希值进行签名,步骤如下。

  1. 对消息进行哈希计算,得到哈希值
  2. 利用私钥对哈希值进行加密,生成签名
  3. 将签名附加在消息后面,一起发送过去

验证签名过程:

  1. 收到消息后,提取消息中的签名
  2. 用公钥对签名进行解密,得到哈希值1。
  3. 对消息中的正文进行哈希计算,得到哈希值2。
  4. 比较哈希值1和哈希值2,如果相同,则验证成功。

3、对称加密

对称加密又叫做共享秘钥加密,加密和解密使用的是同一秘钥。当传输时也必须把密钥传给对方,这就造成密钥传输的安全问题,如果密钥被窃取,那么加密就变得毫无意义。常见的对称加密算法有DES,AES等。

4、非对称加密

非对称加密又叫做公开秘钥加密,顾名思义,加密的秘钥是公开的。之所以叫非对称加密,是因为秘钥是一对的,分为公钥和私钥。公钥公开给大家,私钥自己保存,任何人都可以通过公钥加密明文,但只有私钥拥有者才可以通过私钥解读公钥加密后的密文。常见的非对称加密又RSA,DH等

安全算法

不使用自己开发的加密算法,而使用没有专利的、安全的、公开的标准加密算法。

说明:

  1. 当前的专利算法包括但不限于:IDEA。已过专利保护期的加密算法已不再受专利保护;
  2. 不推荐的加密算法包括:DES、MD5、SHA1、HMAC-MD5、HMAC-SHA1;
  3. 对称加密算法建议使用:AES;
  4. 密钥交换算法建议使用:DH;
  5. 数字签名算法建议使用:SHA1withDSA;
  6. 非对称算法建议使用:ECC、RSA;
  7. HASH(哈希)算法建议使用:SHA;
  8. HMAC(基于哈希的消息验证码)算法建议使用:HMAC-SHA;
  9. 建议的各算法建议采用如下的加密强度:

  

三:HTTPS工作流程

https工作流程可以分为3个阶段:

1、认证服务器:客户端确认服务器证书的认证机构是否在受信任的CA机构列表中,从证书中获取服务器的公钥。

2、协商会话秘钥:客户端通过服务器公钥进行通信,协商出会话密码。这个会话秘钥是对称加密的类型,因为非对称加密算法开销计算量大,不适合对大数据加密。另外,会话密钥是随机生成,每次协商都会有不一样的结果,所以安全性也比较高。

3、此时客户端服务器双方都有了本次通讯的会话密钥,之后传输的所有Http数据,都通过会话密钥加密。

四:使用HTTPS的流程

1、使用openssl等工具生成web服务器的私钥key

2、使用openssl等工具,结合key以及服务器的其他信息,生成证书请求csr文件

3、发送csr文件给CA的其中一个机构,支付相应费用,获得服务器证书

4、通过webServer(Nginx等)中配置Http服务

总结:

https就是在http上面加入了ssl/tls协议,保证数据传输的安全性。但由于https比http耗费资源,所以一般比较重要的站点才会用https。

https协议分析的更多相关文章

  1. TLS握手协议分析与理解——某HTTPS请求流量包分析

    https://xz.aliyun.com/t/1039 HTTPS简介 HTTPS,是一种网络安全传输协议,在HTTP的基础上利用SSL/TLS来对数据包进行加密,以提供对网络服务器的身份认证,保护 ...

  2. Google的Protobuf协议分析

    protobuf和thrift类似,也是一个序列化的协议实现,简称PB(下文出现的PB代表protobuf). Github:https://github.com/google/protobuf 上图 ...

  3. 协议分析TMP

    最近闲来有事, 分析了一个非常低端(非常低端的意思是说你不应该对她是否能取代你现有的QQ客户端作任何可能的奢望,她只是一个实验性的东西)的手机QQ的协议, 是手机QQ3.0,      所用到的TCP ...

  4. PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析

    Python黑帽编程1.5  使用Wireshark练习网络协议分析 1.5.0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...

  5. HTTPS 协议和原理

    1 HTTPS 协议概述 HTTPS 可以认为是 HTTP + TLS.HTTP 协议大家耳熟能详了,目前大部分 WEB 应用和网站都是使用 HTTP 协议传输的. TLS 是传输层加密协议,它的前身 ...

  6. 大型网站的 HTTPS 实践(1):HTTPS 协议和原理

    转自:http://op.baidu.com/2015/04/https-s01a01/ 1 前言 百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS.本文重 ...

  7. 使用https协议解决掉顽固不化的已解密的登录请求

    1.1 已解密的登录请求概述 在应用程序测试过程中,检测到将未加密的登录请求发送到服务器.由于登录过程所用的部分输入字段(例如:用户名.密码.电子邮件地址.社会保险号码,等等)是个人敏感信息,建议通过 ...

  8. [转载] TLS协议分析 与 现代加密通信协议设计

    https://blog.helong.info/blog/2015/09/06/tls-protocol-analysis-and-crypto-protocol-design/?from=time ...

  9. HTTP 和 HTTPS 协议

    HTTP协议是什么? 简单来说,就是一个基于应用层的通信规范:双方要进行通信,大家都要遵守一个规范,这个规范就是HTTP协议. HTTP协议能做什么? 很多人首先一定会想到:浏览网页.没错,浏览网页是 ...

随机推荐

  1. java 手机号码+邮箱的验证

    import java.util.regex.Pattern; //导入的包 1:String REGEX_MOBILE = "^((17[0-9])|(14[0-9])|(13[0-9]) ...

  2. @classmethod @staticmethod 个人理解

    官方解释 @classmethod 一个类方法把类自己作为第一个实参, 就像一个实例方法把实例自己作为第一个实参. 语法格式: class C: @classmethod def f(cls, arg ...

  3. Visual Studio Code安装Python环境

    如何在全宇宙最强编辑器安装Python运行环境 (雾 首先安装Python2和Python3,如果只需要用到一个的话,直接安装即可运行,不存在转换问题. 安装Python扩展,直接搜索安装即可. 更改 ...

  4. 使用 Envoy 和 AdGuard Home 阻挡烦人的广告

    原文链接:使用 Envoy 和 AdGuard Home 阻挡烦人的广告 通常我们使用网络时,宽带运营商会为我们分配一个 DNS 服务器.这个 DNS 通常是最快的,距离最近的服务器,但会有很多问题, ...

  5. SpringCloud(五)Zuul网关与分布式配置中心

    在 Spring Cloud 微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经过负载均衡(Ngnix),再到达服务网关(Zuul 集群),然后再到具体的服务.服务统一注册到高可用的服务注册中 ...

  6. Nginx限流

    文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. 在当今流量徒增的互联网时代,很多业务场景都会涉及到高并发.这个时候接口进行限流是非常有必要的,而限流是Ngin ...

  7. Flask中的路由、实例化参数和config配置文件

    Flask中的路由 endpoint 别名不能重复,对应的视图函数,默认是视图函数名.endpoint 才是路由的核心.视图函数与路由的对应关系.可以通过url_for 反向创建url # metho ...

  8. Scrapy项目 - 实现腾讯网站社会招聘信息爬取的爬虫设计

    通过使Scrapy框架,进行数据挖掘和对web站点页面提取结构化数据,掌握如何使用Twisted异步网络框架来处理网络通讯的问题,可以加快我们的下载速度,也可深入接触各种中间件接口,灵活的完成各种需求 ...

  9. 规则引擎 - drools 使用讲解(简单版) - Java

    drools规则引擎 项目链接 现状: 运维同学(各种同学)通过后台管理界面直接配置相关规则,这里是通过输入框.下拉框等完成输入的,非常简单: 规则配置完毕后,前端请求后端,此时服务端根据参数(即规则 ...

  10. Spring 梳理 - AOP那些学术概念—通知、增强处理连接点(JoinPoint)切面(Aspect)

    Spring  AOP那些学术概念—通知.增强处理连接点(JoinPoint)切面(Aspect)   1.我所知道的AOP 初看起来,上来就是一大堆的术语,而且还有个拉风的名字,面向切面编程,都说是 ...