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

问题描述:

我的脚本和服务器之间的SSL握手非常缓慢。为了更快地重复连接,我希望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

WWW ::机械化是基于其本身使用在其当前版本(从版本6)IO ::插座:: SSL作为默认后端LWP ::用户代理。 IO::Socket::SSL支持在客户端使用SSL_session_cache_size参数进行显式会话缓存,但默认情况下不会进行会话缓存。

您应该能够像这样来启用它:

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

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

+0

我担心这可能是答案。我希望我在文档中丢失了一些东西。我希望我有更多时间在这个项目上尝试你的建议。 – MikeU 2014-11-04 19:57:25