CODESYS - das IEC 61131-3 Programmiersystem

Willkommen im offiziellen CODESYS - Forum von 3S-Smart Software Solutions | A member of the CODESYS Group
Deutsche Version English version russian version 
Aktuelle Zeit: Di Okt 16, 2018 12:20 pm

Alle Zeiten sind UTC




Ein neues Thema erstellen  Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: CmpCrypto
BeitragVerfasst: Mi Mai 30, 2018 7:11 am 
Offline

Registriert: Mi Nov 23, 2016 1:33 pm
Beiträge: 66
Hallo,

ich will meine MQTT Bibliothek mit TLS erweitern, jedoch meint der Bibliotheksverwalter, das die CmpCrypto Bibliothek nicht installiert wäre.
Diese kann ich aber dem Projekt hinzufügen, ist also vorhanden, siehe Anhang.


Wie komme ich dem bei?


Grüße Stefan

Dateianhang:
cmpcrypto.png
cmpcrypto.png [ 14.69 KiB | 492 mal betrachtet ]


Nach oben
   
 Betreff des Beitrags: Re: CmpCrypto
BeitragVerfasst: Fr Jun 01, 2018 6:15 am 
Offline

Registriert: Mi Nov 23, 2016 1:33 pm
Beiträge: 66
Hallo,

ich bin ein bisschen weiter, die CmpTls Bibliothek empfiehlt ja das nutzen der SysSocket2 Bibliothek für die TLS Kommunikation per TCP.

Ich konnte das Projekt für die nicht verschlüsselte Kommunikation schon auf SysSocket2 umstellen.
Nun will ich TLS aktivieren, dazu schein die Funktion SysSocket2.SysSock2Create im Eingang pParameter ein SysSocket2_Tls_Sockets bekommen zu wollen. Dies ist vom Typ ein RTS_IEC_HANDLE.
Annahme: bekomme ich das Handle von CmpTls.CmpTlsCreateContext.

Ist das korrekt? Die Dokumentation schweigt sich dazu leider etwas aus.

Falls ja, bin ich wieder bei dem im ersten Post beschriebenen Problem, das angeblich CmpCrypto nicht installiert währe.

Über Unterstützung dazu würde ich mich sehr freuen, sodass meine MQTT Bibliothek auch TLS kann.

Vielen Dank im Vorraus.

Stefan


Nach oben
   
 Betreff des Beitrags: Re: CmpCrypto
BeitragVerfasst: Fr Jun 01, 2018 6:30 am 
Offline

Registriert: Mi Nov 23, 2016 1:33 pm
Beiträge: 66
Hallo,

Ich habe gerade auf dem Screenshot gesehen, das die Bibliotheksversionen unterschiedlich sind, da habe ich mi Version 3.5.10.0 und 3.5.11.0 rumgespielt um den Fehler weg zu bekommen, hat aber nichts geholfen. Bei beiden Versionen kommt die Fehlermeldung.

Grüße Stefan


Nach oben
   
 Betreff des Beitrags: Re: CmpCrypto
BeitragVerfasst: Fr Jun 01, 2018 10:00 am 
Offline

Registriert: Mi Nov 23, 2016 1:33 pm
Beiträge: 66
Hallo,

ich versuche weiter...


Bei einem Aufruf von:

Code:
       SysSockSpec.tlsSockets.hTlsContext := CmpTls.CmpTlsCreateContext(
         hCert:= RTS_INVALID_HANDLE,
         tlsMethod:= CmpTlsMethod.TLSv2_CLIENT,
         cipherList:= 0,
         verifyMode := CmpTlsConstants.TLS_VERIFY_PEER,
         pResult:= ADR(pResult));

steht danach in pResult eine 1 was wohl General error bedeutet.


Weiter steht im Log des RASPIs:

TlsCreatContext2: Failed to save context. Komponente CmpOpenSSL.


Kann da einer Helfen?


Grüße Stefan


