AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Datasnap/SSL/Zertifikate mit Delphi 10.3.3

Datasnap/SSL/Zertifikate mit Delphi 10.3.3

Ein Thema von wjjw · begonnen am 26. Nov 2019 · letzter Beitrag vom 28. Nov 2019
Antwort Antwort
Benutzerbild von wjjw
wjjw
Online

Registriert seit: 3. Aug 2017
Ort: Wiener Neustadt, Österreich
54 Beiträge
 
Delphi 10.3 Rio
 
#1

Datasnap/SSL/Zertifikate mit Delphi 10.3.3

  Alt 26. Nov 2019, 14:52
Hallo,
nachdem ich Delphi 10.3.3 installiert und einige Projekte erfolgreich kompiliert habe, ist jetzt doch ein Problem aufgetreten.
Ich weis das es mit Linux und SSL unter 10.3.x Probleme gab.
Jetzt hab ich ein Problem mit Windows.

In meiner TDSCertFiles-Komponente habe ich alle drei Dateinamen ordnungsgemäß eingetragen (CertFile, KeyFile, RootCertFile).
Laut Fehlermeldung wird die "RootCertFile"-Datei nicht gefunden. Auch wird diese im Code "komisch" angezeigt: Pfad + "japanische Zeichen" (wo der Dateiname stehen sollte).

Hat jemand auch ein derartiges Problem? Wie gesagt - unter 10.3.2 ohne Probleme.
Wenn ich den RootCertFile-Eintrag leer lasse, funktioniert es auch.. Wird diese Datei überhaupt gebraucht oder reichen die Cert + Key Datei (+Passwort)?
Miniaturansicht angehängter Grafiken
bildschirmfoto-2019-11-26-um-14.35.15.png   bildschirmfoto-2019-11-26-um-14.35.20.png   bildschirmfoto-2019-11-26-um-14.35.36.png  
Werner Weiß
--
Werner
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.377 Beiträge
 
Delphi XE4 Professional
 
#2

AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3

  Alt 26. Nov 2019, 14:55
Hallo,
sieht denn der Dateiname im Explorer "schön" aus?.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von wjjw
wjjw
Online

Registriert seit: 3. Aug 2017
Ort: Wiener Neustadt, Österreich
54 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3

  Alt 26. Nov 2019, 14:57
Hallo,
sieht denn der Dateiname im Explorer "schön" aus?.
Ja, sehr schön -> "root.pem"
Werner Weiß
--
Werner
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.377 Beiträge
 
Delphi XE4 Professional
 
#4

AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3

  Alt 26. Nov 2019, 15:28
Hallo,
und wie setzt Du ihn?
Vielleicht ein "neues" Unicode-Problem?
Nimm mal als String einen AnsiString, wenn Du den Pfad zum Zertifikat zusammenbaust.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von wjjw
wjjw
Online

Registriert seit: 3. Aug 2017
Ort: Wiener Neustadt, Österreich
54 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3

  Alt 26. Nov 2019, 15:31
Baue den String nicht zusammen - setzte ihn einfach relativ in der Komponente.
Also [RootCertFile] -> ".\root.pem".
Sonst mache ich nichts. Den Rest macht Delphi.
Das Problem ist ja sogar wenn du ein neues Projekt via Wizard machst und die Dateien darin zuweist - auch dort kommt bereits der Fehler.
Werner Weiß
--
Werner
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.377 Beiträge
 
Delphi XE4 Professional
 
#6

AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3

  Alt 26. Nov 2019, 15:58
Hallo,
was zeigt denn der Debugger an?

Baue ihn mal dynamisch en.

var
S: AnsiString;
S:= '.\root.pem';
RootCertFile:= S;

MessageBox(.. PChar(RootCertFile))
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von wjjw
wjjw
Online

Registriert seit: 3. Aug 2017
Ort: Wiener Neustadt, Österreich
54 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3

  Alt 26. Nov 2019, 19:03
Hab das Problem gefunden (im Delphi Code: IdSSLOpenSSL.by_Indy_unicode_file_ctrl(...))
Kann mir diesen Code jemand erklären?
Und das Lustige ist, das es der Programmierer sogar kommentiert hat..

