我正在创建一个C++ MQTT客户端,它使用的是蚊帐库和蚊帐。
https://github.com/iosphere/mosquitto/blob/master/lib/cpp/mosquittopp.h。
我希望连接到的MQTT代理使用TLS 1.2,只有服务器/代理证书用于握手(不需要客户端证书)。
如何在代码中验证服务器证书的有效性?
我在蚊帐文件中看到了与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似乎正在寻找客户端上的证书,但是证书只来自服务器/代理?我有点被这个弄糊涂了。提前谢谢。
发布于 2020-12-03 21:51:44
客户端需要CA (证书颁发机构)证书的副本,该证书用于在建立连接时签署代理发送的证书。
客户端不需要代理证书的副本,除非您使用的是自签名证书(因为在这种情况下,代理证书将与CA证书相同)。
对于任何真正的面向internet的代理,您可能应该使用公共可信CA,他们将提供CA证书(实际上通常是CA证书链)。
https://stackoverflow.com/questions/65134467
复制相似问题