openssl-Dll Fkt. & Param. auslesen, Https per dll-aufruf
Raik
- programmiertechnik
0 Christian Seiler0 Raik
Hallo!
Für einen, in "AutiIt" geschriebenen Webserver möchte ich die openssl-Bibliotek benutzen, um Komunikation via https zu ermöglichen.
Ich weis, dass ich auch STunnel als Proxy dazwischenschalten könnte, aber die direkte Verwendung der Dll wäre mir lieber (aus sportlichem Ehrgeiz, um den Webserver möglichst klein zu halten, um etwas dazu zu lernen).
mit Dependency Walker kann ich die Funktionsnamen auslesen.
Wie ich an die Parameter der Funktionen komme, weis ich noch nicht.
Und welche der Funktionen ich brauche, um ein Zertifikat zu erzeugen (evtl. kostenlos über eine von den gängigen Browsern anerkannte Zertifizierungsstelle möglich für privaten gebrauch?)
und mit welchen Funktionen dann der Aufbau der Verbindung erfolgt, hab ich auch noch nicht herausgefunden.
Wenn sich jemand mit diesen drei Fragen besser auskennt, als ich und mir da ein paar Hinweise geben könnte, würd mir das sehr helfen.
Kann man die Api-Aufrufe evtl. mit einem Tool mitloggen?
Einige Tutorials zum Erzeugen eines Zertifikats mittels openssl.exe habe ich schon gefunden. Die müsste ich dann wohl auf die direkten Funktionsaufrufe der dll umsetzen...
freundl. Grüsse aus Berlin, Raik
Hallo Raik,
Wie ich an die Parameter der Funktionen komme, weis ich noch nicht.
Schau doch in die offizielle Doku? Auf der Seite http://www.openssl.org/docs/ssl/ssl.html gibt's die ganze Funktionsprototypen und ganz unten sind die Funktionen selbst verlinkt und was sie machen (Gut, zugegeben, die Doku ist eher schlecht IMHO). Zudem gibt's im Internet reihenweise Anleitungen, wie man OpenSSL verwendet, um selbst SSL-Verschlüsselte Kommunikation zu ermöglichen (such einfach mal danach) - zwar in C, aber das erklärt dann zumindest die Art, wie Du die Funktionen aufrufen sollst.
Allerdings möchte ich Dich darauf Hinweisen, dass SSL-Kommunikation etwas sehr heikles ist und dass eine fehlerhafte Implementierung zu ernsthaften Sicherheitslücken führen kann, die den Nutzen von SSL zerstören (zum Beispiel könnte eine falsche Initialisierung von irgend etwas die Tür zu Man-in-the-middle-Attacken aufreißen). Du solltest Dich vor allem erst einmal ziemlich intensiv mit den Grundlagen und allen möglichen bisher bekannten Attacken beschäftigen, damit Du eine sichere Implementierung hinbekommst.
Und welche der Funktionen ich brauche, um ein Zertifikat zu erzeugen
Warum willst Du aus Deiner Software heraus ein Zertifikat erzeugen? Jede andere Software, die SSL über OpenSSL unterstützt, die ich je installiert habe (Apache, Courier POP3- und IMAP-Server, Postfix, OpenLDAP, Stunnel, OpenVPN, ...) generiert die Zertifikate nicht selbst, man muss die immer selbst über den openssl-Befehl erzeugen - warum willst Du das anders machen? Es ist ja eine im Prinzip einmalige Aufgabe, die für den normalen Betrieb keine Rolle spielt.
(evtl. kostenlos über eine von den gängigen Browsern anerkannte Zertifizierungsstelle möglich für privaten gebrauch?)
CAcert (http://www.cacert.org/) ist leider noch im Audit-Verfahren, aber es bestehen gute Chancen, dass die demnächst (wann auch immer genau das sein wird ;-)) akzeptiert werden.
Kann man die Api-Aufrufe evtl. mit einem Tool mitloggen?
Viele bessere Debugger sollten so etwas unterstützen, ich kann Dir für Windows aber gerade nichts derartiges nennen.
Viele Grüße,
Christian
Hallo, Christian!
... offizielle Doku ...
hab ich mir schon runtergeladen :-)
... Anleitungen, ... in C ...
da bin ich noch am suchen ...
Allerdings möchte ich Dich darauf Hinweisen, dass SSL-Kommunikation etwas sehr heikles ist ...
zumindest den ansatz einer ahnung hab ich, was für fehler man da machen könnte, aber zum "experienced user" fehlen mir da natürlich noch welten ..
abgesehen vom lerneffekt und dem erzeugen einer ersten referenz-umsetzung mit "AutoIt" geht es im konkreten fall um ein webfrontend für einen ebay-sniper. die theoretische möglichkeit würde bestehen, die login-daten abzufangen und zu missbrauchen, auch wenn die reale gefahr sich wohl in grenzen halten dürfte.
da verschlüsselte komunikation per javascript (rc4, base64-kodiert) auch die übertragung der dazu notwendigen programlogik über den unsicheren kanal einschliesst, ist sie damit manipulierbar. ich muss also zwangsläufig auf sicherheitsmechanismen zurückgreifen, die in den browsern schon implementiert sind und da fällt mir ausser ssl nichts (simpleres) ein.
Warum willst Du aus Deiner Software heraus ein Zertifikat erzeugen?
weil die user mit den richtigen eingaben sicher überfordert wären und gerade durch eingabefehler evtl. sicherheitslücken aufreissen würden.
wenns zu komplex ist, müsste ich halt doch auf stunnel zurückgreifen oder evtl. auf verschlüsselung verzichten ...
freundl. Grüsse aus Berlin, Raik