![]() |
AW: Android - SSL-Verschlüsselung
Das mit dem in den Debug/Release-Pfad packen, ist soweit richtig.
Manchmal braucht man für iOS noch bestimmte Capabilities im developer.apple.com-Account, damit etwas geht. Bei mir funktioniert es unter iOS auf jeden Fall und der auf iOS reduzierte Initialisierungscode ist ja denkbar knapp:
Delphi-Quellcode:
Am Besten fragst du mal im englischen Forum nach (
procedure TicTrainerF.initSSL();
begin if (not sslInited) then begin sslInited:=true; IdSSLOpenSSLHeaders.Load(); mlog.info('SSL-Version: ' + OpenSSLVersion); end; end; ![]() |
AW: Android - SSL-Verschlüsselung
Das mit dem englischen Delphipraxis werde ich machen, sobald ich das mit dem Account rübernehmen hinbekommen habe... hab mein Passwort wie gefordert resetted, aber es kommt keine Email an, auch nicht im Spam...
In der Zwischenzeit habe ich mal per Debugger geschaut, wo es denn eigentlich knallt. Ergebnis: das Connect vom IDFTP löst es oberflächlich aus, ist aber eigentlich tief drin, genauer gesagt in der Unit "IdSSLOpenSSL" in der Methode "LoadOpenSSLLibrary" beim Aufruf von "OpenSSL_add_all_ciphers", was eine library-Methode ist. Meine Vermutung wäre ja, dass noch irgendetwas beim statischen Laden der libssl.a und libcrypto.a schiefgeht oder eventuell irgendein Versionsschwachsinn. Ich verwende momentan Delphi 10.4.2 und einer IOS 14.5 SDK. |
AW: Android - SSL-Verschlüsselung
Ich hatte das Thema erstmal beiseite gelegt, da ich anderes zu tun hatte, habe es jetzt aber wieder aufgegriffen.
Ich bin mittlerweile auf Delphi 11 hoch und das Problem tritt leider immer noch genauso auf wie im obigen Post beschrieben. Deswegen wollte ich hier nochmal nachfragen, ob irgendwer vielleicht einen entscheidenden Hinweis dafür hat, wie ich die SSL-Verschlüsselung auf IOS zum Laufen bekomme. Ich bin mir bewusst, dass es andere Drittanbieter-Komponenten gibt, die das problemlos erledigen, nur wäre es mir am liebsten, wenn ich durchgängig den IDFTP dafür verwenden könnte, insbesondere, da es auf Android problemlos funktioniert... |
AW: Android - SSL-Verschlüsselung
Hallo,
sorry dass ich mich hier einklinke aber ich habe das gleiche Problem unter Android in Delphi 11. Die libssl.so und libcrypto.so habe ich ins Android/Release Verzeichnis gepackt und stelle beide Dateien im Verzeichnis library\lib\armeabi-v7a\ bereit. Die Prozedur initssl habe ich auf das Notwendigste für Android gekürzt. Wenn ich jetzt zur dementsprechenden https Adresse posten möchte, bekomme ich, dass die SSL Bibliothek nicht geladen werden konnte.
Delphi-Quellcode:
var help2: String;
begin if (not sslInited) then begin sslInited:=true; IdOpenSSLSetLibPath(String.Empty); IdSSLOpenSSLHeaders.Load(); help2:=IdSSLOpenSSLHeaders.WhichFailedToLoad(); if (length(help2) > 0) then begin IdOpenSSLSetLibPath(IncludeTrailingPathDelimiter(TPath.GetLibraryPath)); IdSSLOpenSSLHeaders.Load(); help2:=IdSSLOpenSSLHeaders.WhichFailedToLoad(); if (length(help2) > 0) then begin IdOpenSSLSetLibPath(IncludeTrailingPathDelimiter(TPath.GetDocumentsPath)); IdSSLOpenSSLHeaders.Load(); help2:=IdSSLOpenSSLHeaders.WhichFailedToLoad(); end; end; end; end;
Delphi-Quellcode:
var H: TIdHttp;
SS: TStringStream; IdSSL : TIdSSLIOHandlerSocketOpenSSL; begin initssl; H := TIdHttp.Create(nil); idSSL := TIdSSLIOHandlerSocketOpenSSL.Create(H); idSSL.SSLOptions.Method := sslvTLSv1_2; idSSL.SSLOptions.SSLVersions := [sslvTLSv1_2]; idSSL.SSLOptions.Mode := sslmUnassigned; idSSL.SSLOptions.VerifyMode := []; idSSL.SSLOptions.VerifyDepth := 0; H.IOHandler := IdSSL; try SS := TStringStream.Create; try H.Post(--> hier kommt die https URL,SS); ShowMessage(SS.DataString); finally SS.Free; end; finally H.Free; end; |
AW: Android - SSL-Verschlüsselung
Bist du dir denn sicher, dass du es unter Android-32-bit nutzt? Ich frage, weil du die Libs in library\lib\armeabi-v7a\ packst.
Für Android-64-bit ist der richtige Remote-Path library\lib\arm64-v8a\ |
AW: Android - SSL-Verschlüsselung
Hallo Phillipp,
ja ist definitiv 32 bit. LG Mirko |
AW: Android - SSL-Verschlüsselung
Hallo nochmal,
ich habe die libssl.so und libcrypto.so mal testweise in assets\internal\ bereit gestellt und den Pfad so definitert IdOpenSSLSetLibPath(IncludeTrailingPathDelimiter(T Path.GetDocumentsPath)) . Die 32-bit DAteien habe ich auch hier hertuner geladen. ![]() Wenn ich mit den Wert von help2 anzeigen lasse bekomme ich immer, dass die Datei libcrypto.so nicht geladen werden kann. Habe ich evtl. die falschen .so Dateien? Habe noch vergessen zu schreiben, dass ich mittlerweile auch auf Delphi 11 bin. LG Mirko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz