公共证书在WCF中扮演什么角色?

时间:2018-02-01 16:12:03

标签: c# wcf coldfusion

我们拥有自己的证书,我们将其作为传输客户端凭据中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证书存储区中 - 但我很奇怪,当我没有对服务的证书做任何事情时,服务通信在Visual Studio下工作

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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