图解HTTPS建立过程

阅读目录

关于网络安全加密的介绍可以看之前文章:

1. 网络安全——数据的加密与签名,RSA介绍
2. Base64编码、MD5、SHA1-SHA512、HMAC(SHA1-SHA512)
3. When I see you again(DES、AES、RSA、Base64、MD5加密原理介绍,代码实现)

HTTPS建立过程相当复杂,下图为示意图,可以有整体认识,一般我们编程知道这些已足够。

如果你想仿照HTTPS实现类似加密,可以阅读下具体过程,作为参照

准备工作(对应图中prepare1234)

可以看到,在客户端向服务器发起请求前,还有一些准备工作要做,或者说是有一些工作已经做好了。

  • 从CA证书颁发机构,获取数字证书。

    • 服务器:生成一对公私钥S.pub,S.pri,私钥自己保留,用于解密和签名,不能外泄。将公钥S.pub,身份信息,传给CA(Certificate Authority)机构;
    • CA机构:也有公私钥C.pub,C.pri;由S.pub,身份信息另外附加CA签名生成数字证书(签名使用C.pri进行签名)
    • 将数字证书颁发给申请者(服务器)
  • 客户端(比如我们经常使用的浏览器),为了安全性,会内置一份CA根证书,它包含C.pri,用于对数字证书验证

发起链接

https使用的是443端口,而http使用的是80端口

TCP端口号是一个2字节的整型,处于TCP报文段的前四个字节(2字节源端口号,2字节目的端口号)。

很明显范围是0~65535。其中0~1023具有特殊意义,已经被绑定,比如上面说的443,80,还有ftp的21端口。从1024~49151也具有特殊含义,但是还没有被用完,比如8080端口重定向。剩下的我们就可以随便使用,自定义了。

其实之前在嵌入式开发中,没有连接外网,也没有使用浏览器等等这些。所以端口完全自定义随便用,不用担心冲突:)。

下面的过程为具体详细一点的过程,如果不想看,可以完全只看示意图即可,对我们平时开发用处并不大。或者你在用wireshark类似的抓包工具时看的抓狂不认识,可以看看(反正我用Charles抓包):

1 客户端发起请求(对应图中1)

同样需要三次握手,建立TCP连接(毫无疑问HTTPS也是基于TCP的)

2 客户端发送Client Hello包(对应图中2)

  • 随机数

里面有1970年1月1日到现在的秒数,后面还有一个客户端发来的随机数Client.random

  • Session ID

如果客户端与服务器费尽周折建立了一个HTTPS链接,刚建完就断了,也太可惜,所以用Session ID将其保存,如果下次再来可以直接使用之前的链接进行对话(对称密钥)。

  • 密文族

告诉服务器,自己支持的加密算法种类

  • Server_name

3 Server Hello(对应图中2)

  • 随机数:对应服务器时间,服务器sever.random
  • Seesion ID,如果客户端发给服务器的session ID在服务端有缓存,服务端会尝试使用这个session;否则服务器会启用新的并返回给客户端;
  • 服务器挑选一个密文族

4 Certificate(对应图中2)

服务器终于发来我们想要的数字证书,包含了:签发机构、过期时间、主题名称、公共密钥信息、指纹信息等等

5 Server Hello Done(对应图中2)

服务器发送结束

6 客户端验证(对应图中3)

客户端从内置的CA根证书获取C.pub,对服务器发送来的数字证书进行验签,如果一致,说明证书是CA颁发的(前提是C.pub是真实的,确实是CA机构的公钥)。然后看看证书是否过期,域名是否匹配

7 生成对称密钥(对应图中4、5、6)

客户端根据之前的:Client.random + sever.random + pre-master生成对称密钥

经过S.pub加密发送给服务器,之后即可通过对称密钥进行通讯。(就是之前我们熟悉的http)

最后

在整个过程中,一共涉及2对公私密钥对,一对由服务器产生,主要用于加密,一对由CA产生,主要用于签名。

为什么要多一个CA呢?

假设没有CA,那么如果服务器返回的包含公钥的包被hack截取,然后hack也生成一对公私钥,他将自己的公钥发给客户端。hack得到客户端数据后,解密,然后再通过服务器的公钥加密发给服务器,这样数据就被hack获取。

有了CA后,客户端根据内置的CA根证书,很容易识别出hack的公钥不合法,或者说hack的证书不合法。

 

http://www.cnblogs.com/mddblog/p/6948980.html

标题中的新版指:版本 56.0.2924.87 (64-bit)

原来的版本可以点击绿色的小锁进入查看页面,新版的已经改了

新版的进入方式为F12-->Security选项卡(找不到的点右箭头>>),然后点击View certificate

 

 

 

时间: 2024-11-03 14:16:28

图解HTTPS建立过程的相关文章

【JAVA秒会技术之秒懂HTTPS】白话图解HTTPS原理

白话图解HTTPS原理         [前言]最近看过几篇文章,内容是关于"全民HTTPS"的.为什么HTTPS,突然会受到如此多业内人士的青睐呢?HTTPS究竟是什么呢?它与HTTP又有怎样的区别呢?     带着这个问题,我查看了很多网上的资料,但是太多的专业词汇,让我感到头疼,很难理解.按我个人的认知,这个世界上根本不存在任何高深的道理,尤其是西方讲究科学性的思维,再高深,也不可能高深过中国传统思想中的八个字"只可意会,不可言传",完全不该诉你,让你自己去领

l2tp pap chap-关于l2tp隧道建立过程,我的这个认证失败是那一步认证有问题

问题描述 关于l2tp隧道建立过程,我的这个认证失败是那一步认证有问题 如图这是正常的L2TP隧道建立过程 我抓包看到情况是这样 ![图片说明 我分别用pap和chap进行认证 都在认证过程中报错 这个认证是第一个图中的第七步还是第九步呢 为什么会产生这个问题

为什么无法建立过程性能模型?

在CMMI四五级的软件公司中,建立过程性能模型是一个重点也是一个难点工作,很多公司无法建立过程性能模型,为什么呢? 1)数据不准 比如: ? 对于评审的会议,评审的参与人有的是来学习的,在统计人数.工作量时就不应该统计在内. ? 有的数据当时没有采集,而是靠时候回忆采集上来的. ? 有的代码行数不是通过工具统计上来的,而是靠人估计估计出来的. 2)过程不稳定 过程不稳定的原因可以细分为: i)过程太大 比如:对于整个项目的工期偏差率建立回归分析模型,由于影响因子太多,每个因子都有影响,但是影响都

图解TCP建立连接全过程

TCP是因特网中的传输层协议,使用三次握手协议建立连接,下面是TCP建立连接的全过程. 上图画出了TCP建立连接的过程.假定主机A是TCP客户端,B是服务端.最初两端的TCP进程都处于CLOSED状态.图中在主机下面的是TCP进程所处的状态.A是主动打开连接,B是被动打开连接. 首先A向B发出连接请求报文段,这时首部中的同步位SYN=1,同时选择一个初始序号seq=x.TCP规定,SYN报文段不能携带数据,但要消耗掉一个序号.这时,A进入SYN-SENT状态. B收到请求后,向A发送确认.在确认

图解HTTPS

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取.所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议. HTTPS简介 HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块.服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据.具体是如何进行加密,解密,验证的,且看下图. 1. 客户端发起HTTPS请求 这个没什么好说的,就是用户在浏览器里输入一个https网址,然后连接到serve

图解https协议

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取.所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议. HTTPS简介 HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块.服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据.具体是如何进行加密,解密,验证的,且看下图. 1. 客户端发起HTTPS请求 这个没什么好说的,就是用户在浏览器里输入一个https网址,然后连接到serve

浅谈我的博客建立过程

我一直想要有一个属于自己的网站,这个愿望在我接触网络,特别是接触博客之后就有了这样的一个愿望,当时总是觉得,用那些大网站的博客,模板确实是丰富,但是不管你怎么弄来弄去,最终还是人家的东西,白白地给人家免费打工了,还有就是,那样的博客,流量来源是不透明的,自己不能放统计代码,究竟是哪里来的访客,自己一点也不知道,只知道每天的数据在一点一点地增多. 曾经的博客在新浪,搜狐,百度都曾安过家,但是因为种种限制,被迫一个个都选择了放弃.这个时候,拥有自己的一个网站,一个博客的想法是那么的强烈了.身边也有许

Tomcat配置SSL nginx+tomcat配置https实例及优化过程

Tomcat配置SSL,使用openssl制作证书 制作证书以及Tomcat配置     搭建openssl环境,下载openssl并设置环境变量方便命令行的使用:    修改openssl配置文件,设置dir目录,如设置dir=e:/temp/openssl_ca,然后根据配置文件分别建立子目录:certs.crl.newcerts.private分别用来存放签发的证书.吊销的证书.证书申请.私钥:         cd /d e:\temp\openssl_ca         mkdir 

图解Http协议 (转)

  一.技术基石及概述 问:什么是HTTP? 答:HTTP是一个客户端和服务器端请求和响应的标准TCP.其实建立在TCP之上的. 当我们打开百度网页时,是这样的: https://www.baidu.com 多了个S,其实S表示TLS.SSL.在这里不做解释,因此HTTP的技术基石如图所示: 那HTTP协议呢?HTTP协议(HyperText Transfer Protocol),即超文本传输协议是用于服务器传输到客户端浏览器的传输协议.Web上,服务器和客户端利用HTTP协议进行通信会话.有O