Perl "lwp-request" 使用 TLS 1.2 给出错误 500

Perl "lwp-request" giving error 500 using TLS 1.2

一年多来,我们一直在通过我们的 Unix 服务器(特别是 SCO Openserver 5.0.7)使用运输 API。

我们的系统生成 XML 个文件,使用 lwp-request command 将它们发送到服务器,接收响应,解释它,并根据我们的系统需要进行处理。

我们使用的确切命令是:

lwp-request -m POST https://url.com < REQUESTFILE.XML > RESPONSEFILE.XML

运输公司正在升级所有服务器以要求 TLS 1.2,现在我得到

500 SSL negotiation failed:

作为使用此命令时的响应。

我不确定如何使我们的系统兼容。

鉴于您的 Perl 版本非常旧(5.8.8,其中 5.8.9 是 2008 年发布的)和 LWP(5.805、5.806 是 2007 年发布的)在非常旧的 OS(SCO OpenServer 5.0.7 ,最后一次更新大约在 2009 年左右)很可能您还 运行 正在使用一个非常旧的 OpenSSL 版本。 TLS 1.2 仅在 2008 年指定,并且仅在 03/2012 发布的 1.0.1 中在 OpenSSL 中可用,即在您的系统进行任何软件更新后几年。

你可以用 openssl version 检查它,我猜它说的是关于版本 0.9.8,即太旧了。

要使 TLS 1.2 在这个旧系统上工作,您需要编译更新版本的 OpenSSL(至少是最新的 1.0.1)并重建与 OpenSSL 接口的 Perl 模块,以便它们使用这个新版本。根据您的设置,这可能是 Crypt::SSLeay 或 Net::SSLeay。考虑到您的系统有多旧,您 运行 遇到各种编译问题的可能性并不大,因为大多数人不希望有人试图在过时的系统上编译更新的软件。因此,将所有内容升级到最新且受支持的 OS 而不是尝试与旧系统作斗争可能会更容易。