网站为什么需要 SSL 证书来实现 https?

网站为什么需要 SSL 证书才能实现 HTTPS

一句话先讲清楚:HTTPS = HTTP 协议 + SSL/TLS 加密层,而 SSL 证书是服务器的合法身份凭证,没有证书,浏览器就无法完成身份校验、建立加密通道,也就跑不起来 HTTPS。

现在技术上一般叫 TLS(SSL 是旧名称,日常仍习惯叫 SSL 证书)

1. 核心两大作用:加密 + 身份认证

① 传输加密(防窃听、防篡改)

普通 HTTP:浏览器和服务器之间传输的是明文。 比如你填账号密码、手机号,数据包在网络链路中(路由器、运营商、公共 WiFi)可以被直接抓包看到内容;中间人还能篡改返回的页面内容。

启用 TLS + 证书之后:

  • 浏览器和网站服务器协商一套对称加密密钥
  • 后续所有通信数据都是密文,就算被抓包,第三方也无法解密读取和修改数据

这里用到非对称加密来安全交换对称密钥,而非对称加密的公钥,就存放在 SSL 证书里。

② 身份认证(防钓鱼,确认你访问的是真网站)

这是证书不可替代的价值: 证书由 CA 证书机构签发,绑定域名,里面包含:

  • 网站域名
  • 网站公钥
  • CA 机构签名、有效期等信息

浏览器访问 HTTPS 网站时:

  1. 服务器把 SSL 证书发给浏览器
  2. 浏览器用 CA 根证书验证证书签名是否合法
  3. 校验证书域名是否和你访问的域名一致 ✅ 校验通过:建立加密连接,地址栏显示小锁 ❌ 校验失败:浏览器直接弹出危险警告,阻止访问

如果没有 SSL 证书:浏览器无法确认服务器身份,中间人可以伪造服务器,你的加密连接就会连到钓鱼网站。

2. 能不能不用证书做加密?

技术上可以做纯加密,但浏览器不认。 你可以自己生成一个自签名证书,也能建立加密通道。但:

  • 自签名证书没有 CA 背书,浏览器识别为不安全
  • 访问时会强制报安全风险,普通用户不敢继续打开 所以公网对外服务,必须使用 CA 签发的 SSL 证书。

3. 业务层面的必要性(除安全之外)

  1. 浏览器标识:HTTP 网站在 Chrome/Edge 会标记 "不安全",HTTPS 显示安全锁;
  2. SEO 搜索引擎:百度、谷歌优先收录 HTTPS 站点,HTTP 会降权;
  3. 浏览器 API 限制 :很多前端能力(定位、摄像头、Service Worker)只允许 HTTPS 环境调用,HTTP 站点不能使用;
  4. 合规要求:涉及用户隐私、登录、支付的业务,等保、网信相关规范都要求 HTTPS 加密传输;
  5. 小程序 / APP 对接:微信小程序、很多 APP 接口,强制要求域名 HTTPS。

4. 简单流程总结

  1. 网站服务器部署 SSL 证书(含域名公钥)
  2. 用户浏览器访问域名 → 服务器下发证书
  3. 浏览器校验证书合法性
  4. 校验通过,双方通过非对称加密协商会话密钥
  5. 后续 HTTP 报文全部用会话密钥加密传输 → HTTPS

补充区分证书类型(你业务会用到)

  • DV 域名验证证书:只验证域名所有权,签发快,适合官网、普通站点(JoySSL 常用)
  • OV 组织验证证书:验证企业组织信息,证书里展示公司名称
  • EV 扩展验证证书:严格企业核验,早年地址栏展示企业名,现在浏览器基本弱化 EV 标识
  • 国密证书 SM2:国产密码算法,满足国内等保、国产化场景
相关推荐
zxanz11 天前
证书运维自动化,守住业务 HTTPS 底线
运维·https·自动化
Lsetea1 天前
Git访问HTTPS证书不受信任:用URL级sslCAInfo限定私有CA范围
git·https·开发工具·ssl证书·ca证书
2501_916007472 天前
抓包工具功能对比,TraceEagle、Charles、Fiddler、Wireshark、mitmproxy 差别
前端·网络协议·ios·adb·https·fiddler·wireshark
闲云自留地2 天前
K8s Ingress 全解:ingress-nginx 部署、域名路径路由、HTTPS 限流灰度一篇通
nginx·https·kubernetes
zxanz12 天前
国密 SM2 SSL 证书和国际证书怎么选,一文理清差异
https·ssl
张赐荣3 天前
sslx: 一个检测、查看 HTTPS 证书信息的跨平台单文件命令行工具
网络协议·http·https
RacentCLM3 天前
HTTPS只在登录时有用?关于TLS的误解讲清
数据库·网络协议·https
伤心的梧桐叶4 天前
商品大图断点续传后打不开,先看是不是把完整响应又接了一遍
http·https
我命由我123454 天前
6-2.Python 异常处理 - 异常捕获(捕获指定异常、常见异常类型、异常信息)
java·运维·开发语言·python·http·https·java-ee
2501_915921434 天前
iOS 实时日志怎么看?KeyMob 的日志过滤、崩溃报告与符号化
android·ios·小程序·https·uni-app·iphone·webview