Linux网络:HTTPS协议


一,HTTPS原理

你可以把HTTP通信 想象成两个人在大街上大声聊天:路人都能听到(信息可能被窃听),任何人都可以插嘴冒充(信息可能被篡改或伪造)

HTTPS 通信 就像两个人在一个 密室里,用密码本对话:建立密室(TLS握手),客户端(你)和服务器(网站)先商量好用哪种加密方式,服务器出示 身份证(数字证书),证明“我真的是 www.xxx.com,不是冒牌货”。

客户端检查身份证(证书是否可信、是否过期、域名是否匹配)。确认身份后,客户端生成一个“对话密钥”,交给服务器(用公钥加密),用同一把钥匙对话(对称加密),之后你们都用这把钥匙加密和解密消息,路人就算偷听,也只能听到乱码。

总结:HTTPS 用 证书 + 加密,保证了:谁在跟你对话(身份认证),说的内容别人看不懂(加密),对话不会被篡改(完整性)


二,加密方式

2-1对称加密

一把钥匙开锁:加密和解密都用同一把钥匙,发送方用钥匙锁箱子,接收方用同一把钥匙开箱子。

  • 例子

你和朋友约定一个密码本(密钥):写“我今晚吃饭吃泡面” → 用密码本加密 → 朋友用同一本密码本解密,微信或者支付宝通信:用户的账号密码、支付金额都用同一个“临时密码本”加密发送到服务器

发送方用密钥
𝐾对明文 𝑃 进行加密 → 得到密文C

接收方用同一个密钥
𝐾对密文解密 → 得到原文 𝑃

  • 优缺点

加密/解密速度快,适合大数据

密钥必须安全传输,否则别人也能解密 比喻:想象你和朋友用同一把锁锁信箱,然后互相传递。只要钥匙安全,你们通信就是私密的。
在这里插入图片描述
大致上面那个图一样HTTPS(TLS)握手完成后,会话密钥保存在浏览器内存的 TLS 栈中,用于加密和解密 HTTP 请求与响应,浏览器不会把密钥写到磁盘或日志里,只存在运行时内存中

直接抓包解析密钥是不可能的网络上的抓包工具,只能看到密文,没有会话密钥,抓到的数据无法解密,必须获取内存中会话密钥,你需要用 调试工具或内存分析工具 直接读取浏览器进程内存,难度高,而且现代浏览器和操作系统有安全机制防止随便访问进程内存


2-2 非对称加密

核心思想:使用 一对密钥

公钥(Public Key):可以公开,用于加密或验证签名

私钥(Private Key):必须保密,用于解密或生成签名

公钥加密 → 私钥解密

私钥签名 → 公钥验证

公钥像银行提供的保险箱,任何人都可以把钱放进去,私钥像银行的钥匙,只有银行能打开保险箱拿到里面的内容

发送方用接收方 公钥 加密消息,接收方用 私钥 解密消息

安全性:即使有人截获密文,也无法解密,因为没有私钥

在这里插入图片描述
通过这种方式每个人都有自己的通信规则,但是只有自己能解开别人发过来的信息


2-3 混合加密

什么是混合加密?

混合加密 = 非对称加密 + 对称加密结合

非对称加密:保证密钥安全传输

对称加密:高效加密大量数据

你和银行想互传大量信件,银行给你一个保险箱(非对称加密),你把一个临时密码本(对称密钥)放进去,银行拿钥匙打开,接下来,你们用这个临时密码本写信,速度快又安全

HTTPS 中的混合加密流程

为什么要混合加密:当我们要使用对称加密时,会因为要发送一个密钥给客户端,但是这个密钥有被黑客截取的风险,所以我们先通过非对称加密将密钥加密安全传输给客户端,客户端再使用密钥和服务端进行堆成加密,实现了既有非对称加密的安全性,又有对称加密数据传输的高效性

非对称加密慢 → 不适合加密大量数据

对称加密快,但密钥传输有风险 → 需要非对称加密安全传输

  • 结合优点:

非对称加密 = 安全传输密钥

对称加密 = 高速数据加密

  • 形象比喻:

非对称加密 = 保险箱锁住临时密码本

对称加密 = 用密码本写信

两者结合 = 既安全又高效

总结:混合加密就是 TLS 使用的策略

  • 核心公式:

握手阶段:非对称加密(传会话密钥)

