簡體   English   中英

有誰知道如何在 Unity3D(使用 Tls1.2)上使用 m2mqtt?

[英]Does anyone know how to use m2mqtt on Unity3D (with Tls1.2)?

我正在 Unity 中開發 AR 應用程序,我需要連接到啟用了 TLS 協議的 MQTT 代理。

我能夠成功連接到非 TLS 啟用的 MQTT 代理(統一),並且我可以使用管理員給我的證書與 MQTT 資源管理器應用程序成功連接到啟用 TLS 的代理。 代理使用 TLS 1.2

但是,當我嘗試在 Unity 中使用 c# 的paho-m2mqtt庫( https://github.com/eclipse/paho.mqtt.m2mqtt )連接到啟用 TLS 的服務器時,出現以下異常:

Connection error: uPLibrary.Networking.M2Mqtt.Exceptions.MqttConnectionException: Exception connecting to the broker
---> System.ArgumentException: SSL/TLS protocol version not supported

這是我用來測試連接的代碼(我在 Assets/StreamingAssests 中存儲了服務器證書、客戶端證書和客戶端密鑰,並且在創建 MqttClient 時我可能使用錯誤的證書,但這就是大多數人的方式連接):

public void connect(broker, port)
{
    string caCertLoc = Application.streamingAssetsPath + "/ca.crt";
    string clientCertLoc = Application.streamingAssetsPath + "/clientCert.crt";

    X509Certificate2 caCert = new X509Certificate2(caCertLoc);

    X509Certificate2 clientCert = new X509Certificate2(clientCertLoc);

    MqttClient client = new MqttClient(broker, port, true, 
                                       X509Certificate.CreateFromCertFile(caCertLoc), 
                                       X509Certificate2.CreateFromCertFile(clientCertLoc), 
                                       MqttSslProtocols.TLSv1_2, 
                                       MyRemoteCertificateValidationCallback);
    
    string clientId = Guid.NewGuid().ToString();

    try
    {
        client.Connect(clientId);
    }
    catch (Exception e)
    {
        UnityEngine.Debug.LogError("Connection error: " + e);
    }
}

我將不勝感激,因為我完全堅持這一點。

我想通了,原來我使用的是舊的 .dll 用於 M2Mqtt - 上面的實現現在可以工作(唯一的變化是 clinetCert 必須是 .pfx)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM