网站为什么需要 SSL 证书才能实现 HTTPS
一句话先讲清楚:HTTPS = HTTP 协议 + SSL/TLS 加密层,而 SSL 证书是服务器的合法身份凭证,没有证书,浏览器就无法完成身份校验、建立加密通道,也就跑不起来 HTTPS。
现在技术上一般叫 TLS(SSL 是旧名称,日常仍习惯叫 SSL 证书)
1. 核心两大作用:加密 + 身份认证
① 传输加密(防窃听、防篡改)
普通 HTTP:浏览器和服务器之间传输的是明文。 比如你填账号密码、手机号,数据包在网络链路中(路由器、运营商、公共 WiFi)可以被直接抓包看到内容;中间人还能篡改返回的页面内容。
启用 TLS + 证书之后:
- 浏览器和网站服务器协商一套对称加密密钥
- 后续所有通信数据都是密文,就算被抓包,第三方也无法解密读取和修改数据
这里用到非对称加密来安全交换对称密钥,而非对称加密的公钥,就存放在 SSL 证书里。
② 身份认证(防钓鱼,确认你访问的是真网站)
这是证书不可替代的价值: 证书由 CA 证书机构签发,绑定域名,里面包含:
- 网站域名
- 网站公钥
- CA 机构签名、有效期等信息
浏览器访问 HTTPS 网站时:
- 服务器把 SSL 证书发给浏览器
- 浏览器用 CA 根证书验证证书签名是否合法
- 校验证书域名是否和你访问的域名一致 ✅ 校验通过:建立加密连接,地址栏显示小锁 ❌ 校验失败:浏览器直接弹出危险警告,阻止访问
如果没有 SSL 证书:浏览器无法确认服务器身份,中间人可以伪造服务器,你的加密连接就会连到钓鱼网站。
2. 能不能不用证书做加密?
技术上可以做纯加密,但浏览器不认。 你可以自己生成一个自签名证书,也能建立加密通道。但:
- 自签名证书没有 CA 背书,浏览器识别为不安全
- 访问时会强制报安全风险,普通用户不敢继续打开 所以公网对外服务,必须使用 CA 签发的 SSL 证书。
3. 业务层面的必要性(除安全之外)
- 浏览器标识:HTTP 网站在 Chrome/Edge 会标记 "不安全",HTTPS 显示安全锁;
- SEO 搜索引擎:百度、谷歌优先收录 HTTPS 站点,HTTP 会降权;
- 浏览器 API 限制 :很多前端能力(定位、摄像头、Service Worker)只允许 HTTPS 环境调用,HTTP 站点不能使用;
- 合规要求:涉及用户隐私、登录、支付的业务,等保、网信相关规范都要求 HTTPS 加密传输;
- 小程序 / APP 对接:微信小程序、很多 APP 接口,强制要求域名 HTTPS。
4. 简单流程总结
- 网站服务器部署 SSL 证书(含域名公钥)
- 用户浏览器访问域名 → 服务器下发证书
- 浏览器校验证书合法性
- 校验通过,双方通过非对称加密协商会话密钥
- 后续 HTTP 报文全部用会话密钥加密传输 → HTTPS
补充区分证书类型(你业务会用到)
- DV 域名验证证书:只验证域名所有权,签发快,适合官网、普通站点(JoySSL 常用)
- OV 组织验证证书:验证企业组织信息,证书里展示公司名称
- EV 扩展验证证书:严格企业核验,早年地址栏展示企业名,现在浏览器基本弱化 EV 标识
- 国密证书 SM2:国产密码算法,满足国内等保、国产化场景