图片授权基于 www.pixabay.com 相关协议
要想聊 HTTPS ,必须要先聊 HTTP。虽然中间差了一个「S」,但它们对于互联网的改变还是非常巨大的。
字面意思就是「HyperText Transfer Protocol 超文本传输协议」。换成白话说就是:在客户端和服务器之间可以传输图片、音视频等超文本,在传输期间所遵守的约定。也可以当成客户端和服务器签署的「合同」。
客户端能接受什么数据格式、什么压缩格式,这些发给服务器,由服务器选择其中一种格式来把数据传递回来。
但上面的一顿操作都是基于「明文」的,也就是肉眼可见的,用抓包工具完全能抓到的。那这安全性就不言而喻了。所以,HTTPS 来了。
与 HTTP 端口号不一样,其他的请求、结构、连接都是沿用 HTTP ,语义还是 HTTP ,但把下层的协议 TCP/IP 换成了 SSL/TLS。运行在 SSL/TLS 协议上,利用传输加密和身份认证来保证数据的安全性。
对称加密:双方使用同一个密钥来进行加密、解密,是「对称」的。它的运算速度快,但必须要保证密钥的安全性。非对称加密:公钥加密,私钥解密。不是同一个密钥,是「非对称」的。公钥广播出去,可以给任何人使用,但私钥自己保管,来解密公钥加密过的内容。安全性够,但速度慢。混合加密:非对称加密处理速度慢,对称加密速度快,但对称加密又不能保证「密钥」的安全性。于是,客户端和服务器先用【非对称加密】获取到的双方对称加密密钥。然后用【对称加密】来进行数据传输,以保证数据的安全性。SSL/TLS 协议采用的是「混合加密」。数据传输还要注意「完整性」,实现完整性的主要手段是「摘要算法」,一种特殊的压缩算法,把任意长度的字符压缩成固定长度,这个摘要字符是独一无二的。我们在传输的原文后面跟上它的摘要字符,就可以保证数据的完整性。如果黑客改动了原文其中一个标点符号,那摘要和原文就匹配不上,那就无法验证完整性。通过私钥加上摘要算法,来实现「数字签名」。私钥加密,公钥解密,来保证消息的真实性。公钥的分发有信任问题,可以用「数字证书和 CA」来解决,第三方 CA 其实就是「证书认证机构」,它们具有极高的信任度,来给公钥签名,保证公钥是无法伪造的,可信的。操作系统和浏览器都内置了各大 CA 的证书,上网的时候会顺着证书链一层层的验证,找到根证书来确定证书是可信的,证书可信那公钥就可信。这一顿猛操作,又带来一个问题,在第一次交换密钥时,比平常多做了很多事情,导致了 HTTPS 第一次建立连接的时候,访问速度变慢。3、Linux/Nginx/OpenSSL 内核和软件升级网上有免费的证书「Let\\’s Encrypt」机构,出于安全考虑证书有效期只有 90 天,时间一到就会过期,需要定期更新。不过,你可以用 crontab 设置定时任务,发送更新证书的请求。HTTPS 是大势所趋,能尽快迁移的就尽快迁移。把原有的 HTTP 站点,可以 301 重定向到 HTTPS 。
内容和图片来源于:极客时间《透视 HTTP 协议》
原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34621.html