你如何验证服务器证书和链中的每个证书直到 perl 中的 ROOT - 4 级深。
我希望能够检查它们是否有效以及签名是否正确完成,还想检查它们是否在 perl 中被撤销。
检查:服务器证书->chain1->chain2->root。 我不确定如何逐步完成此操作并相应地出错。
有任何对工作示例的引用吗?这是我的:
my $certclient = IO::Socket::SSL->new(
PeerHost => "$host:$port",
SSL_ca_file => Mozilla::CA::SSL_ca_file(),
SSL_verify_mode => 0,
SSL_version => 'TLSv1',
SSL_cipher_list => 'RC4-SHA',
Proto => 'tcp',
Timeout => '5',
);
$certclient->verify_hostname($host, "http");
my $cn = $certclient->peer_certificate("cn");
$certclient->verify_hostname($host, "http");
谢谢! http://search.cpan.org/~sullr/IO-Socket-SSL-2.003/lib/IO/Socket/SSL.pod
最佳答案
IO::Socket::SSL
将为您完成所有验证,如果您不通过将 SSL_verify_mode
设置为 0 来禁用它的话。它还会检查是否如果您提供必要的 CRL (SSL_crl_file
) 或通过设置 SSL_ocsp_mode
并调用 $ssl->ocsp_resolver->resolve_blocking()
使用 OCSP,证书将被撤销>.
它不提供手动执行此步骤的接口(interface),底层 Net::SSLeay
模块也不提供。执行验证所需的 OpenSSL 函数未向 Perl 公开。
关于perl - 你如何验证服务器证书和链中的每个证书直到 perl 中的 ROOT - 4 级深,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26941311/