2017-08-24 48 views
0

我想在MQTT中实现单向SSL。根据我所研究的,在SSL方式下,客户端有一个存储的默认证书。它将使用这个最初存储的证书,并将其与经纪人方的证书进行比较。如果证书是有效的,那么他们建立了一个安全连接。但是,我们的嵌入式软件工程师说,客户端不需要证书,只需从代理端获得证书,然后将其用于安全连接。总结一下,我所了解的是客户有一个存储的证书,并将其与经纪人所拥有的证书进行比较。工程师说,客户没有存储的证书,它只会从经纪人那里得到一个。单向SSL如何在MQTT中工作?

他已经通过任何初始存储的证书连接到我们的经纪人进行了测试,它确实有效。现在我不明白SSL是如何工作的。

+0

你到底想要达到什么目标? 1)客户端和代理之间的安全连接,或2)为代理标识客户端以及创建安全连接? – hardillb

+0

@hardillb我只是想创建一个安全的连接。经纪人不需要知道客户。 –

回答

2

SSL与MQTT的工作方式与其他任何协议一样。

有2种*主要模式

  1. 服务器(代理)唯一的身份验证。在这种情况下,客户端连接到服务器(代理),代理将其证书发送到客户端。客户端检查证书是由客户信任的人签发(签名)的,这证明了服务器(经纪人)是它声称的并且可以信任的人。客户端和服务器(代理)然后进行密钥协商以建立加密隧道。检查服务器证书是否由可信方发出的行为是检查它是否由已知的CA(证书颁发机构)证书签名,这意味着客户机需要保留一个可信证书列表。

  2. 客户端和服务器(代理)的相互认证。这与之前几乎相同,除了客户端还将它自己的唯一证书发送到服务器(代理),还会检查它是否由已知的CA颁发,并且将CN字段用作客户端的用户标识。

*还有预共享密钥模式,根本不使用证书。

+0

嗨,谢谢你的回答。您说“这意味着客户需要保留一份可信证书列表”。这是否意味着客户仍然必须拥有最初为检查做好准备的证书? –

+0

是的,客户端必须有权访问已知可信CA证书的列表。你可以告诉客户端接受任何提供的证书,但是这会损失半个安全点,因为那样你就不得不在中间人攻击中检测到一个人 – hardillb

+0

好的。谢谢! –