有効期限が切れたSSL証明書をLWP :: UserAgentに受け入れさせることはできますか?
質問
LWP :: UserAgentに、単一の有名なサーバーの期限切れのSSL証明書を強制的に受け入れることができるかどうかを知りたいのですが。この問題は、中間のSquidプロキシによって若干複雑になります。
次のようなデバッグ環境を設定するまで行った。
use warnings;
use strict;
use Carp;
use LWP::UserAgent;
use LWP::Debug qw(+);
use HTTP::Cookies;
my $proxy = 'http://proxy.example.net:8118';
my $cookie_jar = HTTP::Cookies->new( file => 'cookies.tmp' );
my $agent = LWP::UserAgent->new;
$agent->proxy( [ 'http' ], $proxy );
$agent->cookie_jar( $cookie_jar );
$ENV{HTTPS_PROXY} = $proxy;
$ENV{HTTPS_DEBUG} = 1;
$ENV{HTTPS_VERSION} = 3;
$ENV{HTTPS_CA_DIR} = '/etc/ssl/certs';
$ENV{HTTPS_CA_FILE} = '/etc/ssl/certs/ca-certificates.crt';
$agent->get( 'https://www.example.com/');
exit;
幸いなことに、問題はリモートサーバーで最終的に修正されてから、独自のソリューションを思いつくことができましたが、問題が再度発生した場合はオプションで回避できます(基盤となるサービスがいくつか中断されていました)行動を起こすまでの数時間)。
他の無関係なアプリケーションのセキュリティを緩和したくないため、そのようなソリューションが存在する場合、基礎となるCrypt :: SSLeayまたはopenSSL実装に基づくものよりもLWP :: UserAgentレベルのソリューションを優先します。もちろん、私は自分で、まだたくさんの空き時間にそのような解決策を探しています。
解決
アドレスコメントに更新
all 証明書チェックをバイパスするには、エージェントを使用して証明書を検証しません。
$agent->ssl_opts(verify_hostname => 0);
エージェントは、使用されているSSLソケット実装にも設定を渡します。たとえば、 IO :: Socket :: SSL
SSL_verify_mode
を 0x00
に設定できます。
$agent->ssl_opts(SSL_verify_mode => 0x00);
他のヒント
SSL証明書の検証をオーバーライドしてみてください
$agent->ssl_opts(verify_hostname => 0,
SSL_verify_mode => 0x00);
httpsリクエストを行う前。
所属していません StackOverflow