Einzelnen Beitrag anzeigen

michaelg

Registriert seit: 20. Apr 2008
87 Beiträge
 
#1

Datasnap REST Server mit HTTPS in 10.4.2

  Alt 25. Feb 2021, 16:29
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:
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.
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?
  Mit Zitat antworten Zitat