Проверка SSL-сертификата, возвращенного по запросу LWP - PullRequest
5 голосов
/ 19 июня 2010

Я запрашиваю веб-страницу, используя LWP в Perl, и я хотел бы иметь возможность получить доступ к SSL-сертификату, который предоставляет веб-сервер (среди прочего, я ищу дату истечения срока действия сертификата) , Информация, которую я хочу получить, отсутствует в трех заголовках, которые Crypt :: SSLeay добавляет к запросу. Есть ли способ, который я пропускаю, с помощью которого я могу получить ссылку на объект (в идеале) для сертификата SSL? Я отсканировал некоторые документы на Perl и Google, но это была длинная неделя, и я, вероятно, просто не правильно прочитал.

Если я могу избежать этого, я не хочу напрямую извлекать сертификат путем создания отдельного необработанного SSL-соединения - так как есть аутентифицированный веб-прокси в пути, и LWP просто делает эту проблему прозрачно исчезающей для меня. :) И делать два подключения глупо, когда нужные мне данные уже передаются на мою машину /somewhere/...

1 Ответ

3 голосов
/ 19 июня 2010

Ни один из обратных вызовов, предоставляемых LWP, не дает (преднамеренного) доступа к сокету, но, похоже, существует один потенциальный обходной путь - если вы предоставите опции keep_alive и conn_cache для LWP в конце запрос LWP вызовет ->deposit для объекта conn_cache с сокетом подключения в качестве аргумента. Вы можете написать фиктивный объект conn-cache или просто «творчески» использовать LWP::ConnCache, который предоставляет LWP.

В любом случае, если вы используете этот метод с обратным ключом для удержания сокета, он будет подклассом Net::SSL (при условии, что вы используете ssleay), так что вы сможете просто вызвать ->get_peer_certificate на это.

...