【问题标题】:C++ MQTT mosquitto client with TLS带有 TLS 的 C++ MQTT mosquitto 客户端
【发布时间】:2021-03-15 23:16:30
【问题描述】:

我正在创建一个使用 mosquitto 库和 mosquittopp.h 的 C++ MQTT 客户端:

https://github.com/iosphere/mosquitto/blob/master/lib/cpp/mosquittopp.h.

我希望连接的 MQTT 代理使用 TLS 1.2,只有用于握手的服务器/代理证书(不需要客户端证书)。

如何验证代码中服务器证书的有效性?

我在 mosquittopp.h 文件中看到以下与 TLS 相关的函数:

int tls_set(const char *cafile, const char *capath=NULL, const char *certfile=NULL, const char *keyfile=NULL, int (*pw_callback)(char *buf, int size, int rwflag, void *userdata)=NULL);
int tls_opts_set(int cert_reqs, const char *tls_version=NULL, const char *ciphers=NULL);
int tls_insecure_set(bool value);
int tls_psk_set(const char *psk, const char *identity, const char *ciphers=NULL);

tls_set 似乎已经在客户端上寻找证书,但证书只会来自服务器/代理?我对此有点迷茫。提前致谢。

【问题讨论】:

    标签: ssl mqtt tls1.2 mosquitto


    【解决方案1】:

    客户端需要一份 CA(证书颁发机构)证书副本,该证书用于签署代理在建立连接时发送的消息。

    除非您使用自签名证书,否则客户端不需要代理证书的副本(因为在这种情况下,代理证书将与 CA 证书相同)。

    对于任何真正面向互联网的经纪人,您可能应该使用公共受信任的 CA,他们将提供 CA 证书(实际上通常是 CA 证书链)

    【讨论】:

      猜你喜欢
      • 2013-09-24
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-12
      相关资源
      最近更新 更多