【发布时间】:2013-08-17 12:11:54
【问题描述】:
我正在使用 Perl v5.14.2 和 libwww-perl v6.04-1 在 Debian 上运行以下 Perl sn-p
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new("GET", "https://google.com/");
my $rep = $ua->request($req);
print $rep->status_line;
这会立即返回“500 无法连接到 google.com:443”。我尝试过使用LWP::Simple, Net::SSLeay, Crypt::SSLeay等,但没有任何成功。
奇怪的是,在另一个运行完全相同的 Perl 和 LWP 版本的 Debian 系统上执行相同的代码是可行的。
所以我认为,底层系统存在一些错误,但其他应用程序 - 例如任何浏览器的 cURL - 都可以正常工作。
另外,openssl s_client -connect google.com:443 在两个 系统上返回Verify return code: 20 (unable to get local issuer certificate)。
有没有人遇到过这种现象并有解决办法?
【问题讨论】:
-
尝试
wget https://google.com/确保网络没有阻塞流量 -
这很好用。如前所述,它也适用于其他编程语言或软件。它似乎是特定于 perl 的。有什么方法可以让 LWP 更加冗长?
-
当然它提供了更多。你有 LWP::Protocol::https 吗?
-
下一步是开启https调试选项
use IO::Socket::SSL qw(debug3); / $ENV{HTTPS_DEBUG}... pastebin?它像 7 行,FWIW 以供将来参考,请更新您的帖子 :) -
HTTPS 调试给了我解决方案,一个与bug 相关的 SSL 版本错误,我很久以前在 IO::Socket::SSL 中应用了它的解决方法,但我已经忘记了。重新安装产生了预期的结果。谢谢!也许您应该将提示
use IO::Socket::SSL qw(debug3);作为答案,这在一般情况下肯定会有所帮助。