Nach oben
   
 Betreff des Beitrags: Re: CmpCrypto
BeitragVerfasst: Mo Jun 04, 2018 3:50 am 
Offline

Registriert: Mi Nov 23, 2016 1:33 pm
Beiträge: 66
Hallo,

nächste Runde...

CmpTls.CmpTlsCreateContext()

Funktioniert jetzt, ich weiß zwar nicht genau warum, könnte mir aber denken, das wegen Exzessiven Aufrufen der Funktion ohne wieder Freigeben des RAMs dafür, dieser einfach irgendwann alle war.

So, dafür hänge ich jetzt an

SysSock2Connect() und wirft mir einen Fehler 16#1, diesmal ohne Eintrag im LOG.


Ideen?


Grüße Stefan


Nach oben
   
 Betreff des Beitrags: Re: CmpCrypto
BeitragVerfasst: Mi Jun 06, 2018 7:05 pm 
Offline

Registriert: Mi Nov 23, 2016 1:33 pm
Beiträge: 66
Hallo,

es geht fleißig weiter. Dank Wireshark auf dem Raspi habe ich herausgefunden, das ich von Server zu viel will, und dieser keine Diffie-Hellmann Schlüsselaustausch kann. Soll konkret heißen, in meinem Client-Hello Paket sind nur cipher aufgelistet, die der Server nicht kann. Deswegen bekomme ich vom Server einen Handshake Error, was dieser erstmal richtig macht. Dieser Fehler wird dann an SysSock2Connect() durchgereicht. So, nun habe ich mir gedacht, biete ich dem Server ein cipher an den dieser kann, also Nachgeschaut, bei der Funktion CmpTlsCreateContext() kann man einen Parameter cipherList mit über geben. Das soll ein Pointer auf String sein(Pointer to string). Ein Pointer auf einen String mit dem Inhalt 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA' was der Server kann führte zu einem pResult von 16#1.

Nun zu der Frage: welches Format muss dieser String haben, damit er entsprechende cipher annimmt?

Leider schweigt sich die Doku dazu aus.

Vielen Dank im Vorraus,

Stefan


Nach oben
   
 Betreff des Beitrags: Re: CmpCrypto
BeitragVerfasst: So Jun 10, 2018 7:25 am 
Offline

Registriert: Mi Nov 23, 2016 1:33 pm
Beiträge: 66
Hallo,

natürlich habe ich weiter gemacht...

ich habe bei Google "codesys cipher list" eingegeben, und dabei kommt man auf folgenden Eintrag:

https://forum.codesys.com/viewtopic.php?t=8355#p19754

Aha, also openssl. Also nach openssl cipher list gesucht und auch gut dokumentiert gefunden. Und was da Dokumentiert ist, wird auch von CmpTlsCreateContext() akzeptiert. Sehr fein. Würde einiges an Zeit sparen, wenn man das in der Doku der Bibliothek mit ablegt. Wobei sich noch die frage stellt, ob das auch das Richtige ist, vielleicht nur Glück gehapt, und es ist ganz anders?


Naja, ging dann weiter, immer noch keine Verbindung, laut Wireshark "Alert Level: Fatal Certificate Unknown"... hmm was das jetzt.


Mal bei der Janz tec MQTT Bibliothek nachgeschaut, die kann das ja schon. Da steht unter:

https://store.codesys.com/janz-tec-mqtt-library.html#System%20Requirements
Code:
 https://store.codesys.com/janz-tec-mqtt-library.html#System Requirements 


das anscheinend die CmpTls Bibliothek noch nicht mit Zertifikaten umgehen kann. Steht natürlich nirgens, und auf den verlinkten Bug Tracker komme ich auch nicht. Also wie bekommt man bescheid das das jetzt geht?

Nun ich habe dann bei CmpTlsCreateContext() die cipherList auf "MEDIUM" eingestellt und verifyMode auf "CmpTlsConstants.TLS_VERIFY_CLIENT_ONCE" und erhalte nun eine Verschlüsselte Verbindung, leider nicht stark Verschlüsselt, aber das wird vielleicht irgendwann, wenn das CmpTls implementiert.