通信阶段:对称加密(加密实际数据)

它保证了 安全性 + 高性能


2-4 中间人攻击

MITM 攻击的理论步骤:

  • 拦截通信:攻击者位于客户端和服务器之间,拦截客户端发起的 HTTPS 请求

在这里插入图片描述

  • 伪装服务器:攻击者生成自己的公钥/私钥对,向客户端发送伪造公钥(代替服务器的公钥)
    在这里插入图片描述
  • 客户端加密会话密钥:客户端用攻击者公钥加密生成的会话密钥,发送给“服务器”,实际上攻击者能解密

在这里插入图片描述

  • 攻击者解密得到会话密钥:攻击者用自己的私钥解密会话密钥,攻击者现在掌握对称密钥 → 可以解密/篡改所有数据

  • 转发给真正的服务器:攻击者用服务器公钥加密同一会话密钥(或协商新的),双向通信继续,但攻击者在中间完全透明

在这里插入图片描述


三,证书

3-1 HTTPS 证书是什么

HTTPS 证书 是一个数字文件,作用像网站的“身份证”,用来证明网站(比如 example.com)是真实的,防止有人冒充。它让浏览器和网站之间的通信安全(加密),没人能偷看或篡改数据。

通俗比喻:证书就像你去银行办业务,银行出示一张“营业执照”,证明它是正规银行。执照上有“公安局”盖的章,告诉你它没被伪造。

HTTPS 里的作用:告诉浏览器:这个网站是我要访问的真网站,提供“公钥”给浏览器,用来加密数据(后面会讲),确保通信安全,比如你在网站输入密码,不会泄露。


3-2 数据签名

数据签名是证书里的“防伪章”,确保证书内容(比如网站名字、公钥)没被任何人偷偷改过,网站把自己的信息(像名字 example.com 和一把公钥)交给一个可信机构,这个机构把信息“压缩”成一个独特的“指纹”(用一种叫哈希的数学方法,比如 SHA-256),机构用自己的“秘密钥匙”(私钥)给指纹加密,生成一个“签名”,贴在证书上浏览器收到证书后,用机构的“公开钥匙”(公钥)解开签名,检查指纹。如果指纹对得上,说明证书没被改过。

通俗比喻:像你在淘宝买东西,卖家寄来一个包裹,上面有顺丰的防伪封条(签名)。你用顺丰的“验证器”(公钥)检查封条,确认包裹没被打开过。如果有人改了包裹内容,封条就对不上。

为什么重要?防止坏人伪造证书,假装是 example.com,偷你的密码。
例子:你访问 https://example.com,浏览器检查证书的签名,确保是真网站。

HTTPS 里签名保护证书的真实性,让浏览器相信网站的公钥可以用来加密数据


3-3 CA 认证

CA(证书颁发机构)是一个可信的“认证机构”,像“公安局”一样,负责给网站发证书并盖章(签名)。它确保网站是真实的,不是假冒的。

怎么做的?

  • 网站(比如 example.com)向 CA 申请证书,提交自己的名字和公钥。
  • CA 检查网站是不是真的(比如确认 example.com 属于申请者)。
  • CA 用自己的私钥给证书签名,生成一个可信的证书(像 server.crt)。
  • 浏览器用 CA 的公钥(预装在浏览器或电脑里)验证证书的签名,确认网站身份。

通俗比喻:

CA“公安局”,给正规网站发“身份证”(证书)。你用公安局的公章(CA 公钥)检查身份证,确认网站不是假的,如果一个假网站给你个伪造的身份证,章不对,浏览器就会警告(“证书不受信任”)

  • 为什么重要?

确保你访问的是真网站,比如 example.com而不是黑客的假网站。
例子:你访问 https://bank.com,CA 认证保证这是真的银行网站。

  • HTTPS 里:CA 认证让浏览器信任证书,进而信任网站的公钥,用来安全交换加密密钥。

3-4 简单总结

数据签名:证书的“防伪章”,用哈希(SHA-256)+ 私钥加密,确保证书没被改,像包裹上的封条,浏览器用 CA 公钥检查。

CA 认证:可信机构签发证书,证明网站身份真实,像公安局发的身份证,浏览器用 CA 公钥验证。

HTTPS 里的作用:签名确保证书可信,CA 认证确认网站身份,共同建立安全通信。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值