为 SSL_verify_mode 选择 SSL_VERIFY_NONE
Posted
技术标签:
【中文标题】为 SSL_verify_mode 选择 SSL_VERIFY_NONE【英文标题】:Selecting SSL_VERIFY_NONE for SSL_verify_mode 【发布时间】:2013-03-30 20:40:21 【问题描述】:我正在尝试创建到没有证书且需要绕过代理的内部 ssl
站点的客户端连接。
我能够绕过代理,并且能够连接到站点并创建客户端连接,但是,我收到了这个丑陋的警告:
******************************************************************* Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER together 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. *******************************************************************
C:/strawberry/perl/site/lib/LWP/Protocol/http.pm line 31
我的代码:
use RPC::XML::Client;
use XML::Simple;
use LWP::Protocol::https;
$ENVNO_PROXY = '10.*';
$ENV'PERL_LWP_SSL_VERIFY_HOSTNAME' = 0;
my $server = RPC::XML::Client->new("$vneUrl/api/index.ice",
ssl_opts => SSL_verify_mode => 'SSL_VERIFY_NONE',
verify_hostname => 0,
SSL_use_cert => 0x00
,
);
【问题讨论】:
该警告中是否有您不理解的内容? 不清楚您的帖子标题与您的其余问题有什么关系。也许你可以解释一下你认为的联系是什么? 【参考方案1】:新版本我相信你应该设置为 0 或 1。 我认为这是一个错误:
500 SSL_verify_mode must be a number and not a string
发件人:
$useragent->ssl_opts(SSL_verify_mode=>'SSL_VERIFY_NONE');
收件人:
$useragent->ssl_opts(SSL_verify_mode=>'0');
【讨论】:
【参考方案2】:该消息来自 IO::Socket::SSL,它指的是它导出的常量 SSL_VERIFY_NONE
,而不是字符串 'SSL_VERIFY_NONE'
。
其次,ssl_opts
是 LWP::UserAgent 的构造函数的参数,而不是 RPC::XML::Client 的。
试试:
use IO::Socket::SSL qw( SSL_VERIFY_NONE );
RPC::XML::Client->new($uri,
useragent => [
ssl_opts =>
verify_hostname => 0,
SSL_verify_mode => SSL_VERIFY_NONE,
,
],
);
【讨论】:
谢谢,在创建客户端连接时确实消除了警告。, 现在我已经创建了 $client,我需要传递请求。例如 [ my $session = $client->simple_request('login', 1, 0,$username, $password); ] 我再次收到此声明的错误。我将如何将 ssl_opts 传递给每个后续请求? 嗯,它使用在构造函数中创建的 UserAgent 对象,并且这些标志按预期传递给该对象。不确定该消息来自哪里 Net::SMTP::SSL有类似的解决方案吗? @mpapec - 我知道这是一个旧评论,但我在使用 Net::SMTP::SSL 时遇到了类似的困难。我发现的最佳解决方案是使用 IO::Socket::SSL::set_defaults,其设置将被更多的 Net::SMTP::SSL 实例隐式使用。以上是关于为 SSL_verify_mode 选择 SSL_VERIFY_NONE的主要内容,如果未能解决你的问题,请参考以下文章
javax.net.ssl.SSLException:服务器选择了不正确的密码套件 SSL_RSA_WITH_DES_CBC_SHA