Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Neuen SSL-Zerifikat: Verwendung mit IdHTTPServer??? (https://www.delphipraxis.net/134462-neuen-ssl-zerifikat-verwendung-mit-idhttpserver.html)

romber 22. Mai 2009 17:22


Neuen SSL-Zerifikat: Verwendung mit IdHTTPServer???
 
Hallo!

Ich habe heute meinen neuen SSL-Zertifikat von Comodo erhalten. Das sind drei crt-Dateien sowie eine Textdatei mit dem Zertifikat in Textform.
Wie installiere ich jetzt den Zertifikat, damit ich es mit Indy + OpenSSL verwenden kann?

Danke!

romber 24. Mai 2009 13:53

Re: Neuen SSL-Zerifikat: Verwendung mit IdHTTPServer???
 
*PUSH

romber 25. Mai 2009 10:24

Re: Neuen SSL-Zerifikat: Verwendung mit IdHTTPServer???
 
Weiss wirklich keiner, wie das geht? :(

gvita 25. Mai 2009 11:24

Re: Neuen SSL-Zerifikat: Verwendung mit IdHTTPServer???
 
Hallo,

du musst dein Zertifikat umwandeln.

z.b.. so: openssl x509 -inform der -in certificate.cer -out certificate.pem.

http://www.magenbrot.net/wiki/linux/...sl-zertifikate


Indy versteht nur das pem format. Mit dem Passwort und so weiter siehh dir die Url an.

Gruß Gio

romber 25. Mai 2009 18:50

Re: Neuen SSL-Zerifikat: Verwendung mit IdHTTPServer???
 
Vielen Dank!

romber 31. Mai 2009 17:12

Re: Neuen SSL-Zerifikat: Verwendung mit IdHTTPServer???
 
Den Zerifikat konnte ich konvertieren.
Aber für die Verwendung mit Indy benötige ich noch die Key-File und Root-Zertifikat-File ebenfalls im PEM-Format.
Kann mir jemand ein Tipp geben, wie ich diese konvertiere?

Assertor 2. Jun 2009 10:21

Re: Neuen SSL-Zerifikat: Verwendung mit IdHTTPServer???
 
Hi romber,

Zitat:

Zitat von romber
Ich habe heute meinen neuen SSL-Zertifikat von Comodo erhalten. Das sind drei crt-Dateien sowie eine Textdatei mit dem Zertifikat in Textform.

Wie lauten denn die Dateinamen?

Zitat:

Zitat von romber
Den Zerifikat konnte ich konvertieren.
Aber für die Verwendung mit Indy benötige ich noch die Key-File und Root-Zertifikat-File ebenfalls im PEM-Format.
Kann mir jemand ein Tipp geben, wie ich diese konvertiere?

Du hast Dein Zertifikat bereits erfolgreich konvertiert. Wenn Du die .PEM Datei kopierst und mal als Textdatei ansiehst, sollte da etwas stehen wie:

Zitat:

-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Den gesamten Teil (inklusive der Linien mit Begin/End) von Private Key kopierst Du in eine neue Datei, die Du z.B. Server.key nennst. Den Certificate Teil ebenso, z.B. in Server.crt.

Jetzt brauchst Du noch das RootCA Zertifikat. Dies ist das Zertifikat Deines Ausstellers, hier also Comodo . Du hast das RootCA entweder direkt von Comodo erhalten oder aber kannst das Zertifikat aus dem Internet Explorer exportieren (Base64 CER). Übrigens sind CER Base64 Dateien aus Windows identisch mit dem PEM Format.

Die Root CAs von Comodo findest Du z.B. im Firefox unter Tools > Options > Advanced > Encryption > View Certificates > Authorities (einmal in der Gruppe Comodo CA Limited und eins unter GTE Ltd). Dort kannst Du diese Exportieren (als PEM). Welches das richtige ist, hängt von Deinem Zertifikat und Aussteller ab.

Folgende Optionen sind im Server noch wichtig:
  • Der Event IdServerIOHandlerSSLOpenSSL.OnGetPassword wird verwendet, um OpenSSL das Passwort für Dein privates Zertifikat zu geben
  • IdServerIOHandlerSSLOpenSSL.SSLOptions.Mode auf "sslmServer" stellen
  • IdServerIOHandlerSSLOpenSSL.SSLOptions.VerifyDepth steuer die Akzeptanz der Tiefe der Zertifikatskette (z.B. RootCA -> CA1 -> Server Zertifikat entspricht 2)
  • IdServerIOHandlerSSLOpenSSL.SSLOptions.Method steuert, welche Protokolle Du unterstützen willst (Kompatibilität sslvSSLv23, heute üblicherweise aber sslvSSLv3 oder sslvTLSv1).
  • IdServerIOHandlerSSLOpenSSL.SSLOptions.VerifyMode. sslvrfPeer ermöglicht vom Client ebenfalls ein Zertifikat zu verlangen und über die Methode OnVerifyPeer gegenzuprüfen

Folgende Optionen im Client sind wichtig:
  • IdSSLIOHandlerSocketOpenSSL.SSLOptions.Mode auf "sslmClient" oder "sslmUnassigned" stellen
  • IdSSLIOHandlerSocketOpenSSL.SSLOptions.Method auf sslvTLSv1 (wie vom Server gefordert) stellen
  • IdSSLIOHandlerSocketOpenSSL.SSLOptions.VerifyMode. sslvrfPeer ermöglicht mit der Methode OnVerifyPeer das Server Zertifikat zu prüfen

Diese beiden IOHandler weist Du den entsprechenden Komponenten zu. Bei FTP mit SSL (FTPS auf 21, FTPES auf 990) ist noch wichtig, die DataPortProtection einzuschalten und UseTLS auf Explizit/Implizit oder Require zu stellen, je nach Anforderung und Wunsch.

Gruß Assertor

romber 2. Jun 2009 14:03

Re: Neuen SSL-Zerifikat: Verwendung mit IdHTTPServer???
 
Zitat:

Zitat von Assertor
IdServerIOHandlerSSLOpenSSL.SSLOptions.VerifyMode. sslvrfPeer ermöglicht vom Client ebenfalls ein Zertifikat zu verlangen und über die Methode OnVerifyPeer gegenzuprüfen

Da verstehe ich nicht ganz. Ich habe ein Zertifikat, das die Identität meiner Domain überprüft. Ich meine, wenn ich das Zertifikat mit irgendeiner anderen Domain einsetze, ist es ungültig. Welches Zertifikat muss in diesem Fall der Client haben?

Assertor 2. Jun 2009 14:14

Re: Neuen SSL-Zerifikat: Verwendung mit IdHTTPServer???
 
Hi,

Zitat:

Zitat von romber
Zitat:

Zitat von Assertor
IdServerIOHandlerSSLOpenSSL.SSLOptions.VerifyMode. sslvrfPeer ermöglicht vom Client ebenfalls ein Zertifikat zu verlangen und über die Methode OnVerifyPeer gegenzuprüfen

Da verstehe ich nicht ganz. Ich habe ein Zertifikat, das die Identität meiner Domain überprüft. Ich meine, wenn ich das Zertifikat mit irgendeiner anderen Domain einsetze, ist es ungültig. Welches Zertifikat muss in diesem Fall der Client haben?

Nicht verwirren lassen! Du hast im Server ein gültiges Zertifikat, der Client kann sich also sicher mit dem Server verbinden. Das oben genannte dient dazu, vom Client auch ein Zertifikat anzufordern. Da betrifft Dich hier absolut nicht.

Sehr vereinfacht gesagt: Man würde es einsetzen, um sich gegenseitig zu erkennen.

Beispiel:
- Domain1.com ist Server
- Domain2.com ist Client

Jetzt haben beide gültige Zertifikate für sich selbst (ihre Domain). Nun verbindet sich der Client mit dem Server, der Server hat ja ein gültiges Zertifikat und alles ist gut.

Wenn nun der Server aber möchte, daß sich der Client auch zu erkennen gibt (das ist sslvrfPeer im Server IO Handler), dann muß der Client für sich selbst, Domain2.com, ein gültiges Zertifikat haben.

Die sslvrfPeer Option im Server wird also verwendet, wenn der Client auch ein Zertifikat nutzen muß. In Deinem Fall könntest Du das gleiche Zertifikat nehmen, aber nur wenn der Client auf der selben Domain genutzt wird.

Das ist aber alles sehr vereinfacht dargestellt!

Gruß Assertor

romber 2. Jun 2009 14:21

Re: Neuen SSL-Zerifikat: Verwendung mit IdHTTPServer???
 
Ok, jetzt ist alles klar. Danke!


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