https目录

  • HTTPS
    • 术语解释
      • 1. HTTP
      • 2. SSL/TLS(Secure sockets Layer/transport layer security)
      • 3. HTTPS
      • 4. 对称加密
    • http的历史
    • HTTPS协议如何运行的
    • HTTPS原理
      • 1. 对称加密可行性
      • 2. 非对称加密可行性
      • 3. 非对称加密+对称加密方案
    • 遗留问题以及可能的方案
    • CA证书
      • 公钥证书是如何做到的呢

HTTPS

术语解释

1. HTTP

http,超文本传输协议,是基于请求响应的一个无状态的应用层协议,初衷主要是用来发布和接收web网页内容。监听端口号是80

2. SSL/TLS(Secure sockets Layer/transport layer security)

SSL称为安全套接层,有网景公司设计,主要用来解决HTTP协议明文传输导致内容被偷窥和篡改的缺点。
TLS叫做传输层安全协议。1999年,SSL被IETF标准化改名为TLS。

3. HTTPS

https其实就是http协议和SSL/TLS的组合。

4. 对称加密

即加解密使用相同的密钥。

http的历史

名称 时间 内容
0.9 1991 只能使用get请求;没有header等描述数据的信息;一旦服务器发送完成便关闭连接
1.0 1996 默认短链接,可使用keep-alive开启长连接;增加Header;增加put,post等请求;多字符集支持;多部份发送;权限,缓存等
1.1 1997 分块传输,即断点续传;增加host处理;长连接;可单独发送header,无权限返回401,如有权限返回100
2.0 2015 二进制传输;头部压缩;并行传输,单个请求可以传输多个文件;服务器推送

HTTP1.1 长连接,即请求一次数据后可以不断开;节省带宽,即可以单独发送header,如果有权限请求,服务器返回100,没有则返回401,还可以进行部分数据请求,即断点续传;增加host处理

HTTPS协议如何运行的

一个https协议实际是由两次http协议传输完成,分为八步

  1. 客户端发出https请求,连接443端口
  2. 服务器准备好自己的私钥和公钥证书
  3. 服务器将自己的公钥证书发给客户端
  4. 客户端验证证书是否来自服务器,并产生随机的会话密钥,然后使用服务器的公钥加密
  5. 客户端将会话密钥的密文发给服务器
  6. 服务器使用自己的私钥解密,得到会话密钥,并使用会话密钥对需要传输的数据加密
  7. 服务器将数据的密文发给客户端
  8. 客户端使用会话密钥解密,得到数据

HTTPS原理

首先http是明文传输,它会经过很多节点,比如路由器,通信运行商等等,如果消息被不发分子接受,它就可以看到,甚至可以进行中间人攻击,就是让双方不知道的情况下篡改信息。而加密便是最好的方式。对称加密和非对称加密都是候选,用哪个呢?我们挨个来分析一下。

1. 对称加密可行性

基础知识我们已经了解过对称加密,既然对称加密要求通信双方拥有相同的密钥,那如何一方产生的密钥在保证会被泄露发给另一方呢?

使用对称加密再加密,死循环了。不可行。

2. 非对称加密可行性

那采用非对称加密呢,服务器将自己的公钥给浏览器,浏览器的数据通过公钥加密后传给服务器,这些数据只有服务器的私钥能解密。

这样看似可行,浏览器如何拿到服务器的公钥呢,又怎么保证这是服务器的公钥而不是其他人伪造的呢,这个问题便引出了我们稍后讨论的公钥证书。在这里我们假定客户端可以拿到服务器的公钥,并确认其身份。

既然浏览器到服务器的数据可以保证,那服务器到浏览器的数据同样采用非对称加密是否可行?

抛开安全性的问题,这里需要考虑到对称加密和非对称加密的效率问题。非对称加密的加解密速度相对于对称加密来说比较慢。如果数据量特别大的话,还是得采用对称加密的方式。

那问题又回来了,如何保证对称加密的密钥在传输中不被泄露呢?

答案就是通过非对称加密协商密钥。

