2010-06-18 10 views
5

Ich beantrage eine Webseite, die LWP in Perl verwendet, und ich möchte auf das SSL - Zertifikat zugreifen können, das der Webserver präsentiert (Ich suche nach einem Ablaufdatum in das cert, unter anderem). Die Informationen, die ich möchte, sind nicht in den drei Headern, die Crypt :: SSLeay der Anfrage hinzufügt. Gibt es einen Weg, den ich übersehe, mit dem ich im Idealfall eine Objektreferenz für das SSL-Zertifikat bekommen kann? Ich habe einige Perl-Dokumente und Google gescannt, aber es war eine lange Woche und ich lese wahrscheinlich gerade nicht das Richtige.Überprüfung des SSL - Zertifikats per LWP - Anfrage

Wenn ich es vermeiden kann, möchte ich das Zertifikat nicht direkt abholen, indem ich eine separate rohe SSL-Verbindung herstelle - da ist ein authentifizierter Web-Proxy in der Art und LWP lässt dieses Problem für mich transparent verschwinden. :) Und es ist albern, zwei Verbindungen herzustellen, wenn die Daten, die ich brauche, bereits auf meinen Rechner/irgendwo übertragen werden ...

+0

Related: http://StackOverflow.com/Questions/74358 – daxim

Antwort

3

Keiner der Rückrufe, die LWP bietet, gibt (absichtlichen) Zugriff auf den Socket, aber es tut scheint eine mögliche Problemumgehung zu sein - wenn Sie die Optionen keep_alive und conn_cache für LWP bereitstellen, ruft LWP am Ende der Anforderung ->deposit auf dem Objekt conn_cache mit dem Verbindungssocket als Argument auf. Sie könnten entweder ein Dummy-Conn-Cache-Objekt schreiben oder einfach "kreativ" das von LWP bereitgestellte LWP::ConnCache verwenden.

Wie auch immer, wenn Sie diese Backhanded-Methode verwenden, um den Socket zu erhalten, wird es eine Unterklasse von Net::SSL sein (vorausgesetzt, Sie verwenden ssleay), so können Sie ->get_peer_certificate darauf nur anrufen.

+1

Das ist irgendwo zwischen schmutzig und böse, aber tut/Aussehen/wie es funktionieren wird. :) Vielen Dank. – dannysauer

Verwandte Themen