前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HTTPS是什么?为什么现代网站需要HTTPS?| 互联网小科普

HTTPS是什么?为什么现代网站需要HTTPS?| 互联网小科普

原创
作者头像
Mintimate
修改2024-05-17 00:02:02
3700
修改2024-05-17 00:02:02
举报
文章被收录于专栏:Mintimate's BlogMintimate's Blog

博客:https://www.mintimate.cn Mintimate’s Blog,只为与你分享

使用浏览器打开网站,你会发现网址边上,有时候会有一个锁的标志:

“锁”的图标
“锁”的图标

看上去,似乎是提醒你,某些东西已经被加密。其实,就是代表网站使用的是HTTPS协议,也就是:超文本传输安全协议(英语:HyperText Transfer Protocol Secure,缩写:HTTPS;常称为HTTP Secure)。

HTTP协议最初设计于1990年代初,互联网尚处于相对初级的发展阶段,主要关注的是如何有效地链接文档和资源,网络环境相对封闭且信任度较高,对数据安全和隐私保护的需求并不像今天这样迫切。

嘿嘿,H.T.M.L
嘿嘿,H.T.M.L

随着时代演进,信息传输安全日益受到重视,为了防范数据在传输过程中被非法监听或泄露,HTTPS应运而生。

HTTPS通过在HTTP协议基础上集成SSL/TLS加密技术,为数据包披上了一层安全外衣,有效增强了网络通信的安全性和隐私保护,从而适应了互联网发展中对于安全需求的提升

好奇
好奇

所以? HTTPS相比HTTP,具体有什么区别呢?为什么现在的网站会需要HTTPS呢?

HTTP版本

首先,经常有人把HTTPS和HTTP的版本弄混。其实这两个有关系,但是关联不大:

  • HTTP版本: 指的是协议的基础规范和功能特性,定义了客户端与服务器之间数据传输的规则。每个版本的HTTP(如HTTP/1.0、HTTP/1.1、HTTP/2)都在前一版本的基础上进行了改进,比如: HTTP/1.1 (1997年发布)在HTTP/1.0基础上引入了持久连接、增加了PUT、DELETE等请求方法等;HTTP/2(2015年发布)又进一步支持多路复用,一个 TCP 连接上可并行处理多个请求。
  • HTTPS: 则是HTTP协议的安全版本,通过在HTTP协议之上添加一个安全层(通常是TLS/SSL协议),实现了数据的加密传输,保障了通信的安全性。这个安全层的工作原理与HTTP的版本无关,它可以应用于任何版本的HTTP协议上

其实,HTTPS的发展也挺有趣的:最早的HTTPS在1994年由Netscape(没错,就是著名的「网景」公司;被IE打败…… 没想到,现在IE也无了~)开发,用于提供网络浏览器和网站服务器之间的安全通信。

后来在1996年,HTTPS被正式纳入HTTP/1.1规范中。随着互联网的快速发展,HTTPS逐步得到广泛应用,成为保护网络通信的主要手段之一,也逐渐从之前的付费项目,到如今Let's Encrypt等免费SSL/TLS证书的出现。

SEO

为什么,我们现在需要使用HTTPS呢?现在很多搜索引擎,已经把HTTPS纳入为SEO评分内:

Google的站点管理
Google的站点管理
Google站点评分
Google站点评分

其实,目前HTTPS对SEO的权重还是有较大的影响。也就是,如果不使用HTTPS…… 本就“人迹罕至”的网站,可能更加“荒僻”了。

另外,还有3个主要原因:

  • 浏览器兼容
  • 数据防监听
  • 数据完整性验证

浏览器兼容性

从 2018 年 7 月发布的 Chrome 68 开始,所有不安全的 HTTP 流量在 URL 栏中都会标记为“不安全”。对于没有有效 SSL 证书的网站,也都会显示此通知。其他浏览器也纷纷效仿。

浏览器上显示不安全提示
浏览器上显示不安全提示

甚至,我们之前会使用Nginx的配置:

代码语言:nginx
复制
server {
    listen 80;
    server_name your_domain.com;

    # 80 重定向到 443,进而实现 HTTP -> HTTPS
    if ($server_port !~ 443) {
        rewrite ^(/.*)$ https://$host$1 permanent;
    }
}

这是因为,我们输入的网址,默认浏览器会认为是HTTP普通协议,会直接使用http://进行请求,而我们希望用户尽可能使用我们设置的https://,就会进行这样的操作。

