生产环境中用于内部 HTTPS 调用的自签名证书?

Self signed certificate in production environment for internal HTTPS calls?

我已经生成了一个自签名证书。这个自签名证书存储在服务器中,并且只接受来自拥有这个自签名证书的客户端的请求,这是可以接受的。由于此 HTTPS 端点应该仅从我们的自定义 HTTPS 客户端使用,我强烈认为不需要 CA 签名。 但是我的同事们警告说,无论如何都不应该在生产环境中使用自签名证书。我该怎么办??

有一个完整的基础设施来管理证书的生命周期,称为 PKI(Public 密钥基础设施)。 CA 是其中的一部分,可帮助您管理证书的颁发和吊销。

不建议在生产环境中使用自签名证书,因为你失去了证书的生命周期管理。比方说,如果客户端受到威胁,任何拥有该自签名证书的人都可以与服务器对话。您无法设法吊销该证书或维护 CRL。

在你的情况下,理想的 solution/implementation 实际上也会从 CA 向客户颁发他们自己的 PKCS12,这意味着他们将拥有自己的私钥(如果你有很多私钥,这可能会变得昂贵客户)。但这是最安全的方法。如果您知道客户端受到威胁,您可以从 CA 撤销该客户端的证书,并且如果客户端进行证书验证(理想情况下应该),它应该不再能够与服务器通信。您可以简单地停用该客户端。

一个想法

但是,如果您正在寻找具有成本效益的方式(因为您提到了内部调用),您可以让您的服务器向客户端发出 P12,并让您的服务器维护记录哪个客户端拥有什么证书。这使您几乎无法控制管理客户端。您可以在服务器端为这些服务启用基于证书的身份验证(服务器将接收客户端的 subjectDN),并通过参考存储的记录,您可以识别哪个客户端正在尝试进行通信。如果您想禁止服务器为该客户端提供服务,只需更新记录即可。

但是为了回答您的问题,使用自签名证书并不理想,因为在现实世界中,您应该能够实时或接近实时地管理证书,如果您使用自签名证书。