Also, ich hab das mal niedergeschrieben, falls weitere Probleme haben die CmpTls Bibliothek zu nutzen. Hoffentlich ist das vielleicht ein kleiner Hinweis die Doku der CmpTls zu verbessern, sodass man nicht so viel selber heraussuchen muss. So Funktioniert es ja stabil, wenn man es richtig einstellt.


Ach ja, der Fehler das CmpCrypto nicht installiert währe ist immer noch da, geht aber trotzdem....


Grüße Stefan


Nach oben
   
 Betreff des Beitrags: Re: CmpCrypto
BeitragVerfasst: Mi Jun 13, 2018 4:52 am 
Offline
Site Admin

Registriert: Mo Sep 05, 2005 8:42 am
Beiträge: 2896
Hi,
es sollte mit 3.5SP13 release in der online Hilfe auftauchen.
Es gibt dann auch ein Beispielprojekt dazu.

Grüße
Edwin


Dateianhänge:
Crypto.jpg
Crypto.jpg [ 47.17 KiB | 362 mal betrachtet ]
Nach oben
   
 Betreff des Beitrags: Re: CmpCrypto
BeitragVerfasst: Mi Jun 13, 2018 9:06 pm 
Offline

Registriert: Mi Nov 23, 2016 1:33 pm
Beiträge: 66
Hallo Edwin,


danke für die Rückmeldung, wie das Grundsätzliche Verschlüsseln funktioniert war mir schon klar, aber sicherlich Interessant für Einsteiger.

Was mich nur stört, ist das in den Bibliotheken kein Zusammenhang der Abhänigkeiten oder Typen erkennbar ist. Z.b. das SysSocket2.SysSock2Create() für TLS ein von CmpTls.CmpTlsCreateContext() erzeugtes Handle möchte. Also, so funktioniert das zumindest bei mir. Leider weis ich ja nicht, ob das genau so gedacht war.

Oder meine Annahme das CmpTlsCreateContext() mit den Angaben von:
https://www.openssl.org/docs/man1.0.2/apps/ciphers.html
rechnet.

Hier eine genaue Beschreibung und schon reduziert sich die Hemmschwelle und der Aufwand TLS zu nutzen.

Wenn man das nämlich alles weiß, ist es ja recht simpel mit SysSocket2 eine TLS Verbindung zu realisieren, das gefällt mir schon sehr!

Was hat immer noch ein Phänomen ist, ist das CmpCrypto fehlen würden, aber ich denke das wird noch.

Für mich stellt sich noch die Frage ob und wann CmpTls in der Lage ist, mit Zertifikaten umzugehen und eventuell eine Certificate authority anzusprechen. Dann könnte man sich ein Zertifikat von LetsEncrypt holen und sich sehr freuen!

Und wie würde ich das mitbekommen, das das geht?

Ok, ich freue mich auf 3.5SP13 und auf das Beispielprojekt, mal sehen was es da für neues gibt.

Dazu was ganz anderes: 3S nutzt doch sicherlich auch Test Cases Bibliotheken für die Validierung und Test der Funktion Ihrer Bibliotheken.

Wären diese nicht die Perfekten Beispiele für die Nutzung der Bibliotheken?

Vielen Dank

Grüße Stefan


Nach oben
   
 Betreff des Beitrags: Re: CmpCrypto
BeitragVerfasst: Do Jun 14, 2018 6:23 am 
Offline
Site Admin

Registriert: Mo Sep 05, 2005 8:42 am
Beiträge: 2896
Hallo,
das wird nun doch als Store Beispiel Applikation kommen.
(auch für TLS ist gelplant ein Beispiel im Store zu haben)
Grüße
Edwin


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 10 Beiträge ] 

Alle Zeiten sind UTC


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de