![]() |
Datasnap REST Server mit HTTPS in 10.4.2
Moin,
ich versuche in möglichst wenig Worten den doch recht komplexen Sachverhalt zu erklären. Es gibt einen Datasnap-Rest-Server als VCL-Anwendung. Dieser läuft per HTTPS. Es gibt die zwei Zertifikats-Dateien und die Schlüssel-Datei. Diese werden dem TIdServerIOHandlerSSLOpenSSL zugewiesen. In der FMX-Client App ist die DSRestConnection auf HTTPS gestellt. BIS GESTERN Die Kommunikation funktionierte bestens und verschlüsselt auf den Plattformen Win32, iOS64, Android32 und Android64 mit DELPHI 10.4.1. Das Android SDK ist 26.1.1 . Das iOS-SDK ist 14.2 . SEIT HEUTE Heute habe ich die 10.4.2 installiert. Unter Win32 klappt die Kommunikation noch, unter iOS64, Android 32 und 64 nicht mehr. Ich bekomme keine Verbindung zum Server mehr. Jetzt hatte ich hier bereits etwas gesucht und fand den Hinweis, dass ein selbstsigniertes Zertifikat ein Problem darstellen könnte. Das kann ich mir aber nicht vorstellen, da es unter 10.4.1 geklappt hat und ich dort auch schon dieselben SDKs verwendet hatte. Das Zertifikat hatte ich selbst mit OpenSSL erstellt. Um ein bisschen mehr herauszubekommen, habe ich im Android-Monitor folgendes im Logfile:
Code:
Wenn man nach "Trust anchor for certification path not found" googlet, findet man nicht viel hilfreiches. Kann mir jemand einen Tipp geben, woran das liegen kann?
02-25 14:26:05.348: W/System.err(22810): java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
02-25 14:26:05.348: W/System.err(22810): at com.android.org.conscrypt.TrustManagerImpl.verifyChain(TrustManagerImpl.java:672) 02-25 14:26:05.348: W/System.err(22810): at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:543) 02-25 14:26:05.348: W/System.err(22810): at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:499) 02-25 14:26:05.348: W/System.err(22810): at com.android.org.conscrypt.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:325) 02-25 14:26:05.348: W/System.err(22810): at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:113) 02-25 14:26:05.349: W/System.err(22810): at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:87) 02-25 14:26:05.349: W/System.err(22810): at android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:116) 02-25 14:26:05.349: W/System.err(22810): at com.embarcadero.rtl.ProxyInterface.dispatchToNative(Native Method) 02-25 14:26:05.349: W/System.err(22810): at com.embarcadero.rtl.ProxyInterface.invoke(ProxyInterface.java:21) 02-25 14:26:05.349: W/System.err(22810): at java.lang.reflect.Proxy.invoke(Proxy.java:913) 02-25 14:26:05.349: W/System.err(22810): at $Proxy15.checkServerTrusted(Unknown Source) 02-25 14:26:05.349: W/System.err(22810): at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:201) 02-25 14:26:05.349: W/System.err(22810): at com.android.org.conscrypt.ConscryptFileDescriptorSocket.verifyCertificateChain(ConscryptFileDescriptorSocket.java:413) 02-25 14:26:05.349: W/System.err(22810): at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) 02-25 14:26:05.350: W/System.err(22810): at com.android.org.conscrypt.SslWrapper.doHandshake(SslWrapper.java:381) 02-25 14:26:05.350: W/System.err(22810): at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:222) 02-25 14:26:05.350: W/System.err(22810): at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:1477) 02-25 14:26:05.350: W/System.err(22810): at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:1423) 02-25 14:26:05.350: W/System.err(22810): at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:1367) 02-25 14:26:05.350: W/System.err(22810): at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:219) 02-25 14:26:05.350: W/System.err(22810): at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:142) 02-25 14:26:05.350: W/System.err(22810): at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:104) 02-25 14:26:05.350: W/System.err(22810): at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:392) 02-25 14:26:05.350: W/System.err(22810): at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:325) 02-25 14:26:05.351: W/System.err(22810): at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:489) 02-25 14:26:05.351: W/System.err(22810): at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131) 02-25 14:26:05.351: W/System.err(22810): at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:89) 02-25 14:26:05.351: W/System.err(22810): at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(Unknown Source:0) 02-25 14:26:05.351: W/System.err(22810): Caused by: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. |
AW: Datasnap REST Server mit HTTPS in 10.4.2
Das hat sich jetzt erledigt.
Wenn man auf einem Android-Gerät testen will, muss man jetzt wohl zwingend mit einem "offiziellen" Zertifikat arbeiten. |
AW: Datasnap REST Server mit HTTPS in 10.4.2
Reicht es nicht, das eigene (Root-)Zertifikat zu installieren unter Android?
Oder gibt es bei den Rest-Komponenten so etwas wie bei Indy: TIdSSLIOHandlerSocketOpenSSL -> OnVerifyPeer? Damit kann man das wohl selber steuern!? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 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