https和http
一、为什么要用https
使用HTTPS的核心原因是解决HTTP明文传输的安全缺陷,同时满足现代Web服务的合规和体验要求,具体可以分为四点:
1.解决HTTP的三大安全风险
HTTP是明文传输,存在三个无法避免的核心问题,HTTPS通过加密完全解决:
防窃听:HTTP传输的账号密码、交易信息、用户隐私都是明文,任何中间节点(比如公共WiFi)都能直接读取;HTTPS加密后,第三方即使截获数据也无法解密
防篡改:HTTP传输的内容容易被中间运营商篡改(比如植入广告、注入恶意脚本);HTTPS能校验内容完整性,一旦被篡改会直接被检测出来,浏览器会终止访问
防冒充:HTTP无法验证服务器身份,攻击者可以伪造假网站钓鱼;HTTPS通过CA证书验证服务器真实身份,用户能通过地址栏锁标确认网站合法性,降低钓鱼风险
2.满足平台和合规要求
现在主流浏览器对HTTP站点都会直接标注「不安全」,会吓退用户,影响信任度
微信、支付宝等平台的小程序、H5应用,强制要求必须使用HTTPS才能正常访问
金融、电商等涉及用户数据的业务,等保合规要求必须加密传输数据,HTTPS是合规基础
3.提升业务表现
搜索引擎(Google、百度)都会给HTTPS站点更高的排名权重,有利于SEO优化,获得更多流量
HTTP/2、HTTP/3等新性能协议,只能基于HTTPS部署,能大幅提升页面加载速度,改善用户体验
4.满足现代前端架构需求
前后端分离、PWA、WebAssembly等现代前端技术,都要求HTTPS环境才能使用;
对于移动端接口、小程序接口,HTTPS也是强制基础要求,HTTP接口无法正常调用。
二、https的加密过程
HTTPS采用「非对称加密交换密钥 + 对称加密传输数据」的混合加密方案,兼顾安全性和传输性能
阶段1:握手协商,交换随机数
客户端发起HTTPS请求,把自己支持的加密套件列表 + 随机数Client Random(客户端生成)发送给服务器
服务器从列表里选出双方都支持的加密套件 + 自己生成的随机数Server Random,同时把服务器的SSL证书返回给客户端
阶段2:验证证书,生成预主密钥
客户端验证SSL证书:确认证书由可信CA颁发、域名匹配、未过期,验证失败浏览器会弹出安全警告
证书验证通过后,客户端生成第三个随机数Pre-Master Secret,用证书里的公钥加密这个随机数,发送给服务器
阶段3:双方生成会话密钥
服务器用自己的私钥解密,拿到Pre-Master Secret
客户端和服务器分别用三个随机数Client Random + Server Random + Pre-Master Secret,通过约定的加密算法计算出最终的对称会话密钥
阶段4:握手结束,加密通信
客户端用会话密钥加密「握手结束消息」,发送给服务器
服务器用会话密钥解密验证,再加密自己的「握手结束消息」返回给客户端
握手完成,之后所有业务数据都用对称会话密钥加密传输:
客户端发送数据前用会话密钥加密,传输过程中即使被截获,没有密钥也无法解密
服务器收到后用会话密钥解密,处理完成后再用同一个密钥加密返回结果
三、http和https区别
| 对比维度 | HTTP | HTTPS |
|---|---|---|
| 默认端口 | 80 | 443 |
| 传输安全性 | 明文传输,数据不加密,容易被窃听、篡改 | 所有传输数据都通过SSL/TLS加密,第三方无法窃取篡改内容 |
| 证书要求 | 不需要SSL证书 | 需要向CA机构申请SSL证书(也可获取免费证书) |
| 协议结构 | 应用层直接基于TCP传输 | HTTP + SSL/TLS加密层 + TCP传输 |
| 性能开销 | 连接建立快,无额外加密开销 | 握手阶段需要额外加密交互,比HTTP稍慢,优化后几乎无感知 |
| 搜索引擎排名 | 不占优势 | 搜索引擎会给HTTPS站点更高的排名权重 |
| 浏览器标识 | 地址栏标注「不安全」 | 地址栏显示锁形标识,可信证书标注「安全」 |

浙公网安备 33010602011771号