Как использовать M2mqtt libraby для сертификации в C#?

Привет! Я использую библиотеку M2Mqtt C# и хочу подключиться к брокеру Hive MQ через систему безопасности. Hive MQ включен ssl, я отредактировал файл config.xml, чтобы использовать хранилище ключей java (.jks) для включения ssl.

Я использую самоподписанные сертификаты. У меня есть сертификаты от моей организации, из которых я создал хранилище ключей Java.

ClientLocal = new MqttClient(IPAddress.Parse("127.0.0.1"), 8883,
                             true, new X509Certificate(@"C:\Users\310208195\root.crt")
                             , new X509Certificate(@"C:\Users\310208195\root.crt")
                              MqttSslProtocols.TLSv1_2);


 public MqttClient(IPAddress brokerIpAddress, int brokerPort, bool secure, X509Certificate caCert, X509Certificate clientCert, MqttSslProtocols sslProtocol);

это библиотека, которая требует следующих параметров.

У меня есть root.crt, который я передаю для CA.crt при подключении. что я должен загрузить для сертификата клиента и является ли формат.crt правильным для формата X509.

// так что после некоторой попытки я получил ниже

ClientLocal = new MqttClient(IPAddress.Parse("127.0.0.1"), 8883, false, new X509Certificate(@"C:\Users\310208195\Documents\root.crt"), new X509Certificate2(), MqttSslProtocols.TLSv1_2);

Я оставил пустым, но я получаю exception connecting to broker, "Удаленный сертификат недействителен в соответствии с процедурой проверки."}

это код MQTT

public void Initialize()
{
Client_ID = Guid.NewGuid().ToString();
//ClientLocal.ProtocolVersion = MqttProtocolVersion.Version_3_1;
ClientLocal = new MqttClient(“127.0.0.1”, 8883, true, new X509Certificate(Resources.root), MqttSslProtocols.TLSv1_2); ///root.crt is the certificate
//ClientLocal.Connect(Client_ID, “admin”, “admin”, false, MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE,
// true, “drlastwill”, “hey, it’s me DR-service app,please restart me!”, true, 60);
ClientLocal.Connect(Client_ID, “admin”, “admin”);
MessageBox.Show(“Connection has been established succesully “);
ushort byt = ClientLocal.Subscribe(new string[] { “event” }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); // QOS -2
ushort byt2 = ClientLocal.Subscribe(new string[] { “report” }, new byte[] { MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE });
ClientLocal.MqttMsgSubscribed += Client_MqttMsgSubscribed;
// ClientLocal.MqttMsgPublishReceived += Client_MqttMsgPublishReceived;
}

0 ответов

Другие вопросы по тегам