【问题标题】:Error getting keypair for CA issuer: certificate is not a CA获取 CA 颁发者的密钥对时出错:证书不是 CA
【发布时间】:2022-01-06 04:45:16
【问题描述】:

我从 SSL.com 生成了一个私钥和一个新证书,现在我想使用它们来签署我的 Kubernetes 集群中的证书。我按照以下方法创建了新的颁发者。

https://cert-manager.io/docs/configuration/ca/

一旦我创建了新的颁发者,它就会报错。任何帮助,将不胜感激。以下是错误信息。

Events:
  Type     Reason             Age                From          Message
  ----     ------             ----               ----          -------
  Warning  ErrInvalidKeyPair  17m (x2 over 17m)  cert-manager  Error getting keypair for CA issuer: certificate is not a CA

【问题讨论】:

  • 嗨@Dusty,garethTheRed 的回答能回答你的问题吗?如果是,请考虑accepting it
  • 您使用的是哪个 Kubernetes 和 Cert manager 版本?您使用的是哪种 Kubernetes 解决方案——一些裸机或云提供商?您的证书和密钥的格式和结构是什么,您能否提供可以在本地运行的命令来生成与 SSL.com 相同格式和结构的证书和密钥?

标签: ssl kubernetes certificate


【解决方案1】:

CA 证书有一个设置为 CA:TruebasicConstraint 扩展。您的正常运行的最终实体证书没有像上面那样设置此扩展名,这就是您看到此错误的原因。也就是说,您不能使用最终实体证书的私钥签署其他证书。

这是设计使然。 CA 需要证明证书的持有者是谁/他们是谁。他们不能将该责任委托给执行最低限度身份验证并只需支付几美元/欧元/卢布购买证书的用户。如果他们允许这样做并向每个订阅者颁发 CA 证书,那么任何人和每个人都可以为自己颁发声称来自您的银行或来自 Google 等的证书 - 互联网的安全性很快就会失效。

您的选择有限:

  1. 寻找允许您自己颁发证书的商业 CA - 这可能会非常昂贵,并且需要对您的大量流程和程序进行定期审核。
  2. 操作您自己的私有 PKI - 您可以使用它为所欲为。请记住,外部用户不会信任这一点,您需要说服其他人您的 PKI 是值得信赖的。根据您的用户群的规模和安全立场,这可能还需要定义广泛的流程和程序,并定期对其进行审核,以确保您的 PKI 对您的用户仍然值得信赖。

【讨论】:

  • 感谢您提供的描述性信息。那么这意味着我们不能实现 SSL.com 或 DigiCert 等第三方 CA 来在 Kubernetes 中签署证书?
  • 您可以与这些商业 CA 交谈,以了解他们在托管 PKI 服务方面的内容,这些服务可以让您颁发证书,但这些都是有代价的。这完全取决于您希望谁信任这些证书。如果它在您的组织内部,那么运行您自己的 PKI 可能就是解决方案。
  • 实际上我使用 openssl 生成了一个 CSR 并提交了 CSR 并从外部 CA(在我的情况下为 SSL.com)获得了证书。现在从外部 CA 获得这些证书后,我遵循了这个方法 - cert-manager.io/docs/configuration/ca 但我得到了上述错误
  • 我基本上需要实现自己的CA。或者使用外部 CA 为我的 Kubernetes 集群中的服务签署证书。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2020-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多