web-dev-qa-db-ja.com

SSL_verify_modeにSSL_VERIFY_NONEを選択する

証明書がなく、プロキシをバイパスする必要がある内部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;

$ENV{NO_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
                                               },
                                   );
10
Rod Baldwin

そのメッセージは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,
      },
   ],
);
18
ikegami

新しいバージョンは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
Felipe Ferreira