3. 基于设备证书的设备身份注册

基于设备证书的设备身份注册 学习卡片

设备身份注册的核心链路

设备身份注册的本质是给每台终端签发一张由内部 CA 背书的 X.509 设备证书,并把证书中的唯一标识(CN 或 SAN)写入零信任控制平面的设备清单。之后终端每次访问受保护资源时,零信任网关会校验设备证书链、有效期与吊销状态,只有通过校验的设备才被允许进入策略评估阶段。

① 证书签发 ② 设备注册 ③ 访问验证 终端设备 生成密钥对 device-01.corp.local 内部 CA 签发 X.509 证书 CN=device-01 设备证书 CN=device-01 有效期 365 天 指纹 SHA-256 零信任控制平面 设备清单注册 绑定证书指纹 零信任网关 校验证书链 检查吊销状态 受保护资源 内部 Web 应用 /api/v1/data CSR 请求 签发 注册 下发设备清单 携带设备证书发起访问 放行 网关校验结果 ✓ 证书有效 进入策略评估 → 放行 ✗ 证书无效/吊销 拒绝访问 → 记录告警

签发设备证书

使用内部 CA 为终端签发证书,证书的 CN 或 SAN 必须包含设备的唯一标识。以下命令在终端上生成密钥对并提交 CSR:

# 1. 生成设备私钥(ECC P-256,推荐)
openssl ecparam -genkey -name prime256v1 -out device-01.key

# 2. 生成 CSR,CN 使用设备唯一标识
openssl req -new -key device-01.key -out device-01.csr \
  -subj "/C=CN/O=Corp/OU=Devices/CN=device-01.corp.local"

# 3. 由内部 CA 签发证书(有效期 365 天)
openssl x509 -req -in device-01.csr -CA ca.crt -CAkey ca.key \
  -CAcreateserial -out device-01.crt -days 365 -sha256

# 4. 验证证书链
openssl verify -CAfile ca.crt device-01.crt
# 预期输出:device-01.crt: OK

注册到零信任设备清单

将证书指纹与设备标识注册到控制平面。以 API 方式注册为例:

# 提取证书 SHA-256 指纹
FINGERPRINT=$(openssl x509 -in device-01.crt -noout -fingerprint -sha256 \
  | cut -d'=' -f2 | tr -d ':')

# 调用控制平面 API 注册设备
curl -X POST https://ztna.corp.local/api/v1/devices \
  -H "Authorization: Bearer $ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "device_id": "device-01",
    "hostname": "device-01.corp.local",
    "cert_fingerprint_sha256": "'"$FINGERPRINT"'",
    "cert_cn": "device-01.corp.local",
    "status": "active"
  }'
注册时务必绑定证书指纹而非仅绑定 CN。仅绑定 CN 时,攻击者可用自签证书伪造相同 CN 绕过校验;绑定指纹后,网关会比对终端实际出示证书的 SHA-256 指纹与清单记录是否一致。

验证访问控制效果

注册完成后,用持有有效证书的终端和无效证书的终端分别发起访问,观察网关返回结果:

# 有效证书访问(预期 200)
curl --cert device-01.crt --key device-01.key \
  https://ztna.corp.local/api/v1/data -v

# 无证书访问(预期 403)
curl https://ztna.corp.local/api/v1/data -v

# 使用自签证书访问(预期 403)
curl --cert fake.crt --key fake.key \
  https://ztna.corp.local/api/v1/data -v
测试场景终端证书状态网关校验结果预期 HTTP 状态
已注册设备 + 有效证书证书链完整、未吊销指纹匹配清单200
未注册设备 + 有效证书证书链完整但不在清单指纹未匹配403
已注册设备 + 已吊销证书CRL/OCSP 返回吊销吊销检查失败403
无证书访问未提供客户端证书TLS 握手阶段拒绝403
证书吊销后需确保网关能及时获取 CRL 或 OCSP 响应。若网关缓存 CRL 时间过长,已吊销设备仍可能在缓存有效期内通过校验。建议 CRL 缓存不超过 5 分钟,或启用 OCSP Stapling 实时校验。