• 欢迎访问 winrains 的个人网站!
  • 本网站主要从互联网整理和收集了与Java、网络安全、Linux等技术相关的文章,供学习和研究使用。如有侵权,请留言告知,谢谢!

图解HTTP之HTTPS

网络协议 winrains 来源:cpp软件架构狮 1年前 (2019-08-31) 51次浏览

来源:《图解http》

一、什么是http协议?

http协议是指Hyper Text Transfer Protocol(超文本传输协议)的缩写。它用于数据从www服务器传输到本地浏览器的传送协议。就是一个基于应用层的通信规范:双方要进行通信,大家都要遵守一个规范,这个规范就是HTTP协议
http是一种应用层协议,包括请求和响应构成。
http是一种无状态的协议。所谓无状态*的协议就是指第一次连接和第二次连接没有关系。用生活中的例子来讲就是:假设你去一家陌生的公司找人,但是,保安不认识你,让你登记后放你进去。第二次,你再去那家公司,找人的时候,你还是一样需要登记。前后两次之间没有产生关系。
http协议通常工作在tcp协议之上。但是,http协议存在安全隐患,为了解决http的安全问题,http也承载于TSL或SSL协议层之上,这个时候,我们称之为https。
http的默认端口为80. https的默认端口为443.

二、HTTP协议如何工作?

大家都知道一般的通信流程:首先客户端发送一个请求(request)给服务器,服务器在接收到这个请求后将生成一个响应(response)返回给客户端。

图解HTTP之HTTPS

HTTP缺点:

图解HTTP之HTTPS

三、HTPPS概述

 在http中,没有加密机制,所有的内容都以明文的形式传输,在网络上“裸奔”,这是极其不安全的,为了解决这个问题,可以通过SSL(Secure Socket Layer安全套接层)或者TSL(Transport Layer Security安全车传输协议)的组合使用,达到加密http的通信内容,这个时候,http就变成了https协议。

图解HTTP之HTTPS

https=http+SSL/TSL:HTTPS 是身披 SSL 外壳的 HTTP

图解HTTP之HTTPS

使用https后网址:

图解HTTP之HTTPS

知道为什么https的网站前面都会有一把锁吗??

图解HTTP之HTTPS

四:SSL介绍

在对SSL介绍之前先了解为何加密以及加密方法?

咱们平时使用的post请求中所带的用户名密码等,非常容易被获取到。这点正如你小时候写小纸条的时候,让同学传递显然不安全,谁知道纸条传到前排同学之前,会不会被偷看或者被老师拦截呢。
主要的加密方法分为两种:一种是共享密钥加密(对称密钥加密),一种是公开密钥加密(非对称密钥加密)

1、共享密钥加密:加密与解密使用同一个密钥

图解HTTP之HTTPS

也就是说在加密的同时,也会把密钥发送给对方。在发送密钥过程中可能会造成密钥被窃取,那么如何解决这一问题呢?

图解HTTP之HTTPS

2、公开密钥(非对称密钥)

公开密钥使用一对非对称密钥。一把叫私有密钥,另一把叫公开密钥私有密钥不让任何人知道,公有密钥随意发送。
也就是说,发送密文方使用对方的公开密钥进行加密,对方接受到信息后,使用私有密钥进行解密。再不使用私有密钥情况下很难还原信息。

图解HTTP之HTTPS

3、混合加密机制

HTTPS采用共享密钥加密和公开密钥加密两者混合加密,两者都有各自的优点。共享密钥加密处理速度快,但密钥无法安全发送给对方;公开密钥加密处理速度慢,但密钥能够安全交换。
但如果我们将两种加密方式一起使用,则两种加密方式就能互补。也就是说,利用公开密钥加密方式安全地交换在共享密钥加密中要使用的密钥,在确保密钥安全前提下,使用共享密钥加密方式进行通信

图解HTTP之HTTPS

图片看不懂??
1.对称加密就是说:加密使用的密钥和解密使用的密钥是相同的。比如,我们在手机加锁时,解密的密码和加锁的密码是一样的。我们很容易想到,对称加密存在很大的安全隐患,万一你的手机密码不小心泄漏了,那么手机在任何人手里都可以使用,完全不存在隐私。

图解HTTP之HTTPS

2、在非对称加密算法中,有公钥和私钥两种密钥,其中,公钥是公开的,不需要保密,私钥由个人持有,必须妥善保管和注意保密。加密和解密使用两种不同的密钥,是它得名的原因。估计大家都听说过RSA,这就是一种常见的,应用很广的非对称加密算法。
2.1举个栗子:A(客户)想给B(服务器)发送一段文字,但是不想让别人看到,因此想使用非对称加密方法来加密这段文字,当然,B需要有一对公钥和私钥:
① B将他的公钥发送给A
② A用B给他的公钥加密这段文字,然后传给B
③ B用他的私钥解密A发过来的消息,这里要强调的是,只要B的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。
通过这几步,B就能成功收到A发送的信息,同时又达到了保密的目的。
2.2:解密
如果B想给A回信息,就简单的多了:
① B将要回复的信息通过自己的私钥加密,然后传送给A
② A用B之前给他的公钥解出这份信息。

五、使用证书证明公开密钥的正确性

如何证明收到的公开密钥是原本预想那台服务器发行的密钥。或许在传输途中,真正的公开密钥已经被替换掉了*。
为了解决这歌问题可以有数字证书认证机构和相关机构颁发的公开密钥证书,这样就可以确定公开密钥是否正确了。

作者:cpp软件架构狮

来源:https://www.toutiao.com/i6690298554440745480/


版权声明:文末如注明作者和来源,则表示本文系转载,版权为原作者所有 | 本文如有侵权,请及时联系,承诺在收到消息后第一时间删除 | 如转载本文,请注明原文链接。
喜欢 (2)