Perl Paypal IPN 监听器返回 "500 SSL Handshake Failure"消息

标签 perl ssl paypal paypal-ipn

一个运行正常两年的 perl 脚本刚刚开始在回发 IPN 消息时返回“500 SSL 握手失败”错误。我的主机服务支持 SHA 256、TLS 1.2 和 HTTP/1.1。我正在使用我的主机服务的共享证书。 代码(来自 PayPal 的示例脚本):

# read post from PayPal system and add 'cmd'
read (STDIN, $query, $ENV{'CONTENT_LENGTH'});
$query .= '&cmd=_notify-validate';

# post back to PayPal system to validate
$ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 1 });
$req = HTTP::Request->new('POST', 'https://www.sandbox.paypal.com/cgi-bin/webscr');
$req->content_type('application/x-www-form-urlencoded');
$req->header(Host => 'www.sandbox.paypal.com');
$req->content($query);
$res = $ua->request($req);

if ($res->is_error) {
 # HTTP error
 $retmsg = "HTTP Error:<br />";
 $retmsg .= $res->status_line();
}

...

如何最好地解决此问题?

最佳答案

根据 SSLLabs该站点仅为 TLS 1.2,它不接受 TLS 1.0 或 TLS 1.1。根据您的评论,您使用的是 OpenSSL 版本 1.0.0e (1000005f)。但是这个版本还不支持 TLS 1.2,因为这种支持是在 1.0.1 版本中才添加的。

这意味着您的系统太旧,无法支持 TLS 1.2。您至少需要升级 OpenSSL 版本,但最好是整个系统。请注意,仅安装新版本的 OpenSSL 无济于事。相反,您需要重新编译 Perl 中使用该库的所有模块,即在这种情况下尤其是 Net::SSLeay。

关于Perl Paypal IPN 监听器返回 "500 SSL Handshake Failure"消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36000364/

相关文章:

SSL 和公钥安全

paypal - 如何同时使用 PayPal Live 和 Sandbox

perl - Moose 属性初始化

perl - 在 Perl 脚本中使用时,source 命令不起作用

perl - 如何在 Perl 中输出文本表?

html - 如何通过在 Web 应用程序中编码来停用安全警告错误(由 SSL 生成)

perl - Paypal IPN : unable to get local issuer certificate

arrays - 数组初始化中的 Perl qx 执行顺序

php - 现场 Codeigniter https 页面

php - Paypal PHP SDK 支付状态