https和WWW :: Mechanize - 接受特定证书(MD5 / SHA1 / ...)

时间:2015-11-10 09:40:10

标签: perl ssl mechanize www-mechanize

如何让WWW :: Mechanize接受https服务器的特定SSL证书?
[SSL证书应通过MD5 / SHA1 / ...校验和验证]

背景:
到目前为止,我需要一个黑客接受过期(目前为止几天)SSL证书[替换标准的检查集]。我希望以后能够将SSL校验和检查添加为附加检查。

1 个答案:

答案 0 :(得分:1)

WWW :: Mechanize是LWP :: UserAgent的子类,它本身使用IO :: Socket :: SSL来建立SSL连接。 IO :: Socket :: SSL提供了一个选项SSL_fingerprint,可用于指定证书的预期指纹。有关详细信息,请参阅the documentation,但这是一个简短的示例:

use strict;
use warnings;
use WWW::Mechanize;

my %sslargs = (
    SSL_fingerprint => 'sha256$a0b0d7c3d86a03051af6a43726a0dd855825323cae59fdff2d9b9a8db83934b8',
);

my $ua = WWW::Mechanize->new( ssl_opts => \%sslargs);
my $resp = $ua->get("https://www.example.com");

请注意,您至少需要IO :: Socket :: SSL版本1.980(2014年4月发布)才能正确支持SSL_fingerprint,并且您还应该使用相当新版本的LWP。

使用SSL_fingerprint时,只要指纹匹配,就会忽略所有其他检查,即您可以使用自签名证书,过期证书或错误主题的证书。