设备  云端 mTLS 完整交互流程图

一、设备  云端 mTLS 完整交互流程图(Mermaid,可直接粘贴VSCode、飞书渲染)

1. 整体握手+证书校验全流程时序图

sequenceDiagram

    participant D as IoT设备(WiFi/蓝牙模组)

    participant C as 云端服务

    Note over D,C: 前置:设备固化根CA、设备证书+设备EC私钥;云端预置同一份根CA

    D->>C: 1.TCP建连,发送Client Hello

    Note D: 携带TLS版本、secp256r1、随机数Client Random、支持加密套件

    C-->>D: 2.Server Hello + 选定套件/曲线 + Server Random

    C-->>D: 3.下发云端证书链:云端叶子证书+中间CA证书

    C-->>D: 4.Certificate Request:要求设备回传证书(双向mTLS)

    D->>D: 设备本地校验云端整条证书链

    Note D: 有效期/EC曲线/KeyUsage逐层验签,追溯本地根CA;OCSP/CRL查吊销

    alt 云端证书校验失败

        D--xC: 断开连接,握手终止

    else 云端证书合法

        D->>C: 5.上传设备证书链:设备叶子证书+中间CA证书

    end

    C->>C: 云端校验设备整条证书链(设备身份认证核心)

    Note C: 逐层验签到可信根CA;校验SN、有效期、吊销状态、secp256r1合规

    alt 设备证书非法

        C--xD: 拒绝连接,流程结束

    else 设备认证通过

        Note over D,C: 进入ECDH密钥协商(证书校验完成后执行)

        D->>D: 设备:secret=ECDH(云端公钥, 设备证书私钥)

        C->>C: 云端:secret=ECDH(设备证书公钥,云端证书私钥)

        Note over D,C: 双方secp256r1一致,得到完全相同secret

        D->>D: HKDF(secret+两端随机数) 生成AES加密密钥、MAC密钥

        C->>C: HKDF生成完全一致会话密钥

        D->>C: Finished报文(新密钥加密)

        C->>D: Finished报文(新密钥加密)

        Note over D,C: 校验Finished,确认密钥无误

        Note over D,C: TLS握手全部完成,业务加密通信正式开始

    end

2. 证书链层级架构图

graph TD

    A[本地可信根CA证书<br/>secp256r1,预置不联网下发] -->|根CA私钥签名|B[中间二级CA证书]

    B -->|中间CA私钥签名|C[设备叶子证书<br/>内置设备EC公钥D_PubKey]

    B -->|中间CA私钥签名|D[云端叶子证书<br/>内置云端EC公钥C_PubKey]

    Note over A,D: 传输规则:只传叶子+中间CA;根CA本地留存

二、X.509椭圆曲线证书完整字段结构(适配secp256r1物联网证书)

分为三大块:证书基础信息、公钥区块、签名区块;所有签名使用ecdsa-with-SHA256。

整体字段清单

1. 版本 Version

默认V3(X.509 v3),只有V3支持密钥用途、吊销、扩展字段。

2. 序列号 Serial Number

证书全局唯一编号;OCSP/CRL吊销查询依靠该序列号匹配设备。

3. 签名算法 Signature Algorithm

固定:ecdsa-with-sha256,禁止SHA1、MD5、RSA签名。

4. 签发者 Issuer

签发CA的名称(根CA/中间CA);校验时用来匹配上一级证书。

5. 有效期 Validity

• NotBefore:证书生效起始时间

• NotAfter:证书过期时间

过期直接判定证书失效。

6. 主体 Subject

设备证书:写入设备SN、模组型号、厂商信息;

云端证书:写入云端域名。

7. 主体公钥信息 Subject Public Key Info(EC核心区域)

算法标识:id-ecPublicKey

椭圆曲线参数:secp256r1

公钥:EC公钥点位 (x,y),用于ECDH密钥协商

设备侧:此处为公钥D_PubKey;设备安全区单独保存对应的D_PrivKey,证书内不会存放私钥。

8. X.509 V3 扩展字段(IoT/CRA强制必填)

扩展字段 设备证书配置要求 作用

Key Usage Digital Signature + Key Agreement 签名校验、支持ECDH密钥协商,少一项TLS拒绝握手

Extended Key Usage TLS Client Auth(设备)/TLS Server Auth(云端) 限定证书只能用于TLS双向认证,防止证书挪作他用

Subject Alternative Name 设备SN/云端域名 多维度匹配设备身份,防止名称不匹配

CRL Distribution Points 填写CA吊销列表地址 支持CRL吊销校验

OCSP Responder OCSP服务器地址 支持在线吊销查询,CRA强制要求

Basic Constraints 叶子证书:CA:FALSE;中间/根CA:CA:TRUE 叶子证书禁止签发下级证书,防证书滥用

9. 签发者唯一标识、主体唯一标识

可选,用于区分重名CA。

10. 证书签名 Signature Value

上一级CA使用自身私钥,对整张证书全部内容做ECDSA签名;

校验逻辑:用上级证书公钥解密签名,比对证书哈希值,判断证书是否被篡改。

三、分层证书字段举例(三级链拆分)

1)根CA证书

• Basic Constraints:CA=TRUE,可签发下级CA

• 公钥:secp256r1根公钥,全网信任锚

• 自签名:签发者=主体,自己签自己

2)中间CA证书

• Basic Constraints:CA=TRUE,可签发设备/云端叶子证书

• 签名由根CA私钥生成;验签使用根CA公钥

3)设备叶子证书(重点)

• Basic Constraints:CA=FALSE,不能再签发任何证书

• KeyUsage必须包含Key Agreement,适配ECDH运算

• 公钥参与ECDH;私钥只存在设备安全硬件,永不入网

• 绑定设备SN,实现一设备一证书

四、关键对应关系(串联证书+ECDH)

1. 证书链校验只负责身份信任:确认证书由可信CA签发、未篡改、未吊销;

2. 证书的Subject Public Key取出椭圆公钥,用于ECDH;

3. ECDH必须搭配同曲线secp256r1,曲线不一致即便证书合法,也无法算出相同共享secret;

4. 顺序硬性规定:证书全量校验通过 → 才允许执行ECDH,杜绝中间人劫持。

五、极简结构速记

证书主体存公钥,不存私钥;

上级私钥签下级,上级公钥验签名;

一路验到本地根CA才算可信;

扩展字段管控用途,吊销字段满足CRA合规;

公钥提取出来做ECDH协商密钥。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容