2010-06-18 3 views
5

Je demande une page web en utilisant LWP en perl, et j'aimerais pouvoir accéder au certificat SSL que le serveur web présente (je cherche une date d'expiration dans le cert, entre autres choses). L'information que je veux ne se trouve pas dans les trois en-têtes que Crypt :: SSLeay ajoute à la requête. Y a-t-il un moyen que je néglige avec lequel je peux obtenir une référence d'objet (idéalement) pour le cert SSL? J'ai scanné quelques documents perl et Google, mais la semaine a été longue et je ne lis probablement pas la bonne chose. Si je peux l'éviter, je ne veux pas récupérer directement le certificat en établissant une connexion SSL brute distincte - puisqu'il y a un proxy Web authentifié sur le chemin et que LWP ne fait que dissiper clairement ce problème pour moi. :) Et il est idiot de faire deux connexions lorsque les données dont j'ai besoin sont déjà transférées sur ma machine/quelque part/...Inspection du certificat SSL retourné via la requête LWP

+0

Connexes: http://stackoverflow.com/questions/74358 – daxim

Répondre

3

Aucun des callbacks que LWP fournit donne un accès (intentionnel) à la socket, mais il n'y en a pas semble être une solution de contournement potentielle - si vous fournissez les options keep_alive et conn_cache à LWP, à la fin de la demande LWP appellera ->deposit sur l'objet conn_cache avec le socket de connexion comme argument. Vous pouvez soit écrire un objet conn-cache factice, soit simplement utiliser "créativement" le LWP::ConnCache fourni par LWP.

Quoi qu'il en soit, si vous utilisez cette méthode ambigue de mettre la main sur la prise, ce sera une sous-classe de Net::SSL (en supposant que vous utilisez ssleay), de sorte que vous serez en mesure d'appeler juste ->get_peer_certificate là-dessus.

+1

C'est quelque part entre sale et mal, mais/look/like ça va marcher. :) Merci. – dannysauer