获取 OpenSSL 证书过期日期

5
我已经通过openssl_x509_parse()函数解析了openssl证书,并得到了一个数组作为结果。
现在我需要获取该证书的过期时间。在解析的数组中,我有一个包含有效Unix时间戳的validTo_time_t元素。但是如何确定此时间戳所属的时区?
因此,我无法获取实际的到期时间,因为该时间戳在不同的时区表示不同的日期。
2个回答

2
Unix时间戳没有时区。 它被定义为自1970年1月1日UTC以来的秒数。 它不是一个真正的日期,而只是一堆秒。 没有时区=没有问题。
这就是为什么它是跨不同服务器和不同地区的时间的完美度量单位。您可以只存储Unix时间戳,当您将其转换为日期时,它会使用您的本地时区来确定日期,这是完全自动的,这意味着当您将其转换为不同时区时,它将始终转换为正确的日期。 这对所有时间戳都适用,不仅适用于SSL输出。 时间戳的重要信息请参见 http://www.unixtimestamp.com/

2

PHP使用其默认时区格式化此字段。可以使用date_default_timezone_get函数获取它。

一旦您知道时区,就可以将其转换为UTC或您需要的任何其他时区。


那么,当openssl_x509_parse()解析数据时,它会自动将证书的“validTo”日期转换为当前时区吗?这是否意味着该时间戳将是当前PHP默认时区的实际到期日期? - ozahorulia
@hast 我认为它确实是这样的。至少在Unix系统上是这样(在Windows上可能会出现问题,请参见此处:https://bugs.php.net/bug.php?id=46747)。 - JimiDini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接