【问题标题】:Get SSL information and convert the SSL certificate validFrom / validTo values to a date with PHP获取 SSL 信息并使用 PHP 将 SSL 证书 validFrom / validTo 值转换为日期
【发布时间】:2018-05-29 05:04:15
【问题描述】:

我正在编写一个小脚本,显示从特定网站获取的给定证书的信息:

$url = "http://www.google.com";
$orignal_parse = parse_url($url, PHP_URL_HOST);
$get = stream_context_create(array("ssl" => array("capture_peer_cert" => TRUE)));
$read = stream_socket_client("ssl://".$orignal_parse.":443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $get);
$cert = stream_context_get_params($read);
$certinfo = openssl_x509_parse($cert['options']['ssl']['peer_certificate']);
echo "Name: ".$certinfo['name']."<br/>";
echo "Subject: ".$certinfo['subject']['C']." ".$certinfo['subject']['ST']." ".$certinfo['subject']['CN']."<br/>";
echo "Issuer: ".$certinfo['issuer']['C']." ".$certinfo['subject']['O']." ".$certinfo['subject']['CN']."<br/>";
echo "Version: ".$certinfo['version']."<br/>";
echo "Valid from: ".$certinfo['validFrom']." to ".$certinfo['validTo']."<br/>";

有关数组返回内容的完整说明,请访问此处:How to get SSL certificate info with CURL in PHP?

问题是$certinfo['validFrom'] 返回的值是这样的:

170904000000Z

我不知道它是什么。我想要的是将$certinfo['validFrom']$certinfo['validTo']转换为人类日期格式,但我不知道这是什么类型的时间,我以为是Unix但它不起作用,然后我注意到有字符串末尾的“Z”:

echo "Valid from: ".gmdate("Y-m-d",$certinfo['validFrom'])." to ".gmdate("Y-m-d",$certinfo['validTo'])."<br/>"; 

返回:Valid from: 7385-09-24 to 7683-11-24

这显然是错误的。

我检查了浏览器上的证书和值:

Valid from: 170904000000Z to 180313235959Z

转换得好应该是

Valid from 2017-09-03 to 2017-03-13

谢谢

【问题讨论】:

标签: php date ssl time


【解决方案1】:

170904000000Z 不是 ymdhmsT 吗? UTC 时间 2017 年 9 月 4 日午夜?

【讨论】:

    【解决方案2】:

    openssl_x509_parse 的 PHP 文档说

    返回数据的结构(故意)还没有 记录在案,因为它仍有可能发生变化。

    但是user comment here 上有一些提示,比如下面的示例代码。请注意,如上所述,您不应在生产代码中依赖此数组索引,因为它可能会在没有通知的情况下发生变化。

    $validFrom = date('Y-m-d H:i:s', $data['validFrom_time_t']);
    $validTo = date('Y-m-d H:i:s', $data['validTo_time_t']);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 2015-09-25
      • 2011-03-06
      • 2019-02-10
      • 2014-06-16
      • 2018-07-07
      相关资源
      最近更新 更多