公钥
服务端生成的密钥,和私钥一起成对生成(非对称加密),公钥可以公开给所有人,在TLS加密过程中,公钥负责传输给客户端,客户端在自己端生成密钥(对称加密),然后用公钥加密密钥返还给服务端,服务端通过私钥解密,拿到对称加密的密钥,后续的传输通道信息就用密钥来加密解密。
私钥
服务端生成的密钥,和公钥一起生成,不可公开,用于解密公钥加密的密钥
非对称加密
常见算法
RSA:最常用,TLS 证书、密钥协商、登录签名都用
ECC:椭圆曲线加密,同等安全密钥更短、速度更快,移动端、物联网常用
SM2:国产国密非对称算法,替代 RSA
DSA/ECDSA:主要用于数字签名,不适合加密
对称加密
常见算法
AES:目前最主流、行业标准,TLS、APP 接口、文件加密全在用,分 AES-128/192/256
DES:老旧、安全性弱,基本淘汰
3DES:DES 升级版,现在也逐步被 AES 替代
SM4:国产国密算法,金融、政务刚需
RC4:流式对称加密,老旧场景用,安全性一般
附加:哈希摘要(常配合加密用,不算加密算法 )
MD5、SHA1、SHA256、SHA512、SM3(国密哈希)作用:做完整性校验、签名摘要,不可逆、不能解密。
CA证书
在传统的HTTPS中,第一步是校验、第二步是加密,上面所说的公钥私钥实际上就是加密步骤,CA签名用于第一步校验,那么是怎么校验的?先了解几个概念
一、CA 证书是什么?
全称:数字证书 / X.509 证书
可以理解成:网站 / 服务端的官方实名认证身份证
由权威第三方 CA 机构(比如阿里云、Let's Encrypt、银行 CA)颁发。
作用两个:
- 证明这个域名 / 服务器是真的、不是钓鱼伪造的
- 证书里自带服务端的公钥,给客户端用
CA 证书里面包含什么核心内容:
| 网站域名 / 服务器信息
| 服务端的公钥(明文直接写在证书里) ✅
| 证书有效期
| 颁发机构 CA 信息
| CA 用自己私钥做的数字签名
👉 重点:CA 证书里一定有业务服务端的公钥,没有私钥。
所以CA证书就是客户端验证服务端用的
二、CA 公钥、CA 私钥 是什么?
CA 本身也是一对非对称密钥(RSA/ECC):
1. CA 私钥
- 归 CA 机构绝密保管,绝不外泄
- 用途:给别人发的证书做签名盖章 你网站的证书,就是 CA 用CA 私钥签的名。
2. CA 公钥
-
公开全世界都能拿到
-
操作系统、浏览器预装了各大根 CA 的公钥
-
用途:验证证书真伪 客户端拿CA 公钥解密验签: 能验过 → 证书是正规 CA 发的、没被篡改 验不过 → 危险、钓鱼网站
三、校验步骤
- 服务端用自己的公钥申请证书
- CA将证书信息(公钥、域名等)做哈希(sha256算法)
- 使用CA私钥签名哈希值(加密),然后将内容赛到CA证书(证书原文+数字签名)中
- 客户端拿到服务端证书,取出CA证书里的签名,用公钥解密,然后对证书里的信息做哈希(sha256),将两个值作对比(验签)