当前位置: 首页 > web >正文

https相关

每日任务 1:HTTPS 和 HTTP 的区别

面试官您好!HTTPS 和 HTTP 的核心区别体现在安全性、连接流程、端口和证书依赖这四个方面,其中最关键的是安全机制的差异:

首先,安全机制完全不同。HTTP 是明文传输,数据就像“裸奔”一样,存在三大风险:一是窃听风险,比如用户登录时的账号密码可能被中间人截取;二是篡改风险,传输的网页内容可能被植入恶意广告;三是冒充风险,攻击者可以伪装成合法服务器,比如钓鱼网站。
而 HTTPS 在 HTTP 基础上增加了 SSL/TLS 加密层,通过混合加密技术解决窃听问题——握手时用非对称加密(如 RSA)交换会话密钥,通信时用对称加密(如 AES)保证效率;通过摘要算法(如 SHA-256)和数字签名解决篡改风险,确保数据完整性;通过 CA 签发的数字证书解决冒充风险,客户端会验证服务器证书的合法性,比如检查证书是否过期、域名是否匹配,就像验证身份证一样。

其次,连接流程更复杂。HTTP 只需要 TCP 三次握手(约 1 个 RTT 时间)就可以传输数据,而 HTTPS 在三次握手之后,还需要进行 TLS 握手(额外 1-2 个 RTT):客户端和服务器先协商加密算法、交换随机数,服务器发送数字证书,客户端验证通过后,再生成预主密钥并加密传输,双方最终生成会话密钥开始加密通信。比如用户访问 HTTPS 网站时,首次加载会比 HTTP 慢一些,就是因为多了 TLS 握手的步骤。

然后,默认端口和证书依赖不同。HTTP 默认用 80 端口,HTTPS 则用 443 端口,而且 HTTPS 必须向 CA 申请数字证书。证书就像服务器的“电子身份证”,免费的 DV 证书适合个人博客,企业网站通常需要购买 EV 证书,成本更高但安全性更强,浏览器会显示绿色锁标,让用户更信任。

最后,性能和成本有取舍。HTTP 没有加密开销,性能更高,但不安全;HTTPS 虽然更安全,但会增加 CPU 计算开销和延迟。不过现在 TLS 1.3 优化了握手流程,首次连接延迟从 3 个 RTT 减少到 1 个 RTT,后续连接还能通过会话复用实现 0 RTT 恢复,比如用户第二次打开同一个 HTTPS 网页时,速度会明显变快。

每日任务 2:HTTPS 的工作原理(建立连接过程)

面试官您好!HTTPS 的核心是通过 SSL/TLS 协议建立安全连接,整个过程可以分为握手阶段加密通信阶段,我用一个用户访问 HTTPS 网站的例子来详细说明:

第一步:客户端发起连接请求
用户在浏览器输入网址后,客户端(浏览器)先向服务器发送一个 ClientHello 请求,里面包含支持的 TLS 版本(比如 TLS 1.3)、生成的随机数(Client Random),以及支持的加密套件列表(比如 ECDHE 密钥交换算法 + AES 加密算法)。这一步就像敲门问:“你支持哪些安全协议呀?”

第二步:服务器响应并传输证书
服务器收到请求后,会返回 ServerHello 响应,选定 TLS 版本和加密套件(比如选 TLS 1.3 和 ECDHE 算法),然后发送自己的 数字证书。这个证书里包含服务器的公钥、CA 的签名、有效期等信息,相当于服务器出示“身份证”说:“这是我的合法证明。”

第三步:客户端验证证书并生成预主密钥
浏览器拿到证书后,会用系统内置的 CA 根证书去验证证书的合法性。比如检查证书是否由受信任的 CA 签发、是否在有效期内、域名是否和当前网址一致。如果证书是伪造的,浏览器会弹出风险提示;如果验证通过,浏览器就从证书中提取服务器公钥,生成一个 预主密钥(Pre-Master Key),并用服务器公钥加密后发送给服务器。这一步就像检查身份证真伪,确认无误后,把一个秘密数字用服务器的“锁”(公钥)加密后传过去。

第四步:双方生成会话密钥
客户端和服务器都拥有三个随机数:Client Random、Server Random(服务器在响应中发的随机数)、Pre-Master Key。双方通过相同的算法,用这三个随机数生成一个相同的 会话密钥(对称加密密钥)。这个过程就像双方各自用同一组密码本,把三个随机数“翻译”成同一个密钥,之后就用这个密钥加密数据,效率很高。

第五步:加密通信与完整性校验
接下来,双方用会话密钥加密 HTTP 数据。比如浏览器请求网页内容时,数据会被分割成小块,每个小块先计算哈希值生成 消息认证码(MAC),然后连同学术一起加密传输。服务器收到后,解密并重新计算 MAC 码,确保数据没被篡改。这就像给每个快递包裹加了一个唯一的“指纹”,收到后核对指纹是否一致,保证包裹没被拆过。

最后:连接结束与密钥销毁
数据传输完成后,双方会销毁会话密钥,关闭 TCP 连接,避免密钥泄露。这样即使中间有人截取了数据,没有密钥也无法解密,而且下次连接会生成新的密钥,进一步保障安全。

总结来说,HTTPS 通过“握手认证→密钥协商→加密传输→完整性校验”这一系列步骤,确保了数据传输的安全,就像给通信过程加了一把“加密锁”,而数字证书和会话密钥就是这把锁的核心钥匙。

http://www.xdnf.cn/news/13130.html

相关文章:

  • 鸿蒙Next仓颉语言开发实战教程:店铺详情页
  • Linux 性能利器:详解 `top` 命令的使用与输出信息解析
  • 【Pandas】pandas DataFrame dropna
  • Linux安装字体
  • Python抽象基类注册机制解析:优雅实现接口兼容的艺术
  • 基于 HTTP 的单向流式通信协议SSE详解
  • Android Framework预装traceroute执行文件到system/bin下
  • JS红宝书10.1-10.5 函数
  • PHP7内核剖析 学习笔记 第十章 扩展开发(1)
  • 【蓝桥杯嵌入式】【复盘】第15届国赛真题
  • 7种分类数据编码技术详解:从原理到实战
  • Java基于BS架构的OA流程可视化实战:从工作流引擎到前端交互(附完整源代码+论文框架)
  • 学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
  • ubuntu22.04有线网络无法连接,图标也没了
  • QT 仿网易云项目
  • React Native 开发环境搭建(全平台详解)
  • LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
  • 开始新的认识,对worldquant(50alpha)
  • NLP-文本表征(2011-2022)
  • 中国政务数据安全建设细化及市场需求分析
  • API网关Envoy的鉴权与限流:构建安全可靠的微服务网关
  • C++--string的模拟实现
  • JS红宝书笔记 - 3.3 变量
  • Spring Boot面试题精选汇总
  • 记录:外扩GPIOD访问报警告
  • 在ARM+Ascend NPU上适配Step-Audio模型
  • AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
  • 初识Docker——容器化革命核心概念
  • 解决HuggingFace不能git clone的问题
  • 基于Spring的Java公共资源模块开发与最佳实践