AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke HTTPRequest mit Indy und Zertifikaten
Thema durchsuchen
Ansicht
Themen-Optionen

HTTPRequest mit Indy und Zertifikaten

Ein Thema von EmWieMichael · begonnen am 10. Jul 2012 · letzter Beitrag vom 12. Jul 2012
Antwort Antwort
EmWieMichael

Registriert seit: 28. Mär 2012
103 Beiträge
 
#1

HTTPRequest mit Indy und Zertifikaten

  Alt 10. Jul 2012, 12:51
Hallo,

nachdem ich mit Microsofts XMLHTTPRequester auf die Nase gefallen bin, versuch ich nun folgende Aufgabe mit Indy zu lösen:

Es geht also um ein HTTPRequest mit SSL und Zertifikaten auf Server- und Clientseite. Das Ganze muss dann auch noch über Proxys funktionieren.
Nach stundenlangem Lesen im Internet bin ich mir ziemlich sicher, dass Indy (10.5.5) dass auch kann; nur weiß ich noch nicht genau wie.

1. Das Client-Zertifikat ist korrekt installiert. In den Indy-SSLOptionen werden RootCertFile, Certfile und KeyFile angegeben. Drei Dateien scheinen mir eine zuviel zu sein. Ein weiteres Problem stellt die Tatsache dar, dass das Zertifikat ein Exportieren des privaten Schlüssels nicht zulässt (oder brauch ich den auch garnicht?).

2. Was hat es mit VerifyMode und VerifyPeer auf sich?

3. Meine bisherigen Erkenntnisse sehen wie folgt aus. Habe ich irgendetwas übersehen? (Übrigens habe ich noch ein unlösbares Problem: ich habe selber keinen Zugang zum Server und kann das Programm nur beim Kunden testen...)

Ich freue mich auf Eure Hinweise !

Delphi-Quellcode:
  List:=TStringList.Create;
  List.Add('Dummy');

  IdHTTP:=TIdHTTP.Create(nil);
  IdHTTP.Request.ContentType:='text/xml';
  IdHTTP.Request.CharSet:='utf-8';
  IdHTTP.Request.UserAgent:='Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)';
  IdHTTP.Request.AcceptEncoding:='gzip, deflate';

  FIdSSLIOHandlerSocketOpenSSL:=TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  FIdSSLIOHandlerSocketOpenSSL.SSLOptions.RootCertFile:=
  FIdSSLIOHandlerSocketOpenSSL.SSLOptions.CertFile:=
  FIdSSLIOHandlerSocketOpenSSL.SSLOptions.KeyFile:=
  FIdSSLIOHandlerSocketOpenSSL.SSLOptions.Method:=sslvSSLv3;
  FIdSSLIOHandlerSocketOpenSSL.SSLOptions.Mode:=sslmClient;
  FIdSSLIOHandlerSocketOpenSSL.SSLOptions.VerifyMode:=
  FIdSSLIOHandlerSocketOpenSSL.SSLOptions.VerifyDepth:=

  FIdSSLIOHandlerSocketOpenSSL:=TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  FIdSocksInfo:=TIdSocksInfo.Create(nil);

  with FIdSocksInfo do
   begin
     Host:=aProxy; // 192.168.124.20
     Port:=aPort; // 8080
     Version:=svSocks5;
     Username:='';
     Password:='';
     Enabled:=True;
   end;

  FIdSSLIOHandlerSocketOpenSSL.TransparentProxy:=FIdSocksInfo;
  IdHTTP.IOHandler:=FIdSSLIOHandlerSocketOpenSSL;

  try
    ResponseStr:=IdHTTP.Post(aURL, List);
  except
    ShowMessage('Fehler');
  end;
  List.Free;
  IdHTTP.Free;

Geändert von TBx (14. Okt 2014 um 13:00 Uhr) Grund: code-Tags durch Delphi-Tags ersetzt
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#2

AW: HTTPRequest mit Indy und Zertifikaten

  Alt 11. Jul 2012, 19:05
