【问题标题】:What date does the Java keytool show?Java keytool 显示什么日期?
【发布时间】:2018-06-25 16:21:59
【问题描述】:

昨天,我使用keytool 列出我们的密钥库,如下所示:

keytool -list -keystore src/keystore.p12 
Enter keystore password:  
Keystore type: JKS
Keystore provider: SUN

Your keystore contains 5 entries

octopus, Jan 15, 2018, PrivateKeyEntry, 
Certificate fingerprint (SHA1): FE:B2:B7:C0:A7:CF:...

由于出现问题,我断定第一个证书刚刚过期。今天我来了

octopus, Jan 16, 2018, PrivateKeyEntry, 
Certificate fingerprint (SHA1): FE:B2:B7:C0:A7:CF:...

keytool 真的是为了显示当前日期还是只是在开玩笑???

不过,我认为日期是“Not After”日期,因为它是有道理的。它不能是条目添加或最近修改的日期。我可能做错了什么,但是

  • 我确定日期已更改,正如我在昨天发送的电子邮件中看到的那样
  • 我确信密钥库没有更改,因为它被 git 跟踪。我什至删除了它并再次检查它,没有变化
  • 我确定密钥库自 6 个月前以来没有更改(git 同意)
  • 其他条目显示不同的日期

keytool 不提供版本信息。

java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

【问题讨论】:

  • @AxelH 我们有,但是几年后就会过期。

标签: java certificate keystore keytool


【解决方案1】:

对于 JKS,它是创建或修改密钥库条目的日期,但 PKCS12 不存储该信息,因此 keytool(实际上是 JCE IINM)只使用“现在”。

注意最近更新的 java 8 KeyStore.getInstance("JKS") 实际上同时读取 JKS 和 PKCS12;见https://stackoverflow.com/a/47640052/2868801。在 java 9 中,PKCS12 成为默认值。

要查看证书的有效期(notBefore 和 notAfter) 以及您可能不想要的许多其他信息,请使用 -v

【讨论】:

  • 搞笑的是keytool显示Keystore type: JKS(which may or may not be right],所以修改日期应该有...但不是。显示当前日期是最愚蠢的无论如何,想法。
  • Keystore 类型为 JKS,但 file 为 PKCS12(如后缀所示)且 PKCS12 file 不包含时间戳(s)。请参阅我对您之前 Q 的新评论,以及我在答案中链接的 Q。
猜你喜欢
  • 2020-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
相关资源
最近更新 更多