AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Android M und SSL

Ein Thema von junglist · begonnen am 10. Dez 2015 · letzter Beitrag vom 17. Dez 2015
Antwort Antwort
junglist

Registriert seit: 21. Jul 2015
Ort: Schweiz
36 Beiträge
 
Delphi 11 Alexandria
 
#1

Android M und SSL

  Alt 10. Dez 2015, 12:13
Hallo zusammen

Bin jetzt seit ein paar Monate hier ein stiller Mitleser.


Ich habe ein Problem mit Delphi Seattle.
Da mein Webservice mit XE8 auf Android M gar nicht funktioniert hat, habe ich mal Seattle installiert.


Jetzt bekomm ich beim Aufruf allerdings die Melding "SSL.-Bibliothek konnte nicht geladen werden.".
Ich weiss, dass Google für Android M von OpenSSL auf BoringSSL gewechselt ist.


Allerdings weiss ich nicht, wie ich das jetzt ändern kann, oder was ich ändern müsste.. Ich benutze für den Aufruf des Services nur THTTPRIO als Komponent.
Und laut dem docwiki müsste es die SSL-Libs bei Android ja immer automatisch linken oder?

Code zum Aufrufen (Hat mit XE8+Android5 funktioniert):
Code:
{$IF DEFINED(ANDROID) OR DEFINED(iOS)}
      cn.HTTPRIO.WSDLLocation := TPath.Combine(TPath.GetDocumentsPath, 'wsdlDatei.wsdl');
      cn.HTTPRIO.Service := 'Service';cn.HTTPRIO.Port := 'ServicePort';
    {$ENDIF}

    iTel := cn.HTTPRIO as ServiceList;

    Log := login.Create;
    Log.user := username;
    Log.password := password;
    Log.domain := domain;

    sess := sessionHeader.Create;
    sess.sessionId := iTel.login(log).sessionId;
    (iTel as ISOAPHeaders).Send(sess);

    getA := GetServiceList.Create;
    iTel.GetServiceList(getA);
Normalerweise konnte ich mich mit der Such-Funktion begnügen, aber zu Seattle findet man leider noch nicht vieles...


(Und falls ihr absoluten Blödsinn in meinem Code erkennt, wär ich sehr dankbar wenn ihr mich darauf hinweist )


Grüsse
  Mit Zitat antworten Zitat
junglist

Registriert seit: 21. Jul 2015
Ort: Schweiz
36 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Android M und SSL

  Alt 14. Dez 2015, 09:18
Bzw. könnte mir wer bestätigen der es vielleicht schon selber gemacht hat, dass Webservice-Aufruf über HTTPS auf Android 6.0 funktioniert?

Zitat:
Android is moving away from OpenSSL to the BoringSSL library. If you’re using the Android NDK in your app, don't link against cryptographic libraries that are not a part of the NDK API, such as libcrypto.so and libssl.so. These libraries are not public APIs, and may change or break without notice across releases and devices. In addition, you may expose yourself to security vulnerabilities. Instead, modify your native code to call the Java cryptography APIs via JNI or to statically link against a cryptography library of your choice. (http://developer.android.com/about/v...0-changes.html)
Gibt es einen Weg, das in Delphi zu machen? Konnte nicht viele Infos finden..


Edit: Der Fehler passiert beim ersten Connecten, also bei iTel.login(log).sessionId;

Geändert von junglist (14. Dez 2015 um 14:31 Uhr) Grund: Kann den Start-Post nicht editen..
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Android M und SSL

  Alt 16. Dez 2015, 10:30
Wir haben das bei uns so gelöst, dass wir die libcrypto.so und libssl.so von einer Android-Version < 6 einfach bei der App mit ausliefern und in der Projektdatei den Lib-Pfad auf unser lokales Verzeichnis setzen, sofern Android >= 6 vorhanden ist:

Code:
{$IF Defined(ANDROID) and Defined(CPUARM)}
  if (TOSVersion.Platform = pfAndroid) and (TOSVersion.Major >= 6) then
    IdOpenSSLSetLibPath( TPath.GetLibraryPath )
  else
    IdOpenSSLSetLibPath('/system/lib/');
{$ENDIF}
Wir verwenden allerdings noch Indy, da die "nativen" FMX-Komponenten für SSL auf iOS und Android quasi unbrauchbar sind.
  Mit Zitat antworten Zitat
junglist

Registriert seit: 21. Jul 2015
Ort: Schweiz
36 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Android M und SSL

  Alt 16. Dez 2015, 12:51
Vielen Dank für deine Antwort!

Noch zwei Fragen hätt ich aber noch.
libcrypto.a und libssl.a kenn ich - halt für iOS. Und konnte auf die Schnelle die .so-Dateien nicht finden, wo würd ich die herbekommen?

Und als zweites, in dem Fall habt ihr nicht THTTPRIO benutzt? Oder weiterhin THTTPRIO verwendet und nur die SSL-Libs "verändert" (so wie oben in deinem Bsp.)
Was für Indy Komponenten denn? Ich konnte leider nicht sehr viel finden, ausser IdHTTP, und ich weiss nicht recht ob das das ist, was ich brauche.

Gibt's irgendwo Material mit dem auch n Anfänger was anfangen kann? Tutorials, oder vielleicht Code-Schnipsel? Wär nett


Aber so hat man zumindest schon mal überhaupt eine Lösung, danke.

Grüsse
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Android M und SSL

  Alt 16. Dez 2015, 13:39
Wir haben die .so-Dateien direkt von einem Android-Gerät, müssten eigentlich unter /system/lib zu finden sein - vermutlich wird dazu Root benötigt. Die werden aber anders als bei iOS nicht mit einkompiliert sondern dynamisch geladen, müssen also über das Deployment mit ausgeliefert werden.

Die Indy-Komponenten sind diese IdXXX-Geschichten, die nativen THTTPRIO-Geschichten gibt es meines Wissens erst seit XE8. Hier gibts u.a. ein Tutorial: http://www.delphipraxis.net/160152-i...protokoll.html
  Mit Zitat antworten Zitat
junglist

Registriert seit: 21. Jul 2015
Ort: Schweiz
36 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Android M und SSL

  Alt 17. Dez 2015, 11:07
Ach, wir kamen - bisher - gut mit denen aus, hehe.

Ich wollte zwar mit den Indy-Komponenten mal anfangen (was ich in Zukunft auch tun werde), aber habe eine Lösung für die "nativen" Komponenten gefunden: (Wusst nicht, dass man das bei denen auch einstellen kann)
Code:
cn.HTTPRIO.HTTPWebNode.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(cn.HTTPRIO);
Plus den "alten" SSL-Dateien.


So funktionierts vorübergehend, nochmals vielen Dank für deine Hilfe
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz