Perl SSL_verify_mode 警告

问题描述 投票:0回答:1

将一些代码(简单的 RESTAPI 查询)从旧的 Linux 机器迁移到新的 Linux 机器,其中 Perl 模块已以未知的方式安装。

使用以下模块:

use JSON;
use Data::Dumper;
use MIME::Base64;
use LWP::UserAgent;
use Date::Calc qw(:all);
use Getopt::Long;

还有

$ENV{'PERL_LWP_SSL_VERIFY_HOSTNAME'} = 0;

执行脚本时收到此警告消息(但它有效):

*******************************************************************
 Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client
 is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER
 possibly with SSL_ca_file|SSL_ca_path for verification.
 If you really don't want to verify the certificate and keep the
 connection open to Man-In-The-Middle attacks please set
 SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application.
*******************************************************************
  at /usr/share/perl5/LWP/Protocol/http.pm line 31.

浏览互联网引导我找到一个

IO::Socket::SSL
模块,但它与旧版 Linux (1.94) 的版本相同。

LWP::UserAgent
版本是6.05

那么避免这种烦人的消息的最佳方法是什么?

perl ssl
1个回答
0
投票

您看到的警告鼓励使用 SSL 证书验证来增强 HTTPS 连接的安全性。建议的方法是将

SSL_verify_mode
设置为
SSL_VERIFY_PEER
并指定 CA 证书的路径来启用 SSL 验证。这可以显着降低 MITM 攻击的风险:

use LWP::UserAgent;

my $ua = LWP::UserAgent->new;

$ua->ssl_opts(
    SSL_verify_mode => SSL_VERIFY_PEER,
    SSL_ca_file     => '/path/to/ca_cert.pem' # Path to your CA certificate file
    # Alternatively, you can use SSL_ca_path to specify a directory of CA certificates
);

# Proceed with your request

如果您处于不关心安全性的受控环境中,可以通过将

SSL_verify_mode
设置为
SSL_VERIFY_NONE
来禁用此警告,通常不建议在生产环境中这样做:

$ua->ssl_opts(SSL_verify_mode => SSL_VERIFY_NONE);

© www.soinside.com 2019 - 2024. All rights reserved.