现在标准协议叫 TLS (SSL是老版本,存在漏洞,但行业习惯仍然叫SSL证书)。HTTPS = HTTP + TLS/SSL,端口443;普通HTTP是明文传输,端口80。
一、SSL证书是什么
SSL证书是CA证书颁发机构签发的数字身份证,遵守X.509标准,部署在网站服务器上。 证书里面包含:
- 网站域名、服务器公钥
- CA机构信息、证书有效期
- CA用自己私钥做的数字签名
三大核心能力:
- 身份认证:证明这个网站是真的,不是钓鱼仿冒站;浏览器校验证书不通过会弹出不安全警告
- 数据加密:传输内容加密,中间人抓包只能拿到乱码
- 完整性校验:数据传输途中一旦被篡改,接收端立刻识别并拒绝接收
证书分类(按验证强度):
- DV域名验证:只验证域名所有权,签发快,适合个人站点
- OV组织验证:核验企业信息,证书带企业名称
- EV增强验证:严格人工审核,高信任度(现在浏览器不再显示绿地址栏)
想要体验SSL证书,可以前往 JoySSL,并注册一个账户,需要填写特定的注册码 230986 以获得测试体验 SSL 证书的使用权限。
二、两种加密基础(HTTPS混合加密)
-
非对称加密(公钥私钥一对)
- 公钥:公开放在SSL证书里,用来加密;
- 私钥:保存在网站服务器,绝不外泄,用来解密;
- 缺点:运算慢,只用来交换密钥,不传输业务数据。
-
对称加密
- 同一个密钥,加密和解密都用它;
- 速度快,握手成功后,网页表单、登录密码等业务数据全部用对称加密传输。
HTTPS巧妙组合两者:非对称加密安全协商出对称密钥,后续大量数据用对称加密,兼顾安全与性能。
三、HTTPS TLS握手完整流程(TLS1.2)
- Client Hello:浏览器发给服务器,携带:支持的TLS版本、加密套件列表、客户端随机数Client Random
- Server Hello :服务器返回,选定TLS版本、加密套件、服务器随机数Server Random,下发SSL证书
- 浏览器校验证书 浏览器使用系统内置CA根证书公钥,校验证书签名;检查域名匹配、证书是否过期、是否吊销。校验失败直接中断连接、弹出风险提示。
- 生成预主密钥 :浏览器生成随机Pre-Master Secret,用证书里的服务器公钥加密发给服务器
- 服务器解密:服务器用自己本地私钥解密,拿到Pre-Master Secret
- 双方各自计算会话密钥 :客户端+服务器,使用 Client Random + Server Random + Pre-Master Secret,独立算出相同的对称会话密钥
- Change Cipher Spec + Finished消息:双方切换加密模式,互相发送校验消息,验证握手流程没有被篡改
- 握手完成,后续所有HTTP业务数据,都用协商好的对称会话密钥加密传输
TLS1.3大幅简化握手,只需要1-RTT,更快,安全性更强。
四、HTTPS防攻击原理
- 防窃听:流量加密,中间人抓包看不懂内容
- 防篡改:消息带MAC哈希校验,内容改动,校验失败直接丢弃
- 防中间人钓鱼 :证书签名校验是关键。黑客就算拦截流量,伪造不出浏览器信任的有效证书,握手会失败。
⚠️ 注意:HTTPS的小锁,只代表传输链路加密 ,不等于网站内容可信。网站本身代码、业务逻辑有漏洞,HTTPS无法保护。
五、一句话总结
SSL证书就是网站的数字身份证,由可信CA签名;HTTPS依靠TLS握手,先用非对称加密安全交换会话密钥,再用高速对称加密传输网页数据,实现传输加密、身份核验、防篡改三大安全能力。