【问题标题】:Using perl 5.8.8 with OpenSSL 1.0.1 to connect with TLSv1.2使用 perl 5.8.8 和 OpenSSL 1.0.1 连接 TLSv1.2
【发布时间】:2018-08-16 10:22:10
【问题描述】:

我正在处理连接到支持 TLSv1.2 的服务器的 perl 脚本。目前我无法连接,因为 perl 在 CentOS 5.4 上运行,OpenSSL 版本为 0.9.8e。我不想升级 perl,因为它可能会破坏脚本,因为已经发生了变化,并且 perl 的最新版本是 5.26,这太最新了。现在,我可以在使用 perl 5.24 的不同 Windows 机器上毫无问题地运行脚本。我的问题是,我可以在 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 或更高版本,但有没有更好的方法来让它工作?

【问题讨论】:

  • 运气不好,plenv/perlbrew 不会升级你的 openssl,而且 docker 在 Centos7 中可用... KVM 来启动新的 centos?

标签: perl openssl


【解决方案1】:

... 使用 CPAN 更新/安装 perl 模块。取而代之的是,我获得了 perl 模块的 rpm 并进行了安装。

我不知道你安装了哪个 rpm。但是您需要一个与较新版本的 OpenSSL 链接的 Net::SSLeay(或 Crypt::SSLeay - 无论您使用什么)模块版本。仅安装默认 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,并将其与更新的模块一起使用以满足您的特定需求。

【讨论】:

  • 我安装了以下 RPM perl-Net-SSLeay-1.30-4.fc6.x86_64.rpm、perl-Crypt-SSLeay-0.51-11.el5.x86_64.rpm、perl-Getopt-Long- 2.38-1.el5.noarch.rpm 和 perl-IO-Socket-SSL-1.01-2.el5.noarch.rpm 当我尝试手动安装 Net::SSLeay 时,我收到了一些关于 make: *** [SSLeay. o] 错误 1 ​​我想我喜欢安装另一个版本的 perl 但它的 CentOS 5.x 所以我不知道我是否可以超越 perl 5.16。
  • @goodyone:同样,针对旧 OpenSSL 的默认 RPM 链接,因此安装这些将无济于事。新旧 Perl 版本很可能都可以在旧 CentOS 版本上使用 perlbrew 安装。请注意,如果您在安装 Net::SSLeay 时使用 perlbrewed Perl,您仍然需要指定要使用的 OpenSSL 库。
  • 我使用 perlbrew 安装了 5.18。但是什么时候 perlbrew list 它只显示 5.18 而不是现有的。你知道为什么它不会列出 5.8.8 吗?我怀疑 perlbrew 中存在错误
  • 没关系我能够关注stackoverflow.com/questions/25188575/…
  • 安装后我仍然收到 500 SSL 协商失败。我安装了 OPENSSL_PREFIX=/usr/local/openssl-1.0.2n/perl Makefile.PL 在安装结束时确实收到了所有通过。 IO::Socket::SSL LWP::Protocol::https
猜你喜欢
  • 2012-06-17
  • 1970-01-01
  • 2018-01-10
  • 2012-08-12
  • 2021-08-01
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多