一:什么是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. Graph and Chart Study

    1.选择主题 “Themes”,以"Graph"——“preset7” 为例: 2.选择“Canvas”——“GraphChart”预制体,1.Set data categorie ...

  2. Winform中实现ZedGraph中曲线右键显示为中文

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  3. "".equals(xxx)和xxx.equals("")的区别

    今天做项目发现如下这个问题 看见别人用 if ("abc".equals(str)),然后自作聪明地认为 if (str.equals("abc"))是等效的, ...

  4. java 线程监控

    线程的五种状态 * 新建:new * 运行:runnable * 等待:waitting(无限期等待),timed waitting(限期等待) * 阻塞:blocked * 结束:terminate ...

  5. JavaScript之深入对象(二)

    上一篇随笔讲解了构造函数.原型及原型链相关的知识,今天让我们一起来探讨另一个问题:this. 一     this 的指向 1,  函数预编译过程中,this指向window 我们在讲解函数预编译过程 ...

  6. 【译】Kubernetes监控实践(2):可行监控方案之Prometheus和Sensu

    本文介绍两个可行的K8s监控方案:Prometheus和Sensu.两个方案都能全面提供系统级的监控数据,帮助开发人员跟踪K8s关键组件的性能.定位故障.接收预警. 拓展阅读:Kubernetes监控 ...

  7. PyCharm设置自己的默认模板

    1.File-Settings 2.Editor- Code Style - File and Code Templates - Python Script 需要设置什么内容,现在就可以写入了,相关变 ...

  8. Spring boot 梳理 - @Conditional

    @Conditional(TestCondition.class) 这句代码可以标注在类上面,表示该类下面的所有@Bean都会启用配置,也可以标注在方法上面,只是对该方法启用配置. spring框架还 ...

  9. 【SQL server基础】SQL视图加密,永久隐藏视图定义的文本

    SQL可以对视图进行加密.也就是,可永久隐藏视图定义的文本. 注意   此操作不可逆.加密视图后,无法再修改它,因为无法再看到视图定义.如果需要修改加密视图,则必须删除它并重新创建另一个视图. 示例代 ...

  10. git clone 解决Permission Denied (publickey)问题

    本地git bash 使用git clone git@github.com:***.git方式下载github代码至本地时需要依赖ssh key,遇到权限不足问题时一般都是SSH key失效或者SSH ...