AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy + SSL + IdHttp + Tutorial und ein Problem
Thema durchsuchen
Ansicht
Themen-Optionen

Indy + SSL + IdHttp + Tutorial und ein Problem

Ein Thema von endeffects · begonnen am 21. Sep 2004 · letzter Beitrag vom 2. Jul 2007
Antwort Antwort
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#1

Indy + SSL + IdHttp + Tutorial und ein Problem

  Alt 21. Sep 2004, 15:54
Hallo,

ich habe ein Problem mit den Indy Komponenten und SSL,
ich möchte TIdHttp und die SSL Biblioteken dazu nutzen
meine Emails bei einem WebMail Anbeiter abzurufen.
Leider unterstützt dieser kein Pop3 oder Imap.

Nach langem Suchen und viel Kaffee habe ich dazu
folgendes kleines Tutorial gefunden und übersetzt:

1) Zunächst benötigt man Delphi 5.0 oder höher und
die Indy Komponenten der Version 9.x.
Außerdem die aktuellen OpenSSL Biblioteken für Indy,
erhältlich sind diese hier.

2. Nachdem die beiden OpenSSL dll's in das Projekt-
verzeichnis kopiert wurden benötigt man ein SSL Zertifikat.
Im Internet Explorer im Menü Extras > Internet Optionen >
Inhalte wählt man dazu den Button Zertifikate und dort
Vertrauenswürdige Stammzertifierungsstellen. Hier
sucht man sich nun ein Class 3 Zertifikat (root authority) aus
und exportiert dieses Base-64-codiert in das Projektverzeichnis.

3. In Delphi erstellt man eine neue Anwendung und plaziert
dort aus dem Reiter Indy I/O Handlers die Komponente IdSSLIOHandlerSocket.
In den SSL-Optionen für diese Komponente wird unter CertFile das
zuvor exportierte Zertifikat ausgewählt. Zusätzlich werden
die Optionen VerifyDepth auf 2, Method auf sslvSSLv23 und
Mode auf sslmClient gesetzt.
Als nächstes plaziert man eine TIdHttp Komponente aus dem
Reiter Indy Clients auf der Form und ergänzt folgende Optionen:
Request.ContentType mit application/x-www-form-urlencoded
und IOHandler mit TIdServerIOHandlerSSL.

4. Als nächstes benötigt man noch ein Memo zur Ausgabe und 2 Buttons.
Die OnClick Events für die Buttons sind folgende:

Get Request
  Memo1.Text := IdHTTP1.Get('https://login.yahoo.com/config/login?.src=my&.v=0&.u=a0gonnoue2jjn&.last=&promo=&.intl=us&.bypass=&.partner=&.done=http%3a//my.yahoo.com'); Post Request
Delphi-Quellcode:
var
  PostDataStream : TStringStream;
  ParamData : TStringStream;
begin
  PostDataStream := TStringStream.Create('');
  ParamData := TStringStream.Create('');
  ParamData.WriteString('.src=my');
  ParamData.WriteString('&.v=0');
  ParamData.WriteString('&.u=a0gonnoue2jjn');
  ParamData.WriteString('&.last=');
  ParamData.WriteString('&promo=');
  ParamData.WriteString('&.intl=us');
  ParamData.WriteString('&.bypass=');
  ParamData.WriteString('&.partner=');
  ParamData.WriteString('&.done=http%3a//my.yahoo.com');
try
//Connect
  IdHTTP1.Post('https://login.yahoo.com/config/login?', ParamData, PostDataStream);
  Memo1.Text := PostDataStream.DataString;
finally
  ParamData.Free;
  PostDataStream.Free;
end;
Das Beispiel stammt 1 zu 1 aus dem englischen Tutorial.
Nun aber mein Problem, ich habe versucht mit einigen
Abwandlungen in dem Post Request mich auf meinem
Test Account einzuloggen. Leider ohne Erfolg.
Ich lande immer wieder auf der Ausgangsseite ohne
jegliche Fehlermeldungen. Könnte vielleicht Jemand mit
einem Login auf einer SSL Webseite versuchen das Beispiel nachzuvollziehen?
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#2

Re: Indy + SSL + IdHttp + Tutorial und ein Problem

  Alt 21. Sep 2004, 16:01
Ich hab das Beispiel nocheinmal als Projekt angehängt.
Das Zertifikat muss allerdings selbst erstellt werden.
Angehängte Dateien
Dateityp: zip ssl.zip (628,8 KB, 265x aufgerufen)
  Mit Zitat antworten Zitat
skydiablo

Registriert seit: 15. Mär 2004
Ort: Wismar
17 Beiträge
 
#3

Re: Indy + SSL + IdHttp + Tutorial und ein Problem

  Alt 21. Sep 2004, 17:25
dein prob liegt nicht an der verwendung der indy komponenten, sondern mit dem befehlsatz von yahoo... habe da schon einige erfahrung mit gemacht. yahoo gibt dir immer eine session ID mit der du dich bei "jeder" action identifizieren musst. also musst du als erstes dir die login url per GET laden und den quellcode nac deiner session ID durchsuchen (cookiemanager nicht vergessen zu nutzen). die session ID wird bei Yahoo über den parameter:

Code:
ParamData.WriteString('&.u=a0gonnoue2jjn');
übergeben ! weiterhin kannst du das "&" zeichen beim übergeben der parameter weg lassen (solltest du sogar !!!!)...

hier

Code:
IdHTTP1.Post('https://login.yahoo.com/config/login?', ParamData, PostDataStream);
auch nur die URL übergeben, OHNE das "?" am ende ! denke nun hast du erstmal wieder genug stuff um weiter zu friemeln... das anlegen des zertifikates mit dem IE sollte aber nicht nötig sein ! der rest sollte rutine sein !

greez, sky...
  Mit Zitat antworten Zitat
digleu

Registriert seit: 28. Okt 2003
Ort: Alfter, das dach der Welt
16 Beiträge
 
#4

Re: Indy + SSL + IdHttp + Tutorial und ein Problem

  Alt 23. Dez 2005, 20:18
Ich habe genau dieses Tutorial gerade nachvollzogen, weil ich etwas ähnliches Plane. Ich habe auch die beiden dlls in mein Programm-Verzeichnis gelegt. Trotzdem erhalte ich die Fehlermeldung "Could not load SSL library". Ist das irgendeine Form von Inkompatibilität? Ich nutze Delphi 5 und Indy 9.

Lg Lars
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Indy + SSL + IdHttp + Tutorial und ein Problem

  Alt 27. Dez 2006, 20:58
Ich hätt da nochmal eine Frage... muss man das Root-Zertifikat wirklich aus dem IE holen?!

1. Warum brauch ich als Client ein Zertifikat?
2. Was sagt das Zertifikat aus?
3. Kriegt man das nicht "sauberer"?

EDIT: hat sich eigentlich erledigt... für SSL over FTP (was ich hier gerade versuche) ist es gar nicht nötig, ein Zertifikat auf Clientseite zu verwenden.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
bongs

Registriert seit: 2. Jul 2007
1 Beiträge
 
#6

Re: Indy + SSL + IdHttp + Tutorial und ein Problem

  Alt 2. Jul 2007, 17:56
Ich erhalte immer wieder Fehler à la "could not load certificate" (EIdOSSLLoadingCertError) !!
Manchmal klappt es aber auch.

Hinzu kommt noch ab und zu der Fehler "Connection Closed Gracefully", allerdings erscheint dieser wiederum manchmal auch, wenn der Download eigentlich geklappt hat.

Kann jemand helfen?
  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 04:29 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