public 证书在 WCF 中起什么作用?

What role does a public certificate play in WCF?

我们有自己的证书,用作传输客户端凭据中 ClientCredentials 的一部分,如下所示。

WSHttpBinding wsBinding = new WSHttpBinding();
wsBinding.Security.Mode = System.ServiceModel.SecurityMode.Transport;
wsBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
wsClient = new WSService.WSClient(wsBinding, new EndpointAddress(serviceURL));
wsClient.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName, clientCertificateSubjectName);

我们的合作伙伴还向我们提供了他们在服务器上使用的证书副本,以验证他们的服务器。在我们尚未安装或使用此证书执行任何操作的情况下,当前可以成功调用该服务。

我们正在使用 ColdFusion,通常我们必须将它们安装到 java 证书库中 - 但令我感到奇怪的是,当我没有对服务证书

服务证书的role/purpose是什么?客户端是否将其安装在 MMC 证书中受信任的人中或在客户端配置中引用它,例如上面的 WSHttpBinding?

为了通过 SSL 与服务器通信,如果服务器配置为需要客户端证书,则客户端和服务器都需要接受彼此的证书。由于您已经成功与服务器通信,这意味着:

  • 服务器接受了您的客户端证书或未配置为需要客户端证书
  • 您的客户端显式接受或隐式接受服务器证书,因为此证书在您的客户端上具有有效的信任链(发证 CA 或根 CA 在您的受信任根 CA 列表中,并且该证书不包含在任何吊销清单)

如果您只想允许与发送您的合作伙伴提供给您的证书的服务器进行通信。然后您需要编写代码,以便您的客户端明确地将服务器证书与该证书进行比较,然后继续您对服务的调用或让它终止连接。

回答你的问题:我能想到的这个明确提供的证书的唯一目的是在我上面描述的场景中使用它。