Funktioniert es denn in einer Testumgebung (Delphi Client + Delphi Server)?
Das wäre zwar nicht eine Garantie, dass es auch auf dem Zielsystem funktioniert, aber man könnte die bereits bekannten Einstellungen schon einmal verifizieren.
Zunächst ohne Proxy, das ist ein Kapitel für sich (z.B. verwendet der Proxy keinerlei Anmeldeverfahren?)
Michael Justin
  Mit Zitat antworten Zitat
EmWieMichael

Registriert seit: 28. Mär 2012
103 Beiträge
 
#3

AW: HTTPRequest mit Indy und Zertifikaten

  Alt 12. Jul 2012, 10:03
Funktioniert es denn in einer Testumgebung (Delphi Client + Delphi Server)?
Das wäre zwar nicht eine Garantie, dass es auch auf dem Zielsystem funktioniert, aber man könnte die bereits bekannten Einstellungen schon einmal verifizieren.
Zunächst ohne Proxy, das ist ein Kapitel für sich (z.B. verwendet der Proxy keinerlei Anmeldeverfahren?)
Vielen Dank für Dein Posting!
Eine entsprechende Testumgebung wäre zwar nicht schlecht, aber da mir die Zeit im Nacken sitzt, muss ich auf die Einrichtung eines Servers erstmal verzichten und betrachte das Zielsystem als Testsystem...
Irgendwie schade mit den Indy-Komponenten: Im Internet finden sich Fragen über Fragen, z. B. zum Thema HTTP-Request mit Zertifikaten, aber kaum brauchbare Antworten. Ich konnte bisher nicht einmal herausfinden, warum die Angaben des Proxys in FIdSocksInfo und nicht in IdHTTP.ProxyParams gemacht werden (ich habe den Code auch nur aus gefundenen Beispielen zusammengefrickelt).

Gruß Michael.
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
675 Beiträge
 
FreePascal / Lazarus
 
#4

AW: HTTPRequest mit Indy und Zertifikaten

  Alt 12. Jul 2012, 10:47
Gerade wenn einem die Zeit im Nacken sitzt, sollte man mal tief durchatmen und strukturiert testbaren Code schreiben statt mit nicht debugbaren Gegenstelle einen deutlich schwerer einschätzbaren Zeitaufwand zu riskieren. Und nach testen in der Entwicklungsumgebung ist man besser auf die möglichen Situationen beim Anpassen beim Kunden eingestellt.

Ist natürlich immer leichter gesagt als getan, aber hat die Erfahrung eigentlich immer wieder bewiesen

Zum Thema selbst kann ich leider nichts sagen, außer zu dem "zuviel" - wenn das Zertifikat selbstsigniert (und nicht zentral installiert) ist, dürfte das Root als Drittes notwendig sein.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#5

AW: HTTPRequest mit Indy und Zertifikaten

  Alt 12. Jul 2012, 17:27
und betrachte das Zielsystem als Testsystem...
Das ist halbwegs ok wenn das System ständig verfügbar ist, zum Beispiel im eigenen Intranet, wo man dann auch das Clientprogramm in der IDE zeilenweise ausführen / debuggen kann. Und auch ein jederzeit ansprechbarer Administrator bereitsteht, um Fragen zu beantworten oder auf Logfiles des Servers zuzugreifen.

Einen eventuell hilfreichen Client- und Server-SSL-Zertifikatscode für Indy habe ich in diesem Beitrag gefunden:

http://www.delphipraxis.net/138951-i...gsproblem.html

Das Archiv enthält aber nicht alle Zertifikate, die sollte man natürlich auch selber erstellen können.

Drei Zertifikatsdateien scheinen normal zu sein - CA, Server-Zertifikat und Key habe ich auch anderweitig (nicht Indy-bezogen) schon für einen im SSL Modus betriebenenn Server erzeugen und hinterlegen müssen.
Michael Justin
habarisoft.com
  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 20:31 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