前言 https协议是一种在http的基础上进行加密的协议,在http协议传输过程中,传输的数据都是已明文的方式进行传输,那我们的信息就有可能被他人进行捕获篡改(比如你给女神表白却被程序员情敌发现并修改了你的消息,然后你就无了),所以为了防止这种情况,来了解了解https协议还是很有必要的
文章图片
提示:以下是本篇文章正文内容,下面案例可供参考
一、https是什么? https协议是在http的基础上进行加密,解决http协议不安全的问题,现在很多网站为了安全都是使用https协议进行传输。那https协议是怎么在http的基础上进行加密的呢?这就是我们接下来要探讨的问题;
二、对称加密和非对称加密
1、对称加密 对称加密就是,客户端和服务器共用同一个密钥,该密钥可以用于加密一段内容,同时也可以用于解密这段内容。
打个比方说:
文章图片
我在本地用一个key,用这个key进行加密(AES、DES算法),中间人只能拿到我们加密的密钥,他不知道我们的消息, 即使是把加密的信息篡改,另一边用密钥解密时会失败,可能解密出一段乱码;
2、非对称加密 但对称加密有一个问题,客户端和服务器怎么确定用什么密钥进行加密呢?想要实现对称加密,也得在第一次传输的时候交换密钥,密钥是明文传输的,如果这个时候密钥被中间者捕获,那么对称加密就形同虚设,这个时候,就该非对称加密出场了;
非对称加密将密钥分成了两种:公钥和私钥。公钥是任何人都可以拿到的。使用公钥加密的数据只有用私钥才能解密,反过来使用私钥加密的数据也只有用公钥才能解密,而私钥只有服务器知道。非对称加密的优点是安全性更高,因为客户端发送给服务器的加密信息只有用服务器的私钥才能解密,因此不用担心被别人破解,但缺点是加解密的效率相比于对称加密要差很多。非对称加密的代表算法有:RSA、ElGamal等。
依然画个图:
文章图片
非对称加密的效率不然对称加密,所以我们可以第一次通过非对称加密的方式确定一个密钥,之后都用这个密钥进行对称加密,提高效率;
2.1非对称加密的问题
看起来非对称加密已经很完美了,还能有什么问题呢?问题就在于客户端去请求服务器的公钥时,在公钥网客户端传的过程中,如果被篡改,那客户端用假的公钥加密,攻击者也能用假的私钥解密
文章图片
三、ssl证书 为了解决这个问题,服务器可以通过CA机构去配置证书来解决,服务器把自己的公钥注册到CA机构认证,认证成功后CA机构会用自己的公钥把服务器的公钥加密,然后返回给服务器一个加密的证书,证书中除了保护服务器的公钥,还有一些其他信息,比如网站的域名等,用于做一些其他的校验。
文章图片
比如浏览器的左上角就可以看见证书详情
之后用户再来请求,就直接把证书发给客户端,因为证书是用CA机构的私钥加密的,所以客户端可以通过CA机构的公钥解,因为CA机构总共就那几家,在任何正版操作系统都会将所有主流CA机构的公钥内置到操作系统当中,所以不用再去请求获取,这样就能安全拿到浏览器的公钥了。
文章图片
但还有一个问题,既然证书是用CA机构的私钥加密的,那攻击者能不能用CA机构的公钥破解呢?
很显然是有这个可能性的,但是,CA机构在制作的证书时除了网站的公钥外,还要包含许多其他数据,用来辅助进行校验,比如说网站的域名就是其中一项重要的数据,如果证书中加入了网站的域名,那么攻击者就只能无功而返了。因为,即使加密数据可以被成功解密,但是最终解密出来的证书中包含的域名和浏览器正在请求的域名对不上,那么此时浏览器仍然会显示异常界面。
文章图片
证书不止包括公钥
文章图片
防止篡改
总结 【https|聊一聊Https】说到这里,相信你一个对https协议是如何对http进行加密有了基本的了解了,是通过对称加密,非对称加密,ssl证书进行加密的,如果你还行对https进行深入的研究,接下来可以去研究研究对称加密算法,比如AES、DES,非对称加密算法RSA、ElGamal等
推荐阅读
- 网络基础|计算机网络协议详解
- JavaWeb|Java模拟实现HTTP服务器
- #|Session详解,学习Session,这篇文章就够了(包含底层分析和使用)
- #|【手写Tomcat】10.实现对静态资源的放行(完结篇)
- html|纪念计算机之父阿兰·图灵诞辰109周年
- android高级|android集成MQTT(最新)
- 历史上的今天|【历史上的今天】3 月 7 日(首条海底光缆开通;VeriSign 收购 Network Solutions;计算机图形学先驱诞生)
- 计算机网络笔记|计算机网络之HTTP协议详解
- 计算机网络|【计算机网络】HTTP 协议详解