0

我希望使用可以通过 ACME 签署证书的中间 CA。我们有许多无法在 Internet 上访问的内部 Web 服务器,它们使用 SSL,所有这些都需要手动管理。我们已经有一个内部 CA,CA 授权安装在所有内部机器上。我希望使用现有机构提供的证书安装步骤 CA,然后它可以使用 ACME 来签署证书(所有服务器都在 DNS 中,并且这个 DNS 是内部管理的,所以 DNS 名称检查是有效的检查) .

我可以得到大部分的方法,但似乎 set-ca 总是为服务的 ACME 部分使用自签名证书,所以当 certbot 或任何连接到 ACME 服务时,它只会因为自签名而生成证书错误它用于通信(即使它最终会发布一个可以验证的)。

有没有人有解决这个问题的经验?我可以在所有相关服务器上安装自签名证书,但是如果我必须每 6 个月在许多机器上手动更新一次证书,我可能会保留使用 ACME按照目前的流程。

4

2 回答 2

0

目前,我在餐桌上面临同样的挑战。我正在尝试设置 ACME 端到端流程。我想为所有内部服务/服务器提供一个完全自动化的证书过程。这个想法是消除证书的手动操作。

我成功安装和运行 step-ca 并将其用作 ACME 服务器,但我仍然需要(手动)将 CA 证书本身分发到所有服务器/服务信任存储。

无论如何,到目前为止,我能找到的最接近的答案在这里描述:https ://smallstep.com/docs/tutorials/intermediate-ca-new-ca

因此,如果您已经为该问题找到了更好的解决方案,请在此处分享。

于 2021-08-31T18:15:33.467 回答
0

ACME 规范 (RFC8555)要求ACME 客户端(获取证书的事物)和 ACME 服务器(在本例中为step-ca)之间的所有通信都通过 TLS 进行。这意味着step-ca需要您的 ACME 客户端信任的自己的证书才能使用 ACME 颁发证书。所以是的,这里有一点引导问题。

要解决此step-ca问题,请使用其中间证书/签名密钥自动为自己颁发证书。这意味着您需要:

  1. 将所有 ACME 客户端配置为信任step-ca运行时生成的根step ca init,或者
  2. 配置step-ca为使用链接到您的客户已经信任的现有根的中间件(请参阅https://smallstep.com/docs/tutorials/intermediate-ca-new-ca)。

如果您正确管理您的根证书私钥,您可以使用比通常用于叶证书更长的到期时间。有一个流程来轮换您的根证书(例如,使用配置管理)是一个好主意,但这不是您需要经常做的事情。因此,即使需要根分发,使用 ACME 仍有很多价值。

您可以使用step ca rootstep certificate install分别安全地下载和(可选)将根证书安装在系统的信任库中。

有关配置特定 ACME 客户端以连接到的更多信息step-ca,请参阅https://smallstep.com/docs/tutorials/acme-protocol-acme-clients

于 2021-10-28T23:09:08.363 回答