2017-05-19 1 views
2

Je construis une application AR dans Unity et j'ai besoin de me connecter à un courtier MQTT avec le protocole TLS activé. Je suis en mesure de se connecter avec succès aux courtiers MQTT non TLS permis (dans l'unité), et je peux utiliser le certificat que l'administrateur m'a donné avec ce programme http://www.mqttfx.org/ pour se connecter au courtier activé TLS avec succès. Mais lorsque je tente de me connecter au serveur compatible TLS avec la bibliothèque m2mqtt pour C# dans Unity, j'obtiens une exception de délai d'attente et je ne reçois jamais de réponse du courtier. C'est le code que j'utilise pour tester la connexion. Je tente juste de faire une connexion réussie, puis déconnecter.Délai MQTT lors de la tentative de connexion au courtier compatible TLS dans unity3d

X509Certificate certificate = X509Certificate.CreateFromCertFile("filePath"); 

// Connect to this broker address at port 1883 with tls enabled 
client = new MqttClient(brokerAddress, port, true, certificate); 

// Generate a client id 
string clientId = Guid.NewGuid().ToString(); 

// Connect to the client with credentials 
byte code = client.Connect(clientId, username, password; 

// Disconnect  
client.Disconnect(); 

Cette exception se produit au cours de connexion:

MqttCommunicationException: An application exception has occurred. 
uPLibrary.Networking.M2Mqtt.MqttClient.SendReceive (System.Byte[] msgBytes, Int32 timeout) (at Assets/MQTT/scripts/MqttClient.cs:953) 
uPLibrary.Networking.M2Mqtt.MqttClient.SendReceive (uPLibrary.Networking.M2Mqtt.Messages.MqttMsgBase msg, Int32 timeout) (at Assets/MQTT/scripts/MqttClient.cs:976) 
uPLibrary.Networking.M2Mqtt.MqttClient.SendReceive (uPLibrary.Networking.M2Mqtt.Messages.MqttMsgBase msg) (at Assets/MQTT/scripts/MqttClient.cs:964) 
uPLibrary.Networking.M2Mqtt.MqttClient.Connect (System.String clientId, System.String username, System.String password, Boolean willRetain, Byte willQosLevel, Boolean willFlag, System.String willTopic, System.String willMessage, Boolean cleanSession, UInt16 keepAlivePeriod) (at Assets/MQTT/scripts/MqttClient.cs:456) 
uPLibrary.Networking.M2Mqtt.MqttClient.Connect (System.String clientId, System.String username, System.String password, Boolean cleanSession, UInt16 keepAlivePeriod) (at Assets/MQTT/scripts/MqttClient.cs:395) 
ConnectionManager.connectToMQTTBroker() (at Assets/Scripts/ConnectionManager.cs:55) 

Toute aide serait grandement apprécié. Je suis coincé là-dessus pendant des jours.

+0

Authentification SSL non prise en charge par mqtt – Programmer

+0

Pouvez-vous préciser ce que vous voulez dire s'il vous plaît? J'utilise ce certificat pour se connecter avec succès en utilisant MQTT.FX en utilisant la version 1.2 du protocole TLS. Donc, je suis confus par ce que vous essayez de dire. – TacticalBacn

+0

Aussi http://www.hivemq.com/blog/mqtt-security-fundamentals-tls-ssl – TacticalBacn

Répondre

0

M2Mqtt ne prend pas en charge TLS_V2, En raison de ce que nous ne pouvons pas utiliser les certificats avec unité. Cela est dû au support de la version .Net FrameWork. Pour les certificats, nous utilisons TLSV_2 QOS Level pour la connexion qui est prise en charge à partir de .Net 4 et au-dessus, mais Unity prend en charge uniquement la version .Net 3.5.

+0

Désolé, j'aurais dû être plus clair. C'est exactement ce que je voulais dire, merci de l'avoir mieux expliqué, j'ai supprimé ma réponse fade. J'ai résolu ce problème en utilisant des fonctions externes dans mon code Unity pour interagir avec un client MQTT Objective-C sur la couche iOS à partir de Unity. J'espère que cela aide n'importe qui qui rencontre ce problème. – TacticalBacn