![]() |
Datasnap/SSL/Zertifikate mit Delphi 10.3.3
Liste der Anhänge anzeigen (Anzahl: 3)
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)? |
AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3
Hallo,
sieht denn der Dateiname im Explorer "schön" aus?. |
AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3
Zitat:
|
AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3
Hallo,
und wie setzt Du ihn? Vielleicht ein "neues" Unicode-Problem? Nimm mal als String einen AnsiString, wenn Du den Pfad zum Zertifikat zusammenbaust. |
AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3
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. |
AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3
Hallo,
was zeigt denn der Debugger an? Baue ihn mal dynamisch en. var S: AnsiString; S:= '.\root.pem'; RootCertFile:= S; MessageBox(.. PChar(RootCertFile)) |
AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3
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.. :D
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; |
AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3
Servus Werner,
du hast mir grad den Tag gerettet :lol: Ohne Cast funktioniert es!!! Danke und Gruß aus dem Bregenzerwald |
AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3
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:
Delphi-Quellcode:
LFileName := argc;// PWideChar(argc);
schon funktioniert es. |
AW: Datasnap/SSL/Zertifikate mit Delphi 10.3.3
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?? :?: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 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