HTTPS SSL加密原理

Http和Https你知道多少?

首先,这两个协议是工作以后遇到和用过最多的协议,必须搞懂搞明白。咱们来看看他们的基本定义。

HTTP协议

Http: 超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议[1]。HTTP是万维网的数据通信的基础。

最初设计目的:为了提供一种发布和接受HTML页面的方法。

基于协议:TCP/IP协议。

连接过程:由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器监听端口的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。

客户端请求:

GET / HTTP/1.1
Host: www.google.com

服务器应答:

HTTP/1.1 200 OK
Content-Length: 3059
Server: GWS/2.0
Date: Sat, 11 Jan 2003 02:44:04 GMT
Content-Type: text/html
Cache-control: private
Set-Cookie: PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiqy
X9j; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com
Connection: keep-alive

重要进化史:HTTP1.0不支持长链接,一次连接对应一次请求一次应答。HTTP1.1支持长链接,客户端可多次请求,接收多次应答,不用重复TCP三次握手。

HTTP缺点:信息都是明文传输。很不安全,容易半路被截获。

怎么办??????????

HTTPS诞生了。

HTTPS协议 = HTTP + SSL

虽然很多人都知道,但是还是要把基本定义大概说一下,便于理解。大神可自动跳过此文章。😄

Https:超文本传输安全协议(英语:HyperText Transfer Protocol Secure,缩写:HTTPS;常称为HTTP over TLS、HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。
设计目的:提供对网站服务器的身份认证,加密数据传输。其实就是防止网站冒充官方网站,防止你登录网站的隐私被小人偷窥。
默认端口号:443

👇讲解下SSL的原理

重要加密算法:不对称加密,也就是RSA。

假定:客户端是A,服务器是B,公钥是M,私钥是P。
具体工作流程如下:

  1. 服务器B生成一个公钥M,一个私钥P,私钥保存,公钥上传到CA机构,经过CA(一个大家信任的权威机构)的私钥签名后,你下载下来有了自己的数字证书cer。当然也可以自己制作证书,只要客户端认可就行。
  2. 客户端A打开浏览器访问服务器B之前,先下载CA的数字证书,里面是CA的公钥。
  3. 客户端访问浏览器,建立与服务器B的连接,连接到默认端口443上。
  4. 服务器B将第一步申请CA得到的数字证书cer发送给客户端A。A通过第2步得到的CA的数字证书里的公钥解密cer,如果成功解密,那A就认为的确是服务器B发过来的。此时也得到了服务器B的公钥。
  5. 接下来他们的对话就安全了。客户端A用第3步得到的公钥加密一段随机信息AES-key也就是密钥,然后发送到B。B收到之后用私钥解密,解密后的数据就是接下来对话的密钥AES-key。比如我们用AES算法。
  6. 客户端A请求数据,请求之前用密钥AES-key通过AES算法加密请求信息,然后发送给B。
  7. B收到后用第4步收到的AES-key解密信息。读取后返回响应信息。
  8. 之后的对话和4,5,6,类似。

有人会问:为什么不一只用RSA算法呢,因为RSA加密虽然更安全,但是加密速度太慢,对于大数据量交互的情况不太适合,所以一般只用于密钥的传输。真正的对话还是要用对称加密,比如AES。

我的理解就到此结束了。有问题可留言,也可指正。谢谢。(有新的理解我也会及时更新的)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章