【问题标题】:SSL Certificate prerequisites to consuming an HTTPS service使用 HTTPS 服务的 SSL 证书先决条件
【发布时间】:2020-01-10 07:40:12
【问题描述】:

我意识到有关 SSL 证书的问题数量众多,但经过大量搜索后,我无法找到以下困惑的准确答案。

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

但显然有时情况确实如此,正如这些例子所证明的那样:

certificate mechanism between webservice provider and consumer

Consuming RESTful service over https with certificate using Java

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

此外,如果消费者最终不得不导入提供者的证书,并且消费者的消费应用程序本身由客户端部分和服务器部分组成,那么消费者是否会导入它到消费者的网络服务器的存储中到消费者公司的每台客户端计算机的存储中?

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

感谢您的澄清。

【问题讨论】:

    标签: ssl-certificate x509certificate2


    【解决方案1】:

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

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

    进入消费者公司的每台客户端计算机的商店?

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

    消费者是否发送他自己的客户端证书以及在他(可能很多)客户端计算机或他自己的网络服务器上执行的代码?

    不清楚你的意思。你能详细说明一下吗?

    更新:

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

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

    最终用户仅在您的应用程序上连接和验证。必要时,您的应用会与第 3 方建立单独的 TLS 连接并完成工作。这是相当普遍的做法。最终用户不知道第 3 方服务器,第 3 方服务器不知道您的内部用户(而且可能不应该知道)。

    【讨论】:

    • 最后一点的详细说明:假设我的 Intranet 上有一个 silverlight 应用程序。它由在我的服务器上运行的服务器端部分和一个客户端部分组成,例如,我的 Intranet 中的一百个客户端使用。您在 Internet 某处的服务器上运行了一个 Web 服务,并同意让我的应用程序使用它。但是,您需要客户端证书才能使用它。当我的许多客户之一使用您的服务时,它显然必须首先通过我的服务器。那么我们发送的客户端证书是位于我的服务器上的单个证书,还是来自我内部网中每台客户端计算机的唯一证书?
    • 感谢您的回复。我在服务器端代码文件中看到了一个代码示例,它从商店获取 X509 凭据并将它们附加到 WebRequest 以连接到 Web 服务,所以我假设这意味着我们发送的“客户端”证书这种情况实际上是我们的 Web 服务器上的一个证书,由我们内网中的所有客户端共享。
    • 是的,没错。您的应用没有也不得直接访问属于内部用户的客户端密钥。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 2016-07-06
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    相关资源
    最近更新 更多