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

Sco*_*niz 5 c# coldfusion 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);
Run Code Online (Sandbox Code Playgroud)

我们的合作伙伴还向我们提供了他们在服务器上使用的证书副本,以便验证他们的服务器.如果没有我们使用此证书安装或完成任何操作,则对服务的调用目前成功.

我们正在使用ColdFusion,通常我们必须将它们安装到java证书存储区 - 但我很奇怪,当我没有对服务证书做任何事情时,服务通信在Visual Studio下工作

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

Ana*_*eus 2

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

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

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

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