如何确认npm MQTT包的MQTTS通信已启用SSL加密?
验证MQTT.js连接的SSL加密状态方法
直接检查客户端底层Socket对象
MQTT.js基于TLS套接字实现MQTTS,你可以通过client.stream访问这个底层对象,获取加密相关关键信息:client.stream.encrypted:返回布尔值,true即代表当前连接处于加密状态client.stream.getPeerCertificate():返回服务器证书的详细信息,包括颁发机构、有效期、域名匹配情况等,能直接确认证书是否正确生效
示例代码:
client.on('connect', () => { console.log('连接成功'); // 验证加密状态 console.log('当前连接是否加密:', client.stream.encrypted); // 查看服务器证书详情 const serverCert = client.stream.getPeerCertificate(); console.log('服务器证书信息:', serverCert); });监听TLS握手完成事件
底层TLS套接字会在握手完成后触发secureConnect事件,监听这个事件可以确认加密连接的建立时机:client.stream.on('secureConnect', () => { console.log('TLS握手完成,加密连接已正式建立'); });利用
rejectUnauthorized特性反向验证
你已经将rejectUnauthorized设为true且连接成功,这本身就说明客户端已信任服务器的SSL证书——如果证书无效(比如自签名未被信任、过期、域名不匹配),客户端会直接抛出证书验证错误并终止连接。
内容的提问来源于stack exchange,提问作者xyz83242
相关产品推荐
相关产品推荐

