HTTP和HTTPS 完整指南
HTTP 与 HTTPS 完整指南一、HTTP 协议详解1.1 什么是 HTTPHTTPHyperText Transfer Protocol超文本传输协议是互联网的基石协议专门用于在客户端浏览器和服务器之间传输网页、图片、视频等资源。核心特点无状态协议每次请求都是独立的服务器不会记住你上一次访问的信息明文传输所有数据以可读文本形式在网络中传输基于 TCP运行在可靠的 TCP 连接之上默认使用80 端口⚠️致命缺陷由于采用明文传输网络中的任何中间节点路由器、网关、黑客抓包工具都能直接读取传输内容包括账号密码、聊天记录、浏览历史等敏感信息。1.2 HTTP 工作原理完整的 HTTP 通信分为两个阶段请求Request和响应Response阶段一客户端发起 HTTP 请求浏览器通过TCP 三次握手与服务器 80 端口建立连接连接成功后客户端按照固定格式发送 HTTP 请求报文请求报文包含请求方式GET/POST、URI、协议版本号、MIME 头部信息1.3 HTTP 请求报文结构HTTP 请求由三部分组成[请求行] [请求头部MIME 信息] [空行] [请求正文可选]示例 1GET 请求最常用访问网页GET /index.html HTTP/1.1 Host: www.baidu.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8 Accept-Language: zh-CN,zh;q0.9 Accept-Encoding: gzip, deflate Connection: keep-alive结构拆解① 请求行首行GET /index.html HTTP/1.1GET请求方法获取资源/index.html统一资源标识符URI指定要访问的资源路径HTTP/1.1协议版本号② 请求头部MIME 信息请求头部包含三类信息类别字段作用请求修饰符Host、Connection指定访问的主机域名、是否保持长连接客户端信息User-Agent告诉服务器客户端的浏览器类型、操作系统版本许可接收内容Accept、Accept-Language、Accept-Encoding告知服务器我可以接收 HTML 网页、中文文本、gzip 压缩数据重点头部末尾必须空一行GET 请求通常不需要携带请求正文示例 2POST 请求提交表单数据POST /login.php HTTP/1.1 Host: test.com User-Agent: Chrome/120.0 Accept: text/html Content-Type: application/x-www-form-urlencoded Content-Length: 27 usernameadminpassword123456新增字段说明Content-Type提交数据的格式这里是表单格式Content-Length请求正文的字节长度27 字节空行之后就是提交的表单数据请求正文理解要点TCP 三次握手打通 80 端口后客户端将上述整段文本原样发送给服务器服务器解析后返回网页内容——这就是 HTTP 请求的全过程。1.4 HTTP 响应报文结构服务器收到请求后返回 HTTP 响应报文结构如下[状态行] [响应头部MIME 信息] [空行] [响应正文网页内容/数据]示例 1成功响应200 OKHTTP/1.1 200 OK Server: nginx/1.20.1 Date: Sun, 02 Aug 2026 08:30:22 GMT Content-Type: text/html; charsetutf-8 Content-Length: 128 Connection: keep-alive html body h1欢迎访问网页首页/h1 p这是服务器返回的页面内容/p /body /html结构拆解① 状态行首行HTTP/1.1 200 OKHTTP/1.1协议版本号200状态码代表请求成功OK状态描述文字② 响应头部MIME 信息类别字段作用服务器信息Server标明服务器软件及版本nginx/1.20.1实体信息Content-Type、Content-Length描述返回内容的格式、大小其他Date、Connection响应时间、连接状态③ 响应正文空行之后的 HTML 代码就是浏览器最终渲染的页面内容示例 2错误响应404 Not FoundHTTP/1.1 404 Not Found Server: Apache/2.4.41 Date: Sun, 02 Aug 2026 08:35:10 GMT Content-Type: text/html; charsetgbk Content-Length: 96 h2404错误您访问的页面不存在/h2状态码404资源不存在响应正文展示错误提示页面1.5 常见 HTTP 状态码状态码含义说明200OK请求成功服务器正常返回内容301Moved Permanently永久重定向资源已永久移动到新位置302Found临时重定向资源暂时在另一个位置400Bad Request请求语法错误服务器无法理解401Unauthorized需要身份验证未登录或登录失效403Forbidden服务器拒绝访问权限不足404Not Found请求的资源不存在500Internal Server Error服务器内部错误502Bad Gateway网关错误上游服务器响应异常503Service Unavailable服务暂时不可用服务器过载或维护二、SSL/TLS 协议详解2.1 SSL 与 TLS 的关系SSLSecure Sockets Layer安全套接层最早由网景公司Netscape发明的加密协议经历了 SSL 1.0、2.0、3.0 三个版本⚠️现已全部淘汰存在严重安全漏洞现代浏览器已禁用TLSTransport Layer Security传输层安全协议由 IETF 组织在 SSL 3.0 基础上重新设计的继任版本本质是SSL 的安全升级版日常口语中“SSL” 和 “TLS” 经常混用但规范名称是TLS理解网址开头的https://中的加密层规范叫法是TLS老式叫法统称SSL。2.2 TLS/SSL 的核心作用HTTP 的致命问题所有数据明文传输抓包即可看到账号、密码、聊天记录。TLS/SSL 解决三大安全问题问题解决方案效果窃听风险数据加密传输内容全程密文中间人抓包只能看到乱码冒充风险身份认证验证网站真实性防止钓鱼网站伪装成银行、购物网站篡改风险完整性校验数据被中途篡改如劫持替换文件两端立即发现并丢弃2.3 TLS 在网络层级中的位置应用层HTTP/FTP/SMTP ↓ 传输层TLS/SSL加密层 ↓ 传输层TCP ↓ 网络层IP工作流程先建立 TCP 连接443 端口进行 TLS 握手协商加密规则在加密通道内收发 HTTP 请求/响应公式HTTPS HTTP TLS2.4 TLS 版本演进版本状态说明TLS 1.0 / 1.1❌ 已淘汰存在安全缺陷现代浏览器/服务器默认禁用TLS 1.2✅ 主流版本目前广泛使用兼容性强绝大多数网站在用TLS 1.3 最新最强握手流程简化延迟更低安全性最强百度、淘宝已部署2.5 TLS 握手流程简化版目标在不安全的网络中安全地协商出一个会话密钥后续用它加密通信步骤客户端 → 服务器发送我支持的 TLS 版本、加密算法列表、随机数 A服务器 → 客户端返回选定的 TLS 版本和加密算法、数字证书、随机数 B客户端验证证书检查证书是否由受信任的 CA 签发确认网站身份真实协商会话密钥客户端生成随机数 C预主密钥用服务器公钥加密后发送双方各自用 A B C 计算出相同的会话密钥加密通信后续所有 HTTP 数据用会话密钥进行对称加密传输会话结束断开连接销毁会话密钥巧妙之处结合了非对称加密安全传输密钥和对称加密高速传输数据的优点2.6 通俗类比协议类比HTTP在大街上大声喊话聊天路人都能听见内容TLS/SSL两人戴上加密对讲机通话外人听不懂且确认对方不是冒充的2.7 相关核心概念① 数字证书CA 证书网站的网络身份证由权威机构如 DigiCert、Let’s Encrypt颁发包含网站域名、公钥、证书有效期、CA 签名是 TLS 身份认证的核心② 端口号HTTP 默认端口80HTTPS 默认端口443③ SSL 卸载使用专用硬件负责 TLS 加解密减轻 Web 服务器 CPU 压力常见于高并发网站的服务器架构三、HTTPS 协议详解3.1 什么是 HTTPSHTTPS HTTP TLS/SSLHTTPS 是 HTTP 的安全版本在 TCP 和 HTTP 之间插入了 TLS/SSL 安全层客户端 ↔ [TCP] ↔ [TLS 加密] ↔ [HTTP] ↔ 服务器3.2 HTTPS 设计目标目标说明类比数据保密性传输内容加密第三方无法查看快递包裹密封别人不知道里面装了什么数据完整性及时发现被篡改的内容快递员虽不知道内容但掉包后能立即发现身份认证确保数据到达正确的目的地包裹必须送到指定收件人手中不能送错3.3 HTTP 与 HTTPS 的区别对比项HTTPHTTPS安全性明文传输易被窃听加密传输安全性高端口80443证书不需要需要向 CA 申请证书免费或付费连接状态无状态基于 SSL/TLS 的有状态加密连接速度快稍慢增加了 TLS 握手和加解密过程SEO 排名正常搜索引擎优先收录 HTTPS 网站3.4 HTTPS 双向身份认证流程目标确保客户端和服务器双方身份都真实可靠步骤客户端 → 服务器发起 SSL 握手消息请求建立连接服务器 → 客户端发送服务器证书包含服务器公钥客户端验证服务器证书检查证书是否由受信任的 CA 签发操作系统内置 CA 根证书列表检查证书是否过期、域名是否匹配❌ 如果验证失败浏览器会显示安全警告由用户决定是否继续✅ 验证通过客户端认可服务器身份服务器 → 客户端要求客户端发送证书仅在需要客户端认证的场景如企业内网、银行系统服务器验证客户端证书验证失败则关闭连接成功则从证书中获取客户端公钥双向认证完成双方确认彼此身份真实开始协商会话密钥注意日常浏览网页通常只验证服务器身份客户端认证仅在高安全场景使用。3.5 HTTPS 数据传输加密协商加密算法客户端发送我支持的加密算法列表非对称加密密钥交换RSA、ECDHE数据签名摘要SHA-256、SHA-384对称加密数据传输AES-128、AES-256、ChaCha20密钥长度128 位、256 位服务器选择安全性最高的算法组合返回给客户端密钥交换客户端生成随机字符串预主密钥用服务器公钥加密后发送服务器用私钥解密得到预主密钥双方各自计算出会话密钥后续所有数据用会话密钥进行对称加密传输巧妙设计用非对称加密安全传输密钥用对称加密快速传输数据——兼顾安全性和性能。3.6 防止重放攻击重放攻击攻击者嗅探整个登录过程获取加密的登录数据包后不解密直接重传尝试冒充用户登录。防护机制SSL 使用序列号保护每个数据包每次 SSL 握手都有唯一随机数标记服务器会检测重复的序列号拒绝重放的数据包四、HTTPS 的优缺点分析4.1 HTTPS 的优点优点说明✅身份认证确保数据发送到正确的服务器防止钓鱼网站✅数据加密防止数据在传输过程中被窃取、查看✅数据完整性防止数据被中途篡改确保接收内容完整✅提升信任度浏览器地址栏显示锁标志用户更信任✅SEO 优势搜索引擎如 Google优先收录 HTTPS 网站✅合规要求金融、医疗、电商等行业强制要求使用 HTTPS4.2 HTTPS 的缺点缺点说明影响❌握手延迟TLS 握手需要 2-3 次往返增加页面加载时间首次访问延迟约 200-300ms❌计算开销加解密消耗 CPU 资源服务器负载增加需要更强的服务器配置❌缓存效率低HTTPS 缓存机制不如 HTTP 高效CDN 成本增加❌证书成本商业证书需要付费免费证书如 Let’s Encrypt 功能有限年费从几百到数万元不等❌IP 绑定限制传统 SSL 证书需要绑定独立 IPSNI 技术已解决IPv4 地址资源紧张❌安全范围有限无法防御 DDoS 攻击、服务器入侵、SQL 注入等需要配合其他安全措施❌信任链风险如果 CA 被控制或证书被伪造仍可能遭受中间人攻击某些国家可控制本地 CA4.3 HTTPS 的局限性HTTPS 不能防御DDoS 攻击分布式拒绝服务服务器漏洞SQL 注入、XSS、CSRF客户端恶意软件木马、键盘记录器社会工程学攻击钓鱼邮件、诈骗电话正确认识HTTPS 主要保护传输层安全但不能解决应用层代码漏洞、服务器配置错误、用户安全意识薄弱等问题。五、总结对比项目HTTPHTTPS定义超文本传输协议HTTP TLS/SSL 加密层端口80443安全性明文传输易被窃听加密传输安全性高速度快稍慢TLS 握手 加解密证书不需要需要 CA 证书成本低较高证书费用 服务器开销SEO正常搜索引擎优先收录适用场景静态网页、公开信息登录、支付、隐私数据传输六、建议网站开发者✅强制使用 HTTPS所有涉及用户登录、支付、隐私数据的网站必须启用 HTTPS✅选择 TLS 1.2禁用 TLS 1.0/1.1优先支持 TLS 1.3✅免费证书方案中小网站可使用 Let’s Encrypt 免费证书✅HTTP 自动跳转配置 301 重定向将 HTTP 流量强制跳转到 HTTPS✅启用 HSTSHTTP Strict Transport Security强制浏览器只能通过 HTTPS 访问安全测试人员检查证书有效性证书是否过期、域名是否匹配、是否由受信任 CA 签发测试 TLS 版本是否禁用了 TLS 1.0/1.1是否支持 TLS 1.3检测中间人攻击使用工具如 sslscan、testssl.sh检测 SSL/TLS 配置漏洞抓包分析使用 Wireshark 验证流量是否真正加密普通用户️识别 HTTPS 网站地址栏有锁标志网址以https://开头️警惕安全警告浏览器提示证书无效时不要继续访问️避免公共 Wi-Fi 输入密码即使是 HTTPS也可能遭受高级中间人攻击七、进阶知识7.1 HTTPS 性能优化技巧启用 HTTP/2多路复用大幅提升 HTTPS 性能Session 复用缓存 TLS 会话减少重复握手OCSP Stapling服务器预先获取证书状态减少客户端查询时间使用 CDN让用户就近访问减少 TLS 握手延迟7.2 常见 SSL/TLS 漏洞漏洞名称影响防护HeartbleedOpenSSL 漏洞泄露服务器内存数据升级 OpenSSLPOODLESSLv3 降级攻击禁用 SSLv3BEAST针对 TLS 1.0 的攻击升级到 TLS 1.2CRIME/BREACH压缩攻击禁用 TLS 压缩