【问题标题】:Can WWW::Mechanize resume a previous SSL session?WWW::Mechanize 可以恢复以前的 SSL 会话吗?
【发布时间】:2014-11-03 21:54:33
【问题描述】:

我的脚本和服务器之间的 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

【问题讨论】:

    标签: perl session ssl resume www-mechanize


    【解决方案1】:

    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 对象存储到磁盘之前对其进行序列化,因为它们目前只是指向特定于当前进程的内存位置的指针。

    【讨论】:

    • 我担心这可能是答案。我希望我在文档中遗漏了一些东西。我希望我有更多时间在这个项目上尝试你的建议。
    猜你喜欢
    • 2011-11-12
    • 1970-01-01
    • 2018-04-21
    • 2012-07-05
    • 2020-10-17
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    相关资源
    最近更新 更多