但是,Chrome 从90版本开始,就已经是默认请求HTTPS,日后说不定都不需要Nginx上进行这样的处理啦:

Chromium系请求页面
Chromium系请求页面

虽然HTTPS,因为需要使用证书对内容加密,对传输的速度有一定的影响;但是Chrome和Chromium已经默认请求HTTPS了,一定程度上,就默认请求速度而言HTTPS和HTTP的速度相差更少了。

数据防监听

我们知道HTTPS是有使用非对称加密的,也就是客户端使用的公钥,和服务器端的私钥是不一样的:

HTTPS加密传输
HTTPS加密传输

这样有什么好处呢? 很简单,如果有人在中间截获了数据报文,那么正常情况下,也是没有用的(没有私钥对其解密)。

当然,也需要小心“中间人攻击”就是了:

中间人攻击
中间人攻击

其实,一些抓包工具,就是使用这个原理,劫持请求,使用抓包工具的证书替代服务器下发的证书,进而解析内容。不过“中间人”攻击、抓包工具,通常需要用户手动确认在设备安装客户端证书,否则浏览器等设备也会拒绝非公信机构的证书

数据完整性校验

HTTPS使用数字签名和消息认证码 (Message Authentication Code) 来确保数据完整性。其实和“数据防监听”类似,本质就是把数据进行Hash处理后,生成一组哈希值,用于校验收到的信息,经过哈希处理后,能否得到相同的信息。

MAC: Message Authentication Code
MAC: Message Authentication Code

再详细一下:

  1. 握手阶段:在HTTPS建立连接的握手阶段,客户端和服务器会协商使用的加密算法和密钥。密钥协商可以使用公钥加密算法(如RSA)或者椭圆曲线加密算法(如ECDSA)来实现。
  2. 密钥生成:一旦协商完成,客户端和服务器将生成一个共享的对称密钥,该密钥将用于后续的通信加密和消息认证码计算
  3. 数据加密和认证:在HTTPS通信过程中,传输的数据会使用对称密钥进行加密和解密。同时,为了验证数据的完整性,每个数据包还会计算消息认证码。
    1. 数据加密:发送方使用对称密钥对要发送的数据进行加密,确保数据在传输过程中不被窃听者获取。
    2. 消息认证码计算:发送方使用密钥和加密算法(如HMAC-SHA256)对加密后的数据进行处理,生成一个固定长度的消息认证码。
  4. 认证码验证:接收方收到加密的数据和消息认证码后,会使用相同的密钥和加密算法进行计算。然后与接收到的消息认证码进行比较。如果计算得到的认证码与接收到的认证码一致,说明数据完整无误;如果不一致,则说明数据可能已经被篡改或损坏。

是不是有小伙伴好奇,不是说HTTPS是非对称加密么? 为什么这里又出现了对称加密?

要知道,非对称加密,对算力和性能是有需求的。使用4096位密钥对内容进行加密,HTML的内容又复杂,如果全程使用非对称加密,有点过于奢侈。所以,通常情况,HTTPS 中内容传输加密采取的是对称加密,而不是非对称加密。

SSL发展

综上所述,现代的网站,无论是出于用户数据安全,还是传输的稳定性上,亦或者是网站的搜索引擎的收录上,HTTPS都是越来越重要的。

而实现HTTPS,就需要在网站上部署SSL密钥对,如何申请密钥证书呢?毕竟,自己使用OpenSSL的自签证书,不是公认权威机构部署签名的,无法被浏览器信任。

SSL
SSL

其实SSL的发展,也是挺有趣的。早期阶段(大概90年代中期),SSL 证书只能由少数几家权威 CA 机构申请,费用较高,普及程度较低,这个时候一般只有银行等一些对安全有较高要求的企业会部署SSL;到2015年,开源项目 Let's Encrypt 诞生,提供免费的 SSL/TLS 证书,推动了 HTTPS 的普及和应用,降低了网站管理员的成本,中小企业和个人也可以使用SSL证书。

而到了现在,出现了越来越多的自动化 SSL/TLS 证书申请和更新工具,如 acme.sh。大型云服务提供商也开始提供免费的 SSL/TLS 证书服务,如 AWS、腾讯云等。甚至,你如果使用Cloudflare,直接全站二级域名SSL化。

不得不说,时代在进步。

改天,我们就来说说,如何使用acme.sh自动签署SSL并自动续签域名。一劳永逸~

下次见👋
下次见👋

参考内容:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HTTP版本
  • SEO
  • 浏览器兼容性
  • 数据防监听
  • 数据完整性校验
  • SSL发展
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档