Delphi-Quellcode:
function by_Indy_unicode_file_ctrl(ctx: PX509_LOOKUP; cmd: TIdC_INT;
  const argc: PAnsiChar; argl: TIdC_LONG; out ret: PAnsiChar): TIdC_INT; cdecl;
var
  LOk: TIdC_INT;
  LFileName: String;
begin
  LOk := 0;
  case cmd of
    X509_L_FILE_LOAD:
      begin
        case argl of
          X509_FILETYPE_DEFAULT:
            begin
              LFileName := GetEnvironmentVariable
                (String(X509_get_default_cert_file_env));
              if LFileName <> 'then begin
                LOk := Ord(Indy_unicode_X509_load_cert_crl_file(ctx, LFileName,
                  X509_FILETYPE_PEM) <> 0);
              end else begin
                LOk := Ord(Indy_unicode_X509_load_cert_crl_file(ctx,
                  String(X509_get_default_cert_file), X509_FILETYPE_PEM) <> 0);
              end;
              if LOk = 0 then begin
                X509err(X509_F_BY_FILE_CTRL, X509_R_LOADING_DEFAULTS);
              end;
            end;
          X509_FILETYPE_PEM:
            begin
              // Note that typecasting an AnsiChar as a WideChar is normally a crazy
              // thing to do. The thing is that the OpenSSL API is based on ASCII or
              // UTF8, not Unicode and we are writing this just for Unicode filenames.

              LFileName := PWideChar(argc); // <==================== HIER !!!!????? Warum nicht einfach LFileName :=argc;

              LOk := Ord(Indy_unicode_X509_load_cert_crl_file(ctx, LFileName,
                X509_FILETYPE_PEM) <> 0);
            end;
        else
          LFileName := PWideChar(argc);
          LOk := Ord(Indy_unicode_X509_load_cert_file(ctx, LFileName, TIdC_INT(argl)) <> 0);
        end;
      end;
  end;
  Result := LOk;
end;
Werner Weiß
--
Werner
  Mit Zitat antworten Zitat
braunbaer

Registriert seit: 15. Okt 2008
Ort: Vorarlberg
73 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#8

AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3

  Alt 28. Nov 2019, 09:43
Servus Werner,

du hast mir grad den Tag gerettet
Ohne Cast funktioniert es!!!

Danke und Gruß aus dem Bregenzerwald
Gebhard Blank
  Mit Zitat antworten Zitat
braunbaer

Registriert seit: 15. Okt 2008
Ort: Vorarlberg
73 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3

  Alt 28. Nov 2019, 09:50
Zur Info:

Diese Datei
C:\Program Files (x86)\Embarcadero\Studio\20.0\source\Indy10\Protoc ols\IdSSLOpenSSL.pas
und diese INC Datei
C:\Program Files (x86)\Embarcadero\Studio\20.0\source\Indy10\Protoc ols\IdCompilerDefines.inc
in dein Projektverzeichnis kopieren.

Die IdSSLOpenSSL in dein Projekt aufnehmen
In Zeile 1245 das Casting entfernen:
LFileName := argc;// PWideChar(argc);

schon funktioniert es.
Gebhard Blank
  Mit Zitat antworten Zitat
Benutzerbild von wjjw
wjjw
Online

Registriert seit: 3. Aug 2017
Ort: Wiener Neustadt, Österreich
54 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3

  Alt 28. Nov 2019, 17:43
Ja so funktioniert es..
Komischerweise ist in Delphi 10.3.2 der selbe Code und es funktioniert - aber vielleicht ist die Cast-Funktion selbst "Schuld" bzw. wurde verändert.

Ein Problem gelöst - auf zum Nächsten:
Übertrage Dateien ohne Probleme - jedoch jetzt beim Übertragen größerer Dateien (>32MB) bekomme ich Fehler - Out of Memory.
Hat jemand Upload/Download Methoden für DataSnap REST Server??
Werner Weiß
--
Werner
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf