WWW :: Mechanize可以恢复以前的SSL会话吗?

时间:2014-11-03 21:54:34

标签: perl session ssl resume www-mechanize

我的脚本和服务器之间的SSL握手非常慢。为了更快地重复连接,我希望WWW :: Mechanize重用/恢复以前的SSL会话。这可能吗?

这是一个使用openssl命令恢复会话的示例。我喜欢WWW :: Mechanize做这样的事情。

此命令将SSL会话参数保存到my_session.pem。这次SSL握手很慢。

openssl s_client -connect my.server:443 -sess_out my_session.pem

此命令使用my_session.pem恢复上一个会话。这种SSL握手很快。

openssl s_client -connect my.server:443 -sess_in my_session.pem

1 个答案:

答案 0 :(得分:2)

WWW :: Mechanize基于LWP :: UserAgent,它本身使用当前版本(自版本6)IO :: Socket :: SSL作为默认后端。 IO::Socket::SSL支持使用SSL_session_cache_size参数在客户端进行显式会话缓存,但默认情况下不会进行会话缓存。

您应该可以使用以下内容启用它:

 my $ua = WWW::Mechanize->new;
 $ua->ssl_opts( SSL_session_cache_size => 200 );

请注意,这只会创建一个内存缓存。在程序运行之间使用永久缓存当前不是内置的,您需要自己创建这样的东西并使用SSL_session_cache参数指定它。在您的实现中,您需要在将SSL_SESSION对象存储到磁盘之前对其进行序列化,因为它们当前只是指向特定于当前进程的内存中位置的指针。