【MQTT】TLS证书双向验证
单向认证:
客户端不验证服务器端身份
双向认证:
客户端和服务器互相验证身份
域名验证:
SSL/TLS 客户端(例如浏览器或 Node.js 的 https 请求)在验证服务器证书时,会检查:
服务器证书是否有效;
证书中是否包含你连接使用的主机名或 IP 地址(通过 SAN 字段)。
1.证书和私钥是否匹配
比较公钥的摘要
# 提取证书的公钥指纹
openssl x509 -in client.crt -noout -modulus | openssl md5# 提取私钥的公钥指纹
openssl rsa -in client.key -noout -modulus | openssl md5
如果得出的md5值相同则是同一套
2.验证证书链是否完整
注意点
证书链顺序:一定是 leaf(终端证书) → 中间 CA → 根 CA。
根证书通常不会被发给对方(因为对方通常已经信任它了)。
服务端或客户端在验证时必须提供一条完整的“链”来辅助验证。
client.crt(你的客户端证书)↓
intermediate.crt(中间CA证书) ← 经常被忽略↓
ca.crt(根CA证书)
openssl verify -CAfile ca.crt client.crt
client.crt: OK
说明证书链完整