我意识到有关SSL证书的问题很多,但是经过大量搜索,我找不到以下混乱情况的准确答案。
对于单向SSL,HTTPS Web服务的使用者在什么情况下需要导入该Web服务的证书/公钥的提供者?我以前在https上使用过一些Web服务,而不必将另一家公司的证书或公钥添加到我公司中任何设备的密钥存储区(或者是信任存储区?)中。
显然,有时候确实如此,如以下示例所示:
certificate mechanism between webservice provider and consumer
Consuming RESTful service over https with certificate using Java
仅当服务证书的提供者不是由消费者已知的CA颁发时才需要吗?
此外,如果消费者最终不得不导入提供者的证书,并且消费者的消费应用程序本身由客户端部分和服务器部分组成,则消费者会导入它吗?进入消费者的Web服务器的存储区还是进入消费者的公司的每台客户端计算机的存储区?
最后,对于双向SSL,消费者是否发送自己的客户端证书以及在其(可能有很多)客户端计算机或自己的Web服务器上执行的代码?
感谢您的澄清。
答案 0 :(得分:0)
仅当服务证书的提供者不是由消费者已知的CA颁发时才需要吗?
是的。当依赖方使用来自全球信任的CA的证书时,无需执行其他操作即可安装外部证书。
进入消费者公司中每台客户端计算机的商店?
如果颁发者不受全球信任,则必须将其安装在使用自定义证书的使用服务的每台设备上。
消费者是否发送自己的客户端证书,并在其(可能有很多)客户端计算机或自己的Web服务器上执行的代码?
您的意思不清楚。您能详细说明吗?
更新:
这取决于第三方服务器对您进行身份验证的方式。他们可以确定您的应用整体吗,还是需要区分每个内部用户?在第一种情况下,在您的应用程序中拥有一个客户端证书就足够了,并且您将拥有两个单独的TLS连接:
3rd party server <--TLS--> Your App <--TLS--> End user (many)
最终用户仅在您的应用程序上进行连接和身份验证。必要时,您的应用将与第三方建立单独的TLS连接并完成工作。这是很常见的做法。最终用户不了解第3方服务器,并且第3方服务器不了解您的内部用户(可能不应该)。