【问题标题】:Perl LWP::UserAgent cannot connect to HTTPSPerl LWP::UserAgent 无法连接到 HTTPS
【发布时间】:2014-11-27 11:26:50
【问题描述】:

我有一个用于从 Google 获取内容的脚本。它工作得很好,但现在不行了。我在stackexchange上找到了一个帖子,我升级了库版本,但还是不行:I cannot Connect to any HTTPS site using LWP::UserAgent

我有来自 linux 机器的连接(telnet googleapis.com 443 工作得很好)。

#!/usr/bin/perl


use CGI 'param';
use CGI::Carp 'fatalsToBrowser';
use DBI;
    require LWP::UserAgent;
    use LWP::Protocol::https;
    use URI::Escape;
    $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
    $access_token='xxx';
    print "LWP::UserAgent: ".LWP::UserAgent->VERSION,"\n";
    print "LWP::Protocol::https: ".LWP::Protocol::https->VERSION,"\n";
    $url="https://www.googleapis.com/oauth2/v1/userinfo?access_token=$access_token";
        my $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0 });
$ua->agent('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36');
        $ua->timeout(10);
        $ua->env_proxy;
        my $response = $ua->get("$url");
        if ($response->is_success) {
        print "Am adus cu succes contul de la google";
            $text=$response->decoded_content;  # or whatever
        }
        else {
            print "Response error:".$response->status_line."\n";

        }


1;

错误:500 无法连接到 www.googleapis.com:443

知道为什么会突然发生这种情况吗?

【问题讨论】:

  • 我忘了说,我有 LWP::UserAgent 6.06 和 LWP::Protocol::https 6.06
  • “它仍然不起作用”是对您问题的糟糕描述。您究竟看到了什么意外行为?是否有任何错误消息?
  • 请使用perl -MIO::Socket::SSL=debug4 调用您的脚本以启用 SSL 调试并在此处添加输出。此外, ssl_verify_hostname 只关心根据证书验证名称,而不关心根据受信任 CA 验证证书。那将是SSL_verify_mode
  • 我从 LWP 收到以下错误:500 无法连接到 www.googleapis.com:443。我使用 MIO::Socket::SSL=debug4 运行脚本,但没有额外的输出。我也有一个 tcpdump,但请求没有在 Perl 之外触发。
  • 我发现了问题。由于操作系统更新,我需要强制 SSL_version => 'SSLv3'

标签: perl ssl https google-api lwp-useragent


【解决方案1】:

在某些情况下,您需要强制使用 SSLv3

my $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0, SSL_version => 'SSLv3' });

【讨论】:

    【解决方案2】:

    您需要使用 CPAN 或包名称 perl-LWP-Protocol-https 安装 LWP::Protocol::https

    对我有用的是,通过在 CentOS 上以 root 身份运行以包名安装它
    yum install perl-LWP-Protocol-https

    之后,https 链接按应有的方式打开,没有空响应。

    【讨论】:

      猜你喜欢
      • 2014-09-02
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2014-05-01
      • 1970-01-01
      • 2021-03-01
      • 2021-12-01
      • 2020-01-11
      相关资源
      最近更新 更多