使用perl 5.8.8和OpenSSL 1.0.1连接TLSv1.2

时间:2018-03-08 06:29:56

标签: perl openssl

我正在处理连接到支持TLSv1.2的服务器的perl脚本。目前我无法连接,因为perl运行在CentOS 5.4上,OpenSSL版本为0.9.8e。我不想升级perl,因为它可能会破坏脚本,因为有更改,最新版本的perl是5.26,这太新了。现在,我可以在不同的Windows机器上运行该脚本,没有使用perl 5.24的问题。我的问题,我可以在CentOS 5.x上使用openssl 1.0.1并重新编译perl模块并仍能连接到TLV1.2吗? 我已经安装了LWP::UserAgent and 500 SSL negotiation failed中提到的模块,除了openssl。我也跟着https://miteshshah.github.io/linux/centos/how-to-enable-openssl-1-0-2-a-tlsv1-1-and-tlsv1-2-on-centos-5-and-rhel5/安装openssl但是当我做openssl版本时我仍然看到原始版本,即0.9.9e。

在上面的链接中,它提到使用CPAN来更新/安装perl模块。而不是我获得perl模块的rpm并安装。

服务器上的LWP是5.834。

我知道理想的方式是去CentOS 6或更高版本,但是有更好的方法来实现这项工作吗?

1 个答案:

答案 0 :(得分:1)

  

...使用CPAN更新/安装perl模块。而不是我获得perl模块的rpm并安装。

我不知道你安装了哪个rpm。但是你需要一个版本的Net :: SSLeay(或Crypt :: SSLeay - 你用过的任何东西)模块,它与新版本的OpenSSL相关联。只安装默认的RPM将无济于事,因为它与较旧的OpenSSL版本相关联。

这意味着您需要手动安装模块,并注意将其与较新的OpenSSL库链接。对于Net :: SSLeay,这意味着将正确的OPENSSL_PREFIX设置为新版本的OpenSSL,如the README of Net::SSLeay中所述。

我还建议使用更新版本的LWP和IO :: Socket :: SSL,因为TLS 1.2通常不是您面临的唯一问题。其他问题可能是服务器需要SNI。并且,我建议不要更换系统Perl模块,因为这可能会导致其他程序出现问题。而是使用perlbrew或类似的方法来安装与系统Perl不同的Perl,并将其与更新的模块一起使用以满足您的特定需求。