http和https协议(https协议)

图片授权基于 www.pixabay.com 相关协议

要想聊 HTTPS ,必须要先聊 HTTP。虽然中间差了一个「S」,但它们对于互联网的改变还是非常巨大的。

什么是 HTTP 协议?
默认端口 80,是基于 TCP/IP 协议的。
字面意思就是「HyperText Transfer Protocol 超文本传输协议」。换成白话说就是:在客户端和服务器之间可以传输图片、音视频等超文本,在传输期间所遵守的约定。也可以当成客户端和服务器签署的「合同」。
客户端能接受什么数据格式、什么压缩格式,这些发给服务器,由服务器选择其中一种格式来把数据传递回来。
但上面的一顿操作都是基于「明文」的,也就是肉眼可见的,用抓包工具完全能抓到的。那这安全性就不言而喻了。所以,HTTPS 来了。
什么是 HTTPS 协议?
默认端口 443,是基于 SSL/TLS 的。
与 HTTP 端口号不一样,其他的请求、结构、连接都是沿用 HTTP ,语义还是 HTTP ,但把下层的协议 TCP/IP 换成了 SSL/TLS。运行在 SSL/TLS 协议上,利用传输加密和身份认证来保证数据的安全性。

加密方式
对称加密:双方使用同一个密钥来进行加密、解密,是「对称」的。它的运算速度快,但必须要保证密钥的安全性。
非对称加密:公钥加密,私钥解密。不是同一个密钥,是「非对称」的。公钥广播出去,可以给任何人使用,但私钥自己保管,来解密公钥加密过的内容。安全性够,但速度慢。
混合加密:非对称加密处理速度慢,对称加密速度快,但对称加密又不能保证「密钥」的安全性。于是,客户端和服务器先用【非对称加密】获取到的双方对称加密密钥。然后用【对称加密】来进行数据传输,以保证数据的安全性。SSL/TLS 协议采用的是「混合加密」。
完整性和签名
数据传输还要注意「完整性」,实现完整性的主要手段是「摘要算法」,一种特殊的压缩算法,把任意长度的字符压缩成固定长度,这个摘要字符是独一无二的。我们在传输的原文后面跟上它的摘要字符,就可以保证数据的完整性。如果黑客改动了原文其中一个标点符号,那摘要和原文就匹配不上,那就无法验证完整性。
通过私钥加上摘要算法,来实现「数字签名」。私钥加密,公钥解密,来保证消息的真实性。
CA 证书
公钥的分发有信任问题,可以用「数字证书和 CA」来解决,第三方 CA 其实就是「证书认证机构」,它们具有极高的信任度,来给公钥签名,保证公钥是无法伪造的,可信的。
操作系统和浏览器都内置了各大 CA 的证书,上网的时候会顺着证书链一层层的验证,找到根证书来确定证书是可信的,证书可信那公钥就可信。
这一顿猛操作,又带来一个问题,在第一次交换密钥时,比平常多做了很多事情,导致了 HTTPS 第一次建立连接的时候,访问速度变慢。
优化 HTTPS 访问速度:
1、可以选择 SSL 加速卡
2、更快的 CPU
3、Linux/Nginx/OpenSSL 内核和软件升级
4、证书优化
网上有免费的证书「Let\\’s Encrypt」机构,出于安全考虑证书有效期只有 90 天,时间一到就会过期,需要定期更新。不过,你可以用 crontab 设置定时任务,发送更新证书的请求。
HTTPS 是大势所趋,能尽快迁移的就尽快迁移。把原有的 HTTP 站点,可以 301 重定向到 HTTPS 。

内容和图片来源于:极客时间《透视 HTTP 协议》

原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34621.html

(0)
小道研究's avatar小道研究
上一篇 2024年4月8日 上午10:23
下一篇 2024年4月8日 上午10:25

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注