因此,我们与合作伙伴一起开展这个项目,合作伙伴应该使用我们的一个 API。老板决定沟通应使用 TLS 相互认证。
在托管 API 的服务器上,我们很久以前就安装了由知名公共 CA 颁发的证书。
以我对 PKI 的理解(相当欠缺),我们不需要向我们的合作伙伴发送任何证书。在启动连接时,他们的系统(作为客户端)将简单地请求我们服务器的证书,并通过 CA 进行验证。如果他们还在客户端上安装了“公共证书”,则服务器应该能够通过 CA 进行验证,并且通信将相互认证。然后,客户端和服务器将就加密通道的通用方法达成一致。
我对使用证书进行相互认证的理解至少部分正确吗?
如果是这样,为什么我们的合作伙伴要求我们向他们发送我们服务器上使用的完整证书?他们说他们需要包含公钥的证书。为什么他们要提前拿到它?如果我们向他们发送整个证书,它还将包含私钥,这意味着合作伙伴在技术上可以伪造我们的身份。我说得对吗?
关于这种情况有什么建议吗?我遗漏了什么吗?我从来都不是证书方面的天才……
在此先感谢您的帮助 !
答案1
我对使用证书进行相互认证的理解至少部分正确吗?
是的。具体来说,“相互认证”意味着您的服务器必须请求并验证客户端的证书。
他们为什么需要提前准备好?
也许他们想确保他们找到了正确的服务器。
他们可能还计划做一些不同于通用的“多个 CA”身份验证的事情。例如,他们可能想知道您使用哪个特定的 CA,以降低其他 CA 被欺骗颁发类似证书的风险。
他们可能还想完全避免基于 CA 的验证,而是检查您当前拥有的精确公钥。(这非常安全,但也很脆弱,因为续订证书通常需要制作新密钥。请务必向合作伙伴询问证书续订事宜。)
如果我们向他们发送整个证书,它还将包含私钥,这意味着合作伙伴在技术上可以伪造我们的身份。
不可以。私钥不是证书的一部分。