AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy 9: Zugriffsverletzung bei SSL-Zertifikatsprüfung
Thema durchsuchen
Ansicht
Themen-Optionen

Indy 9: Zugriffsverletzung bei SSL-Zertifikatsprüfung

Ein Thema von Codehunter · begonnen am 2. Mai 2012
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Indy 9: Zugriffsverletzung bei SSL-Zertifikatsprüfung

  Alt 2. Mai 2012, 07:55
Hallo,

ich hab da ein kleines Problem. Eins vorweg: Ich verwende Indy 9 da der Protierungsaufwand bei einigen großen Projekten nicht machbar ist derzeit. Leider siehts mit der Parallelinstallation beider Indys auch nicht so rosig aus, darum bleibt es vorerst bei der 9er Version.

Auf der Serverseite habe ich einen Apache laufen, mod_ssl usw. ist alles schick konfiguriert und ein VHost eingerichtet, welcher nur auf Port 443 lauscht und nur SSL-Verbindungen annimmt. Zweitens habe ich auf dem Server mit dem aktuellen OpenSSL ein Zertifikat für die Subdomain/VHost erzeugt. Rufe ich die Subdomain im Browser auf, läuft das normale Procedere, d.h. Browser beklagt sich über den unbekannten Zertifikatsaussteller, danach steht die SSL-Verbindung. Browser-SSL-Info sagt "TLS v1.0 256 bit AES (1024 bit DHE_RSA/SHA)" wird verwendet. Soweit so gut.

Jetzt habe ich mit Delphi (7 Pro) ein kleines Testprojekt erstellt. Einen IdHTTP und einen IdSSLIOHandlerSocket aufs Formular, IdHTTP1.IOHandler auf IdSSLIOHandlerSocket1 eingestellt und IdSSLIOHandlerSocket1.OnVerifyPeer zugewiesen.

Die SSL-DLLs habe ich von http://indy.fulgan.com/SSL/ runtergeladen und ins Projekt-EXE-Verzeichnis gelegt.

Die folgende Routine ruft dann das Test-Dokument vom Server ab:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  IdSSLOpenSSLHeaders.Load;
  with HTTPs do begin
    Host:= 'subdomain.intranet.local';
    Port:= 443;
    if Connected then Disconnect;
    Connect;
    Memo1.Lines.Add(Get('https://subdomain.intranet.local/index.html'));
    Disconnect;
  end;
end;
Klappt soweit auch, HTML-Seite wird abgerufen und im Memo angezeigt. Jetzt kommt der Schlamassel: Setze ich IdSSLIOHandlerSocket1.SSLOptions.VerifyMode:= [sslvrfPeer] (oder irgendeine andere Kombination anstatt IdSSLIOHandlerSocket1.SSLOptions.VerifyMode:= []), dann knallt es jedesmal mit einer Access Violation. Setze ich IdSSLIOHandlerSocket1.SSLOptions.Method:= sslvTLSv1, dann kommt zusätzlich noch eine EIdOSSLConnectionError Exception. OnVerify wird nicht ausgelöst. Testweise habe ich OnVerify so gestaltet:
Delphi-Quellcode:
function TForm1.SSLVerifyPeer(Certificate: TIdX509): Boolean;
begin
  with Certificate do begin
    Memo1.Lines.Add(FingerprintAsString);
  end;
end;
Wenn OnVerify nicht funktioniert, dann kann ich den nächsten Schritt nicht gehen, das Zertifikat zu prüfen. Damit wäre der ganze SSL-Aufwand nutzlos, ich könnte genauso gut ungesicherte Verbindungen nutzen.

Sind es mal wieder inkompatible SSL-DLLs? Zumindest die Verbindung und der Abruf als solches funktionieren ja, nur das Prüfen des Zertifikates nicht

Grüße
Cody

EDIT: Ich bin schon mal einen Schritt weiter: Wenn ich in der o.g. ButtonClick-Routine unmittelbar nach dem ersten Connect ein Memo1.Lines.Add(SSL.SSLSocket.PeerCert.Fingerprint AsString) ausführe, dann bekomme ich die Daten des Serverzertifikates. Scheinbar knallt es nur bei den Eventhandlern. Bug in Indy 9 oder BimB (Bug in my Brain)???

Geändert von Codehunter ( 2. Mai 2012 um 08:40 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:39 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