如何从证书文件本身(.p12)确定 SSL 证书到期日期

Posted

技术标签:

【中文标题】如何从证书文件本身(.p12)确定 SSL 证书到期日期【英文标题】:How to determine SSL cert expire date from the cert file itself(.p12) 【发布时间】:2015-04-07 01:37:20 【问题描述】:

如果我在 Mac 中有实际文件 (.p12) 和 Bash shell,如何提取证书和密钥文件以及证书到期日期?假设我有 csr(.p12),密钥文件。

提前致谢!

【问题讨论】:

【参考方案1】:

pkcs12 文件中提取 client 证书并打印其结束日期:

openssl pkcs12 -in certificate.p12 -clcerts -nodes | openssl x509 -noout -enddate

如果您不包含 -clcerts 选项,您可能会从 CA 证书而不是您自己的证书中获取结束日期。多个 CA 证书通常包含在文件中,作为 chain of trust 的一部分。

【讨论】:

【参考方案2】:

这是您在 Windows 上的操作方式:

certutil -dump "file.pfx"

附:我知道这个问题特别提到了 Mac,这是以防万一 Google 将您发送到此处(就像它发送给我一样)。

【讨论】:

感谢您的详尽回答!我在谷歌上搜索 Windows 解决方案并在这里加载:)【参考方案3】:

您可以在不使用中间文件的情况下将第一个答案设为单行:

openssl pkcs12 -in certificate.p12 -nodes | openssl x509 -noout -enddate

【讨论】:

【参考方案4】:

您可以使用 openssl 使用以下命令将证书从 .p12 文件提取到 .pem 文件:

openssl pkcs12 -in certificate.p12 -out certificate.pem -nodes

然后,您可以使用以下命令从 .pem 文件中的证书中提取到期日期:

cat certificate.pem | openssl x509 -noout -enddate

【讨论】:

我收到了notAfter=Oct 24 21:01:55 2017 GMT,但我知道这个证书已经过期。有什么想法吗? 你的意思是它可能在撤销名单上? en.wikipedia.org/wiki/Certificate_revocation_listsecurity.stackexchange.com/questions/58301/… 正如 Maciek D. 下面的回答所示,您可以在一行中执行这两个命令,而无需使用中间的 certificate.pem 文件。 只测试证书的当前有效性,您可以指定一个有效期,如下所示:***.com/a/31718838/1755628 这个答案相当具有误导性。正如WhyNotHugo 上面提到的,他看到了奇怪的结果。下面大卫的回答对此给出了可能的解释。上述方法是提取根证书 (CA) 并显示其到期日期,而不是可能是 OP 想要的客户端证书。所以下面来自@David 的答案应该是被接受的,而不是这个。

以上是关于如何从证书文件本身(.p12)确定 SSL 证书到期日期的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PEM 编码证书中确定 SSL 证书到期日期?

linux 怎么安装p12证书

如何在 Linux 中转换 SSL 证书

如何生成自签名双向认证证书 ssl

如何在改造中使用 ssl 证书发出 https 请求

转换 SSL 证书