gpt4 book ai didi

perl - LWP::UserAgent 的 sslv3 警报握手失败

转载 作者:行者123 更新时间:2023-12-01 13:27:41 26 4
gpt4 key购买 nike

我正在尝试使用 LWP::UserAgent 发出 https 请求:

#!/usr/bin/perl

use strict;
use warnings;
use LWP::UserAgent;

my $login_url = 'https://www.icscards.nl/abnamrogb/login/login';
my $ssl_options = { SSL_version => 'tlsv1', verify_hostname => 0 };
my $browser = LWP::UserAgent->new(ssl_opts => $ssl_options);
$browser->cookie_jar( {} );

my $response = $browser->get($login_url);
print $response->decoded_content;

并得到以下错误信息:

Can't connect to www.icscards.nl:443

LWP::Protocol::https::Socket: SSL connect attempt failed because of handshake problems error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure at /System/Library/Perl/Extras/5.18/LWP/Protocol/http.pm line 51.

将 URL 更改为例如https://www.google.com/ 工作正常,但不是我想要获取的 URL。

值得注意的是:我在使用 python 向这个 URL 发出请求时遇到了同样的错误。

最佳答案

... alert handshake failure at /System/Library/Perl/Extras/5.18/LWP/Protocol/http.pm line 51.

看起来您使用的是 MacOS 和旧版本的 Perl。基于此,我假设您的底层 OpenSSL 版本仍然是 0.9.8,因为这个古老版本的 OpenSSL 是随 MacOS 一起提供的版本。您可以通过调用来验证我的假设

perl -MNet::SSLeay -E 'say Net::SSLeay::SSLeay_version(0)

如果报告版本 0.9.8,我的假设是正确的。如果此报告 1.0.0 我错了但以下内容仍然适用。如果它报告 1.0.1 或什至更好,则以下解释不适用。

OpenSSL 0.9.8 不支持 ECDHE 密码,这也可以在 report from SSLLabs 中看到。 .只是,此服务器需要 ECDHE 密码,从 this report by SSLLabs 可以看出.因此,客户端和服务器之间没有共同的密码,这意味着 TLS 握手失败。

关于perl - LWP::UserAgent 的 sslv3 警报握手失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47608448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com