![]() |
Android - SSL-Verschlüsselung
Hallo,
ich wollte bei einer App einen verschlüsselten FTP-Zugriff implementieren und hatte eigentlich erwartet, dass ich das problemlos mit OpenSSL machen kann, so wie in der VCL, wo man dem IDFTP einfach einen entsprechend SSL-IOHandler verpasst. Dies scheint aber nicht der Fall zu sein, da OpenSSL anscheinend schon seit Android 6 nicht mehr seitens Embarcadero dafür unterstützt wird. Ich versuche gerade herauszufinden, was nun die einfachste Möglichkeit ist, das auf Android hinzubekommen, bin aber momentan eher verwirrt von dem, was ich dazu finde. Daher wollte ich mal hier diesbezüglich nachfragen, da ich doch bestimmt nicht der einzige bin, der sowas implementieren will... |
AW: Android - SLL-Verschlüsselung
Was genau willst du implementieren? SFTP oder FTPS?
Mit Indy geht zumindest meines Wissens kein SFTP und FTPS ist nicht wirklich sicher. Für SFTP nutze ich Chillkat, da habe ich aber nur mit deren Delphi DLLs Erfahrung, die dir hier nicht weiterhelfen. |
AW: Android - SLL-Verschlüsselung
Ich wollte FTPS per Indy implementieren, was ja in der VCL ziemlich problemlos ging.
|
AW: Android - SLL-Verschlüsselung
Ok, also ich nutze in meinem Projekt weiterhin OpenSSL auf Android zum Versenden von Mails, dies ist also kein generelles Problem. Die Version ist dabei OpenSSL 1.0.2q 20 Nov 2018.
Geht dies bei dir nicht? |
AW: Android - SLL-Verschlüsselung
Ich habe bis jetzt kein eigens installiertes OpenSSL genutzt, da man in der VCL ja einfach nur die TiDSSLIOHandlerSocketOpenSSL-Komponente nutzen musste.
Wäre das der einzige Weg, um FTPS auf Android hinzubekommen? |
AW: Android - SLL-Verschlüsselung
Liste der Anhänge anzeigen (Anzahl: 1)
Ich wäre auch davon ausgegangen, dass du dafür schon die OpenSSL-DLLs beilegen musst. Aber da kenne ich mich nicht aus.
Ich nutze für die Mails und folgendermaßen initialisiere ich OpenSSL
Delphi-Quellcode:
und folgendermaßen initialisiere ich dies:object IdSSLIOHandlerSocketOpenSSL: TIdSSLIOHandlerSocketOpenSSL MaxLineAction = maException Port = 0 DefaultPort = 0 SSLOptions.Method = sslvTLSv1_2 SSLOptions.SSLVersions = [sslvTLSv1_2] SSLOptions.Mode = sslmUnassigned SSLOptions.VerifyMode = [] SSLOptions.VerifyDepth = 0 Left = 1096 Top = 152 end
Delphi-Quellcode:
und natürlich legen ich der App alle notwendigen Libs bei und die habe ich von hier:
procedure TicTrainerF.initSSL();
{$IFNDEF IOS} var help2: String; {$ENDIF} begin if (not sslInited) then begin sslInited:=true; {$IFDEF ANDROID} IdOpenSSLSetLibPath(String.Empty); {$ENDIF} {$IFDEF IOS} {$ELSE} {$IFDEF MACOS} IdOpenSSLSetCanLoadSymLinks(false); IdOpenSSLSetLoadSymLinksFirst(false); IdOpenSSLSetLibPath(TPath.GetDirectoryName(ParamStr(0))); mlog.info('InitSSL from ' + TPath.GetDirectoryName(ParamStr(0))); {$ENDIF} {$ENDIF} {$IFDEF MSWINDOWS} IdOpenSSLSetLibPath(TPath.GetDirectoryName(ParamStr(0))); mlog.info('InitSSL from ' + TPath.GetDirectoryName(ParamStr(0))); {$ENDIF} IdSSLOpenSSLHeaders.Load(); {$IFDEF ANDROID} 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(); mlog.info('SSL-Version(3): ' + OpenSSLVersion); help2:=IdSSLOpenSSLHeaders.WhichFailedToLoad(); if (length(help2) > 0) then begin mlog.info('SSL-Errors: ' + help2); end; end else begin mlog.info('SSL-Version(2): ' + OpenSSLVersion); end; end else begin mlog.info('SSL-Version(1): ' + OpenSSLVersion); end; {$ELSE} mlog.info('SSL-Version: ' + OpenSSLVersion); {$IFNDEF IOS} help2:=IdSSLOpenSSLHeaders.WhichFailedToLoad(); if (length(help2) > 0) then mlog.info('SSL-Errors : ' + help2); {$ENDIF} {$ENDIF} end; end; ![]() ![]() |
AW: Android - SLL-Verschlüsselung
Hm faszinierend.
Ich hatte es fast genauso probiert. Anscheinend hatte ich einfach die falschen Bibliotheken. Mit denen hier funktioniert es problemlos. Vielen Dank! |
AW: Android - SLL-Verschlüsselung
Da ich gerade dabei bin: Welche Bibliotheken sollte man dann für dasselbe in IOS nehmen? Der Link von Embarcadero scheint hoffnungslos veraltet zu sein.
|
AW: Android - SLL-Verschlüsselung
Schick mir deine E-Mail-Adresse, dann sende ich dir die iOS-Libs. Da habe ich mir nicht notiert, woher ich sie habe.
|
AW: Android - SSL-Verschlüsselung
Hm, ist bei IOS noch irgendwas zu beachten?
Ich bekomme da beim SSL-Verbinden eine Zugriffsverletzung, die ich nicht weg bekomme. Laut Embarcadero soll man die Libraries einfach in den Debug/Release-Ordner schmeißen, jedoch ist sind die ganzen Angaben von denen so veraltet, dass ich dem etwas misstraue. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 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