- 生成自签名证书
使用OpenSSL生成自签名证书,执行以下命令:
openssl req -new -newkey rsa:2048 -nodes -keyout mosquitto.key -out mosquitto.csr
openssl x509 -req -in mosquitto.csr -signkey mosquitto.key -out mosquitto.crt
此命令会生成私钥mosquitto.key和证书mosquitto.crt,这些文件将用于在客户端和服务器上进行认证。
- 在Mosquitto服务器上启用TLS
要启用TLS连接,请在mosquitto.conf文件中添加以下行:
listener 8883
cafile /path/to/mosquitto.crt
certfile /path/to/mosquitto.crt
keyfile /path/to/mosquitto.key
- 配置Mosquitto C客户端以使用证书
在Mosquitto C客户端代码中,需要使用以下代码来加载证书:
SSL_CTX *ctx = SSL_CTX_new(TLSv1_2_client_method());
SSL_CTX_load_verify_locations(ctx, "/path/to/mosquitto.crt", NULL);
此代码将使用mosquitto.crt证书验证服务器证书,并允许客户端通过SSL安全地连接到服务器。
- 数据传输
要在受信任的服务器上发布和订阅消息,需要以下代码:
mosquitto_tls_set(ctx, NULL, "/path/to/mosquitto.crt", NULL, NULL, NULL);
mosquitto_connect_ssl(mosq, "localhost", 8883, 60);
这将允许客户端通过SSL与服务器连接,并提供证书以进行身份验证。接下来可以发布和订阅消息。