selectline-software / selectline-api

Apache License 2.0
24 stars 5 forks source link

Validierung der SL Mobile Zertifikate #364

Closed Torchok19081986 closed 6 months ago

Torchok19081986 commented 6 months ago

Hallo, ich habe ein paar Schwierigkeiten einen Zertifikate von SL Mobile API , welche selbst-signiert ist, zu validieren. Zertifikate wurde von SL Mobile erstellt und ist nun in Eigenezertifikaten Speicher in Computer Konto am Server installiert.

Bis jetzt haben wir die Meldung immer unterdrückt. Dazu haben wir


 ServicePointManager.ServerCertificateValidationCallback = (_, __, ___, ____) => true;

Kann man die mitgebrachte SL Mobile Zertifikate mit API irgendwie validieren oder passiert es im Hintergrund bei der Abfrage wie z.B. in CustomerAPI, ohne dass es eine Antwort von der API zurückgesendet wird ?

Wenn man die o.g. Code nicht verwendet, dann kommt eine Exception, welche von Webserver gesendet wird, dass die Vertrauenstellung mit SSL/TSL abgelehnt wurde und Verbidnung geschlossen wurde.

MaikGoertz commented 6 months ago

Moin. Der ServerCertificateValidationCallback kann zum validieren des Zertifikats verwendet werden. Wichtig ist aber, dass nicht immer pauschal "true" zurück gegeben wird, sondern das das eigene Zertifikat geprüft wird, bspw. wie hier beschrieben: https://stackoverflow.com/questions/20914305/best-practices-for-using-servercertificatevalidationcallback

Torchok19081986 commented 6 months ago

hm.. Ok. Vielen Dank für die Info und Aufklärung.

Da ich derzeit nicht weiß, ob ich etwas überhaupt an dem Zertifikate in .NET C# prüfen kann, habe generelle Verständnisfrage : Zertifikate wird von der SL Mobile erstellt und importiert, stimmts? Kann dieser Cert File aus dem SL Mobile exportiert und dann am Client importiert werden ? Dann bräuchten wir das nicht, wenn ich die Kette richtig verstanden habe oder spricht, diese Vorgehensweise einen selbst ausgestellten Cert File zu importieren , etwas dagegen ?

MaikGoertz commented 6 months ago

Das ist ebenfalls ein möglicher Weg. Dies muss an jedem Rechner gemacht werden auf dem das Programm läuft.

Falls Sie über eine eigene Domain verfügen, über die die API angesprochen wird, ist ein gültiges Zertifikat bspw. per https://letsencrypt.org/ zu erstellen am besten.

Torchok19081986 commented 6 months ago

hatten wir auch gedacht. Aber für lets encrypt Certificate müssen bestimmte Voraussetzungen erfüllt werden : wie z.B. Ports und Firewall Freigabe. Hier ist Einfallstor für alle mögliche schadsoftware aus dem Internet. im C# code wäre besser. Habe nun die Tests mit stackoverflow Lösung ausprobiert und es scheint nun korrekt zu funktionieren.