2017-10-11 237 views
1

我正在使用openssl使用Eclipse Paho MQTT C客戶端通過TLS連接到一個mosquitto代理。這是我的代碼的一部分:MQTT TLS會話恢復C

MQTTClient client; 
MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer; 
MQTTClient_message pubmsg = MQTTClient_message_initializer; 
MQTTClient_SSLOptions sslOptions = MQTTClient_SSLOptions_initializer; 
MQTTClient_deliveryToken token; 

int rc; 

MQTTClient_create(&client, ADDRESS, CLIENTID, 
    MQTTCLIENT_PERSISTENCE_NONE, NULL); 

conn_opts.keepAliveInterval = 20; 
conn_opts.cleansession = 1; 

/* TLS */ 
sslOptions.enableServerCertAuth = 0; 
sslOptions.trustStore = "ca_rsp.crt"; 
conn_opts.ssl = &sslOptions; 


if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS) 
{ 
    printf("Failed to connect, return code %d\n", rc); 
    exit(EXIT_FAILURE); 
} 

其實每次我重新連接到經紀人,客戶端進行完整的握手。我想使用TLS會話恢復來減少開銷。我在網上搜索,但我還沒有找到任何如何以簡單的方式實現的例子。

有什麼建議嗎?

感謝

回答

0

在這裏,這https://dev.eclipse.org/mhonarc/lists/mosquitto-dev/msg01606.html

近日來到了mosquitto開發郵件列表下面的摘錄接縫用代碼來暗示它可能不能只是還沒有,因爲它是。

如何,我可以使用Mosquitto/OpenSSL的C API利用在 MQTT C客戶會話票據?

不是在此刻,這需要更改代碼是多一點 參與 - 它看起來像我們需要使用SSL_set_session()到 保存的會話應用到您的客戶端和SSL_CTX_sess_set_new_cb()保存 會話結束。

是否有任何方法可以在客戶端持續使用會話票據,因此他們 將在重新啓動時保持有效?

有了上述變化,是的。