Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Https zertifikat für Indy verstehen (https://www.delphipraxis.net/209831-https-zertifikat-fuer-indy-verstehen.html)

QuickAndDirty 27. Jan 2022 16:38

Https zertifikat für Indy verstehen
 
Hallo ich habe eine große PEM datei bekommen in der alles drin stehen sollte was ich brauche.
Kann ich die einfach beim iohandler vom Webservice hinterlegen?

Delphi-Quellcode:
FServer := TIdHTTPWebBrokerBridge.Create(self);

  if Securemode then
  Begin
    LIOHandleSSL := TIdServerIOHandlerSSLOpenSSL.Create(fServer);
    LIOHandleSSL.SSLOptions.KeyFile := 'c:\webservice\MyDomain.PEM';
    LIOHandleSSL.SSLOptions.CertFile := 'c:\webservice\MyDomain.PEM';
    LIOHandleSSL.SSLOptions.RootCertFile := 'c:\webservice\MyDomain.PEM';
    LIOHandleSSL.OnGetPassword := OnGetSSLPassword;
    FServer.IOHandler := LIOHandleSSL;
  end;
oder musss ich die auseinander nehmen?


Folgenden teile hat die PEM datei
Code:
-----BEGIN CERTIFICATE REQUEST-----
MIIE3
kuddlemuddle
N0RSzv4BCuO4Vikw
-----END CERTIFICATE REQUEST-----

-----BEGIN PRIVATE KEY-----
MIIJ
Kuddelmuddel
1IXMpm68=
-----END PRIVATE KEY-----

-----BEGIN CERTIFICATE-----
MIIH
kuddelmuddel
ITyBhlHw==
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
MIIG
Kuddelmuddel
xzlIPK1aEn8=
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
MIIF
kuddelmuddel
teRCBaho1+V
-----END CERTIFICATE-----
Wie kann ich die Zertifikate unterscheiden?

Was von den PEM abschnitten ist welcher x.509 standard?
Ich mein
wie bekomme ich dort eine Key, Cert und root datei raus?
Warum soviele Zertifikate?

mjustin 28. Jan 2022 07:37

AW: Https zertifikat für Indy verstehen
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1501302)
Hallo ich habe eine große PEM datei bekommen in der alles drin stehen sollte was ich brauche.
Kann ich die einfach beim iohandler vom Webservice hinterlegen?
...
Warum soviele Zertifikate?


Ja, die kann man so hinterlegen (siehe https://stackoverflow.com/questions/62068537/)

In der Datei sind mehrere Zertifikate, vermutlich handelt es sich um eine Zertifikatskette mit Zertifikaten der 'Intermediate' CAs.

Die Datei kann man vermutlich im Explorer über das Kontextmenü öffnen, die Zertifikatsinformationen werden dann angezeigt.

QuickAndDirty 28. Jan 2022 09:46

AW: Https zertifikat für Indy verstehen
 
In den Beispielen sind es immer 3 Dateien.
Root und key funktionieren woh auch.
Aber beim lesen des Cert meldet
Delphi-Quellcode:
IDSSLOpenSSL.IndySSL_CTX_use_certificate_chain_file(ctx :PSSL_CTX; const AFileName: String) : TIdC_INT;
Einen Fehler:

"Zertifikat konnte nicht geladen werden.
error:00000000:lib(0):func(0):reason(0)"

mjustin 28. Jan 2022 12:05

AW: Https zertifikat für Indy verstehen
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1501330)
In den Beispielen sind es immer 3 Dateien.
Root und key funktionieren woh auch.
Aber beim lesen des Cert meldet
Delphi-Quellcode:
IDSSLOpenSSL.IndySSL_CTX_use_certificate_chain_file(ctx :PSSL_CTX; const AFileName: String) : TIdC_INT;
Einen Fehler:

"Zertifikat konnte nicht geladen werden.
error:00000000:lib(0):func(0):reason(0)"

Jetzt sehe ich es auch :)

Ja, die drei Zertifikate und der private key müssen dann per copy & paste in vier einzelne Dateien übernommen werden.

Welches der Drei das das Server- und welches das Root-Zertifikat ist ist z.B. wieder mittels Explorer möglich.

QuickAndDirty 28. Jan 2022 13:27

AW: Https zertifikat für Indy verstehen
 
ist "certificate Request" für irgend etwas wichtig?

slemke76 20. Mär 2022 11:22

AW: Https zertifikat für Indy verstehen
 
Hallo,

ist zwar schon ein wenig was her, aber auch noch nicht zu lange ;-)

Zitat:

Zitat von QuickAndDirty (Beitrag 1501345)
ist "certificate Request" für irgend etwas wichtig?

Für den Betrieb nicht - das CSR brauchst du, um das Zertifikat zu signieren (i.d.R. durch eine offizielle CA-Autorität). Also bei Neu-Ausstellung oder Verlängerung. Siehe auch: https://de.wikipedia.org/wiki/Certif...igning_Request

Grüße
Sebastian

Maliko 21. Mär 2022 07:37

AW: Https zertifikat für Indy verstehen
 
Wenn du ne PFX-Datei hast kannst du über OpenSSL auch ganz bequem die Teile rausoperieren, die du für die Schnittstelle brauchst. Ich benutz dafür immer folgende Anleitung und das funktioniert einwandfrei: https://medium.com/beingcoders/easy-...s-683849242c65.

Einbinden tue ich das ganze dann immer wie folgt:
Delphi-Quellcode:
    LIOHandleSSL := TIdServerIOHandlerSSLOpenSSL.Create(FServer);
    LIOHandleSSL.SSLOptions.RootCertFile := '';
    LIOHandleSSL.SSLOptions.CertFile := 'C:\Cert\cert.crt';
    LIOHandleSSL.SSLOptions.KeyFile := 'C:\Cert\key.key';
    LIOHandleSSL.SSLOptions.Method:= sslvTLSv1_2;
    LIOHandleSSL.OnGetPassword := OnGetSSLPassword;
    FServer.IOHandler := LIOHandleSSL;
Wichtig ist in erster Linie vor allem den Key in eine extra Datei zu bekommen (und überspringe den Schritt das Passwort zu dekodieren. Das macht das Programm selbst über das OnGetPassword Event). Wie schon gesagt. Ich bau alle meine APIs auf diese Art und weise und benutz dafür immer die Verlinkte Anleitung und da hab ich bisher nie irgendwelche Probleme mit gehabt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:36 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