HTTPS及CA证书详解
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协议传输完成,分为八步
- 客户端发出https请求,连接443端口
- 服务器准备好自己的私钥和公钥证书
- 服务器将自己的公钥证书发给客户端
- 客户端验证证书是否来自服务器,并产生随机的会话密钥,然后使用服务器的公钥加密
- 客户端将会话密钥的密文发给服务器
- 服务器使用自己的私钥解密,得到会话密钥,并使用会话密钥对需要传输的数据加密
- 服务器将数据的密文发给客户端
- 客户端使用会话密钥解密,得到数据
HTTPS原理
首先http是明文传输,它会经过很多节点,比如路由器,通信运行商等等,如果消息被不发分子接受,它就可以看到,甚至可以进行中间人攻击,就是让双方不知道的情况下篡改信息。而加密便是最好的方式。对称加密和非对称加密都是候选,用哪个呢?我们挨个来分析一下。
1. 对称加密可行性
基础知识我们已经了解过对称加密,既然对称加密要求通信双方拥有相同的密钥,那如何一方产生的密钥在保证会被泄露发给另一方呢?
使用对称加密再加密,死循环了。不可行。
2. 非对称加密可行性
那采用非对称加密呢,服务器将自己的公钥给浏览器,浏览器的数据通过公钥加密后传给服务器,这些数据只有服务器的私钥能解密。
这样看似可行,浏览器如何拿到服务器的公钥呢,又怎么保证这是服务器的公钥而不是其他人伪造的呢,这个问题便引出了我们稍后讨论的公钥证书。在这里我们假定客户端可以拿到服务器的公钥,并确认其身份。
既然浏览器到服务器的数据可以保证,那服务器到浏览器的数据同样采用非对称加密是否可行?
抛开安全性的问题,这里需要考虑到对称加密和非对称加密的效率问题。非对称加密的加解密速度相对于对称加密来说比较慢。如果数据量特别大的话,还是得采用对称加密的方式。
那问题又回来了,如何保证对称加密的密钥在传输中不被泄露呢?
答案就是通过非对称加密协商密钥。
3. 非对称加密+对称加密方案
浏览器请求连接后,服务器将自己的公钥发给浏览器,浏览器生成用于对称加密的密钥,并将其用服务器公钥加密后发给服务器,这样服务器和浏览器都拥有了对称加密密钥,此后便可以通过对称加密来加密数据。
这样一来,数据的机密性得到了保证。
遗留问题以及可能的方案
在上面的部分中,我们遗留了几个问题。
浏览器如何拿到服务器公钥呢?
- 服务器直接将公钥发给客户端。但是中间人可以通过截取服务器公钥,把自己的公钥发给浏览器,浏览器便会使用中间人的公钥加密对称密钥。因此中间人可以获取到对称密钥,从而可以一直监听之后的数据通信。
- 建立一个公钥的目录表,所有用户可以从中获取响应服务器的公钥,同样该目录表可能被伪造。
浏览器如何确定拿到的公钥就是服务器的公钥?
上面两种方法究其原因是因为安全性,无法保证公钥的真实性。归根到底是可信。
- 那是否可以设置一个可信的管理机构,管理机构为每个用户维护公钥目录,每个用户拥有该管理机构的公钥。当与服务器通信时,便可以通过管理机构来请求响应服务器的公钥。管理机构通过自己的私钥对服务器的公钥加密,而用户可以使用管理机构的公钥解密。因为管理机构私钥只有自己拥有,因此服务器公钥是不可能被其他人伪造的。
这样看似可行,不过也有缺点,每个用户和其他人或者服务器联系,都需要请求该机构,该机构容易成为系统的瓶颈,出现一个单点故障问题。同时,因为公钥保存在该机构,容易受到敌手的窜扰。
CA证书
那另一个方法便是我们要讨论的,公钥证书。
公钥证书由证书管理机构(Certificate Authority, CA)为用户(即服务器)建立,包含了以下内容:
- 证书的发布机构
- 证书的有效期
- 证书的所有者
- 公钥
- 签名使用的算法
- 指纹及指纹使用的算法
服务器将证书发给浏览器,客户便可以通过证书认定公钥是否是证书所有者的,且信息是否经过篡改。
公钥证书是如何做到的呢
证书管理机构CA在设置好所有信息后,对证书首先使用指纹算法(即进行一次hash),然后使用签名算法(使用CA自己的私钥加密)对hash作签名。并把签名和证书一起颁发给服务器。当浏览器请求时,服务器需要将证书和签名一起发给浏览器。
浏览器收到证书以后,使用权威机构的公钥解密签名,并将证书进行hash,并且将两者信息对比,如果相同便可以证明证书信息是没有被修改的。
- 其他的中间人如果进行伪造并篡改签名,因为证书是使用权威机构的私钥生成的,浏览器使用权威机构的公钥解密后和信息不匹配,从而不会信任该服务器。
- 如果第三方同样获取到了权威机构颁发的证书和签名,他可能进行重放攻击,但是解密后的信息和证书的信息也不会匹配。
- hash的作用是为了保证证书信息的完整性。在上面在签名之前有一个hash的操作,看上去不进行hash同样可以实现。这里的hash与加密的开销有很大关系,因为非对称加密是很耗时的,对hash后的数据进行加密会大大减少加密开销。至于安全性还有待研究
- 那这个权威机构的公钥怎么来的呢,我们上面说的都是为了证明服务器的公钥确实是该服务器的公钥吧,同样道理,该权威机构的公钥也可以通过其父权威机构来证明它的可信性。而当我们安装操作系统时,已经内嵌了可信的证书发布机构。
HTTPS及CA证书详解相关推荐
- 构建CA证书详解过程步骤
目录 一.CA中心申请证书的过程 二.CA介绍 三.构建私有CA 1.环境: 2.检查安装openSSL 3.查看配置文件 4.根证书服务器目录 5.创建所需文件 6.创建密钥 7.生成自签名证书 8 ...
- http\https的连接过程及数字证书详解
http\https的连接过程及数字证书详解 内推军p185 http连接过程(相当于输入url会发生什么) 1.域名解析 2.发起TCP的三次握手 3.Web浏览器向服务器发送http请求命令 4. ...
- SSL证书详解和CFSSL工具使用
SSL证书详解和CFSSL工具使用 1.公钥基础设施PKI基础概念 CA(Certification Authority)证书,指的是权威机构给我们颁发的证书. 密钥就是用来加解密用的文件或者字符串. ...
- IOS开发环境更换后重新制作Provisioning Profile证书详解
IOS开发环境更换后重新制作Provisioning Profile证书详解 新换了台Macbook,又折腾了一遍Provisioning Profile证书,苹果的证书繁锁复杂,每次制作都相当麻烦, ...
- CSMA/CA协议详解
参考:(20条消息) CSMA/CA协议详解[计算机网络]_蓝莓派Alex的博客-CSDN博客_csma/ca 笔记: 无线电波能够向所有的方向传播,且其传播距离受限.当电磁波在传播过程中遇到障碍物时 ...
- 通俗易懂的TCP,SSL以及HTTPS的连接建立过程详解
可以参考B站的一个视频,把TLS/SSL的连接建立过程降解的非常透彻.配合这篇博客食用更佳.一遍不懂请多看几遍,很有用! 1 说明 1.1 对称加密的和非对称加密 在数字加密算法中,通过可划分为对称加 ...
- HTTPS中CA证书的签发及使用过程
1,HTTPS 简单来讲,HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议就是安全的HTTP,我们知道HTTP是运行在TCP层之上的,HTTPS在 ...
- iOS开发——使用Charles进行https网络抓包详解
我在前面两篇博客中<网络抓包工具Charles的介绍与使用><iOS开发--使用Charles进行http网络抓包详解>对Charles的http抓包进行了详细的讲解.今天我们 ...
- 【201】openssl生成服务端和客户端证书详解
内容目录(原文见公众号python宝) 一.基本知识点介绍二.openssl生成服务端和客户端证书www.xmmup.com 一.基本知识点介绍 要支持https请求,那就需要一个SSL证书. S ...
最新文章
- 张亚勤院士谈“智能计算新趋势”
- SVN服务器与客户端的配置
- UOJ.117.欧拉回路
- mysql学习笔记14 多表查询初步
- GCC的编译和调试--入门介绍
- java学习二---对象和内存管理
- 关于C++的建议,仅仅为了规范代码(二)
- 自带CA ,sha256 哈希签名,2048 位加密 脚本,通用
- python人脸识别系统界面_人脸识别演示界面:python GUI--tkinter实战(1)
- CISSP-安全与风险管理
- Html实现Excel锁定表头效果
- cocos creator性能优化合集
- 正则表达式lookahead and lookbehind zero-length assertions
- JDK1.5版本新增特性
- FTP虚拟用户(转发)
- 微信突破版本限制永久设置透明/半透明头像
- Python语音合成小工具(PyQt5 + pyttsx3)
- LeetCode 1101. The Earliest Moment When Everyone Become Friends
- Linux命令--tac(倒序查看文件所有内容)
- 跑步健身戴什么耳机合适?五款高性价比运动耳机推荐