3. 非对称加密+对称加密方案

浏览器请求连接后,服务器将自己的公钥发给浏览器,浏览器生成用于对称加密的密钥,并将其用服务器公钥加密后发给服务器,这样服务器和浏览器都拥有了对称加密密钥,此后便可以通过对称加密来加密数据。

这样一来,数据的机密性得到了保证。

遗留问题以及可能的方案

在上面的部分中,我们遗留了几个问题。

浏览器如何拿到服务器公钥呢?

  • 服务器直接将公钥发给客户端。但是中间人可以通过截取服务器公钥,把自己的公钥发给浏览器,浏览器便会使用中间人的公钥加密对称密钥。因此中间人可以获取到对称密钥,从而可以一直监听之后的数据通信。
  • 建立一个公钥的目录表,所有用户可以从中获取响应服务器的公钥,同样该目录表可能被伪造。

浏览器如何确定拿到的公钥就是服务器的公钥?

上面两种方法究其原因是因为安全性,无法保证公钥的真实性。归根到底是可信。

  • 那是否可以设置一个可信的管理机构,管理机构为每个用户维护公钥目录,每个用户拥有该管理机构的公钥。当与服务器通信时,便可以通过管理机构来请求响应服务器的公钥。管理机构通过自己的私钥对服务器的公钥加密,而用户可以使用管理机构的公钥解密。因为管理机构私钥只有自己拥有,因此服务器公钥是不可能被其他人伪造的。

这样看似可行,不过也有缺点,每个用户和其他人或者服务器联系,都需要请求该机构,该机构容易成为系统的瓶颈,出现一个单点故障问题。同时,因为公钥保存在该机构,容易受到敌手的窜扰。

CA证书

那另一个方法便是我们要讨论的,公钥证书。

公钥证书由证书管理机构(Certificate Authority, CA)为用户(即服务器)建立,包含了以下内容:

  1. 证书的发布机构
  2. 证书的有效期
  3. 证书的所有者
  4. 公钥
  5. 签名使用的算法
  6. 指纹及指纹使用的算法

服务器将证书发给浏览器,客户便可以通过证书认定公钥是否是证书所有者的,且信息是否经过篡改。

公钥证书是如何做到的呢

证书管理机构CA在设置好所有信息后,对证书首先使用指纹算法(即进行一次hash),然后使用签名算法(使用CA自己的私钥加密)对hash作签名。并把签名和证书一起颁发给服务器。当浏览器请求时,服务器需要将证书和签名一起发给浏览器。

浏览器收到证书以后,使用权威机构的公钥解密签名,并将证书进行hash,并且将两者信息对比,如果相同便可以证明证书信息是没有被修改的。

  1. 其他的中间人如果进行伪造并篡改签名,因为证书是使用权威机构的私钥生成的,浏览器使用权威机构的公钥解密后和信息不匹配,从而不会信任该服务器。
  2. 如果第三方同样获取到了权威机构颁发的证书和签名,他可能进行重放攻击,但是解密后的信息和证书的信息也不会匹配。
  3. hash的作用是为了保证证书信息的完整性。在上面在签名之前有一个hash的操作,看上去不进行hash同样可以实现。这里的hash与加密的开销有很大关系,因为非对称加密是很耗时的,对hash后的数据进行加密会大大减少加密开销。至于安全性还有待研究
  4. 那这个权威机构的公钥怎么来的呢,我们上面说的都是为了证明服务器的公钥确实是该服务器的公钥吧,同样道理,该权威机构的公钥也可以通过其父权威机构来证明它的可信性。而当我们安装操作系统时,已经内嵌了可信的证书发布机构。

