Einzelnen Beitrag anzeigen

Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#7

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

  Alt 2. Jun 2009, 11:21
Hi romber,

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 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
Frederik
  Mit Zitat antworten Zitat