将一些代码(简单的 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
那么避免这种烦人的消息的最佳方法是什么?
您看到的警告鼓励使用 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);