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

44 ssl openssl ssl-certificate

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

提前致谢!

mti*_*935 74

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

openssl pkcs12 -in certificate.p12 -out certificate.pem -nodes
Run Code Online (Sandbox Code Playgroud)

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

cat certificate.pem | openssl x509 -noout -enddate
Run Code Online (Sandbox Code Playgroud)

  • 我得到'notAfter = 10月24日21:01:55 GMT`,但我知道这个证书已过期.有任何想法吗? (3认同)
  • 这个答案颇具误导性。正如Why Why Hugo上面提到的那样,他从中看到了奇怪的结果。David的以下答案对此可能给出了解释。上面的方法是提取根证书(CA)并显示该证书的到期日期,而不是客户端证书,后者可能是OP想要的。因此,@ David的以下答案应该是被接受的,而不是这个。 (3认同)

Mac*_* D. 42

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

openssl pkcs12 -in certificate.p12 -nodes | openssl x509 -noout -enddate
Run Code Online (Sandbox Code Playgroud)


Dav*_*vid 20

从pkcs12中提取客户端证书并打印结束日期:

openssl pkcs12 -in certificate.p12 -clcerts -nodes | openssl x509 -noout -enddate
Run Code Online (Sandbox Code Playgroud)

如果不包含-clcerts选项,则可以从CA证书而不是从您自己的证书中获取结束日期.作为信任链的一部分,您的证书中通常包含多个CA证书.

  • 提示:要以编程方式添加证书密码,请在管道字符 (`|`) 之前添加以下内容:`-passin pass:<password>` (2认同)

Ale*_*lex 5

在Windows上的操作方法如下:

certutil -dump "file.pfx"
Run Code Online (Sandbox Code Playgroud)

PS:我知道这个问题专门针对Mac,以防万一Google将您发送到这里(例如它发送给我)。

  • 感谢您的详尽解答!我在谷歌上搜索 Windows 解决方案并在这里找到了:) (2认同)