AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi Datasnap REST Server mit HTTPS in 10.4.2
Thema durchsuchen
Ansicht
Themen-Optionen

Datasnap REST Server mit HTTPS in 10.4.2

Ein Thema von michaelg · begonnen am 25. Feb 2021 · letzter Beitrag vom 20. Mai 2021
Antwort Antwort
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
michaelg

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

AW: Datasnap REST Server mit HTTPS in 10.4.2

  Alt 20. Mai 2021, 16:40
Das hat sich jetzt erledigt.

Wenn man auf einem Android-Gerät testen will, muss man jetzt wohl zwingend mit einem "offiziellen" Zertifikat arbeiten.
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
755 Beiträge
 
#3

AW: Datasnap REST Server mit HTTPS in 10.4.2

  Alt 20. Mai 2021, 19:09
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!?

Geändert von Olli73 (20. Mai 2021 um 19:11 Uhr)
  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 23:10 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