HTTPS及CA证书详解相关推荐

  1. 构建CA证书详解过程步骤

    目录 一.CA中心申请证书的过程 二.CA介绍 三.构建私有CA 1.环境: 2.检查安装openSSL 3.查看配置文件 4.根证书服务器目录 5.创建所需文件 6.创建密钥 7.生成自签名证书 8 ...

  2. http\https的连接过程及数字证书详解

    http\https的连接过程及数字证书详解 内推军p185 http连接过程(相当于输入url会发生什么) 1.域名解析 2.发起TCP的三次握手 3.Web浏览器向服务器发送http请求命令 4. ...

  3. SSL证书详解和CFSSL工具使用

    SSL证书详解和CFSSL工具使用 1.公钥基础设施PKI基础概念 CA(Certification Authority)证书,指的是权威机构给我们颁发的证书. 密钥就是用来加解密用的文件或者字符串. ...

  4. IOS开发环境更换后重新制作Provisioning Profile证书详解

    IOS开发环境更换后重新制作Provisioning Profile证书详解 新换了台Macbook,又折腾了一遍Provisioning Profile证书,苹果的证书繁锁复杂,每次制作都相当麻烦, ...

  5. CSMA/CA协议详解

    参考:(20条消息) CSMA/CA协议详解[计算机网络]_蓝莓派Alex的博客-CSDN博客_csma/ca 笔记: 无线电波能够向所有的方向传播,且其传播距离受限.当电磁波在传播过程中遇到障碍物时 ...

  6. 通俗易懂的TCP,SSL以及HTTPS的连接建立过程详解

    可以参考B站的一个视频,把TLS/SSL的连接建立过程降解的非常透彻.配合这篇博客食用更佳.一遍不懂请多看几遍,很有用! 1 说明 1.1 对称加密的和非对称加密 在数字加密算法中,通过可划分为对称加 ...

  7. HTTPS中CA证书的签发及使用过程

    1,HTTPS 简单来讲,HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议就是安全的HTTP,我们知道HTTP是运行在TCP层之上的,HTTPS在 ...

  8. iOS开发——使用Charles进行https网络抓包详解

    我在前面两篇博客中<网络抓包工具Charles的介绍与使用><iOS开发--使用Charles进行http网络抓包详解>对Charles的http抓包进行了详细的讲解.今天我们 ...

  9. 【201】openssl生成服务端和客户端证书详解

    内容目录(原文见公众号python宝) 一.基本知识点介绍二.openssl生成服务端和客户端证书www.xmmup.com 一.基本知识点介绍   要支持https请求,那就需要一个SSL证书. S ...

最新文章

  1. 张亚勤院士谈“智能计算新趋势”
  2. SVN服务器与客户端的配置
  3. UOJ.117.欧拉回路
  4. mysql学习笔记14 多表查询初步
  5. GCC的编译和调试--入门介绍
  6. java学习二---对象和内存管理
  7. 关于C++的建议,仅仅为了规范代码(二)
  8. 自带CA ,sha256 哈希签名,2048 位加密 脚本,通用
  9. python人脸识别系统界面_人脸识别演示界面:python GUI--tkinter实战(1)
  10. CISSP-安全与风险管理
  11. Html实现Excel锁定表头效果
  12. cocos creator性能优化合集
  13. 正则表达式lookahead and lookbehind zero-length assertions
  14. JDK1.5版本新增特性
  15. FTP虚拟用户(转发)
  16. 微信突破版本限制永久设置透明/半透明头像
  17. Python语音合成小工具(PyQt5 + pyttsx3)
  18. LeetCode 1101. The Earliest Moment When Everyone Become Friends
  19. Linux命令--tac(倒序查看文件所有内容)
  20. 跑步健身戴什么耳机合适?五款高性价比运动耳机推荐

热门文章

  1. 电视直销价格功能虚假宣传成风 国产手机透支健康
  2. Digital Multimeter——DT-830B
  3. c++ Templates读书笔记 9-12章
  4. 如何通过SW Manage实现工程变更申请(ECR)
  5. layui提示信息弹窗
  6. 在线教育项目04_讲师管理前端开发
  7. 专访美图 CTO 张伟:5年以前,我们也不会想到会花 70% 的时间在人工智能上
  8. 团队作业8--展示博客
  9. Dubbo最新面试题,2022年面试题及答案汇总
  10. 求助:火狐浏览器使用 本地代理后无法连接网络的解决方法