使用 HTTPS 服务的 SSL 证书先决条件

SSL Certificate prerequisites to consuming an HTTPS service

我意识到关于 SSL 证书的问题很多,但经过大量搜索后,我无法找到以下混淆的准确答案。

对于单向 SSL,在什么情况下 HTTPS 网络服务的消费者需要导入该网络服务的提供者的 certificate/public 密钥?我之前通过 https 使用过一些 Web 服务,并且从来没有将其他公司的证书或 public 密钥添加到我公司任何设备的密钥库(或者它是信任库?)。

但显然有时情况确实如此,这些例子证明了这一点:

是否仅当服务证书的提供者不是由消费者已知的 CA 颁发时才需要?

此外,如果消费者最终不得不导入提供商的证书,并且消费者的消费应用 本身 由客户端部分和服务器部分组成,消费者是将其导入消费者网络服务器的存储区 还是 到消费者公司每台客户端计算机的存储区?

最后,对于双向 SSL,消费者是否发送他自己的客户端证书以及在他的(可能很多)客户端计算机或他自己的 Web 服务器上执行的代码?

感谢您的澄清。

Is it only necessary when the provider of the service's certificate is not issued by a CA known to the consumer?

是的。当依赖方使用来自全球信任的 CA 的证书时,不需要额外的操作来安装外部证书。

into the store of each and every client computer at the consumer's company?

如果颁发者不是全局信任的,则必须将其安装在每台使用自定义证书使用服务的设备上。

does the consumer send his own client certificate with code that executes on his (possibly many) client computers or on his own web server?

不清楚你的意思。能详细点吗?

更新:

这取决于第 3 方服务器如何验证您的身份。他们可以将您的应用程序整体识别出来,还是需要区分每个内部用户。在第一种情况下,在您的应用程序中拥有单个客户端证书就足够了,您将有两个单独的 TLS 连接:

3rd party server <--TLS--> Your App <--TLS--> End user (many)

最终用户仅在您的应用程序上进行连接和身份验证。必要时,您的应用会与第三方建立单独的 TLS 连接并完成工作。这是很常见的做法。最终用户不知道第 3 方服务器,第 3 方服务器也不知道您的内部用户(可能不应该知道)。