perl - 你如何验证服务器证书和链中的每个证书直到 perl 中的 ROOT - 4 级深

标签 perl ssl certificate ca

你如何验证服务器证书和链中的每个证书直到 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/

相关文章:

android https - 在缺少证书验证时演示 MITM

java - 如何将证书链及其证书导入 Java keystore ?

c - 如何以编程方式从证书中提取信息?

perl - 您如何判断管道打开的进程是否已终止?

perl - 如何在perl中打开弹出窗口时继续执行代码的其他部分

ssl - 将 SSL 证书绑定(bind)到新站点,更改其他人的证书

javascript - 如何在没有 SSL/TLS 的情况下实现基于表单的身份验证

html - Perl 网络抓取工具,从脚本标签内的文本中检索数据

regex - 如果在语句中找到单个单词,perl 正则表达式用于打印整个语句

android - 当我 'Let Google create and manage my app signing key' 时,应用程序签名 key 的有效期是多长时间?