【问题标题】:Can I modify a private key validity?我可以修改私钥的有效性吗?
【发布时间】:2014-09-21 08:09:26
【问题描述】:

我是计算机安全领域的新手,我有一个基本问题我无法找到答案。

我有一个有效期已过的私钥。使用该密钥,我之前生成了一个 .csr 并将其发送给 CA,他们给了我一个仍然有效的证书。

我的问题是,我可以(使用 keytool 或其他...)修改私钥的到期日期,以便将其与我的证书 (.cer) 一起使用。我可以重新生成用于此证书的私钥吗?

谢谢,

【问题讨论】:

  • 私钥(或与之相关的公钥)不会过期,证书会。
  • “我可以重新生成一个用于此证书的私钥吗” - 你可以,但你不应该。在过去,密钥管理和密钥轮换就像一种宗教(现在仍然如此)。但我们在实践中发现,更好地尊重密钥连续性并重新认证或重复使用相同的密钥(没有密钥妥协)。然后,利用深度防御和安全多样化技术的系统可以执行首次使用信任 (TOFU) 和固定等操作。如果密钥定期更改,则它会破坏 TOFU 和 Pinning。当钥匙意外改变时,中间人应该敲响警钟。
  • 这个问题似乎是题外话,因为它与编程无关。询问security.stackexchange.com

标签: ssl cryptography certificate keytool private-key


【解决方案1】:

没有。

有效期在证书中,而不是私钥中。证书无法修改,唯一可以生成有效证书的实体是证书颁发机构。

您必须为新证书付费。证书过期是一种安全措施,也是获得回头客的一种方式。

【讨论】:

  • 感谢您的回答。实际上 .cer 有效期到 2015 年,但我无法使用它,因为密钥对有效日期(创建密钥对时 keytool 的有效性参数)已过期。有什么想法吗?
  • “证书过期是一种安全措施...” - Google 和其他一些公司每 30 天左右轮换一次证书,但会重新验证相同的公钥。他们这样做是为了让 CRL 对于移动客户端来说很小。我不相信有任何安全原因(模密钥连续性)。这就是为什么CertPatrol 无法在没有虚假噪音的情况下处理像 Gmail 这样的网站。
  • “您必须为新证书付费...” - StartComCACert 提供大多数移动和桌面浏览器信任的免费证书。它们是 1 类证书(域验证,无通配符)。如果需要,他们会收取撤销费用。他们对 2 级或更高级别的证书收费。
【解决方案2】:

keytool -genkeypair 不仅仅是生成密钥对:它生成一对公钥和私钥,并将公钥包装到现场生成的自签名 X.509 证书中,并提供各种选项(@987654325 @, -validity, ...)。它将它们放在您选择的别名中(私钥条目将关联私钥和证书,或者准确地说是长度为 1 的证书链)。

这些选项会影响这个自签名的 X.509 证书,而不是密钥对本身。

通常,如果您不想使用自签名证书,您会根据此公钥和此自签名 X.509 证书的特性生成 CSR(CSR 的结构实际上非常类似于自签名证书,但它没有颁发者或有效期)。然后您的 CA 使用该 CSR 来颁发 X.509 证书(这次由该 CA 签名)。

您应该将其再次导入该别名,以便能够使用证书及其私钥。如果您的自签名证书(或与此私钥匹配的旧证书)已过期,请重新导入仍然有效的证书。

事实上,如果有中间证书,你不仅应该导入那个证书,还应该导入证书链(见this questionthis question)。

如果您的 .cer 文件是 DER 格式(二进制)而不是 PEM 格式(DER 格式的 base64 编码),您可以使用 openssl x509 -inform DER -in mycert.cer -outform PEM -out mycert.crt 将其转换为 PEM 并使用结果构建链并导入它。

【讨论】:

  • keytool -import -v -alias privateKeyAlias -keystore theKeyStore.jks -file abc123456def.crt -trustcacerts 不要忘记“trustcacerts”参数,用 CA 发送给您的签名替换公钥!
猜你喜欢
  • 1970-01-01
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
  • 2012-03-01
  • 2013-02-03
相关资源
最近更新 更多