在WCF服务网络tcp中使用客户端证书



我有一个WCF应用程序作为nettcp运行,并在服务器中安装了服务器证书(xxx.domain.com(。

已启用具有证书安全性的传输。IIS网站已配置,使用上述证书运行良好,但由于找到了正确的根证书和中间证书,因此未安装在本地计算机中。

如果是的话,我可以调用没有安装证书的wcf服务吗?我应该使用根CA或中间证书。请查看下方的证书链

根CA
中间
xxx.domain.com

这是客户端中使用的代码

channel.Credentials.ClientCertificate.SetCertificate(
StoreLocation.LocalMachine,
StoreName.CertificateAuthority,
X509FindType.FindByThumbprint,
"tried intermediate and root CA its not working ");

Nettcpbinding创建的WCF服务使用证书对客户端进行身份验证时,我们需要在服务凭据中指定服务证书。

sh.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByThumbprint, "5ba5022f527e32ac02548fc5afc558de1d314cb6");

然后服务将正常工作。随后,客户端在调用服务时应提供客户端证书,因为服务器端的Clientcredentialtype属性是Certificate

binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Certificate;

客户端。

ServiceReference1.ServiceClient client = new ServiceClient();
client.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByThumbprint, "f0969c5725b2f142b7f150515ec2bd12bc45250b");
var result = client.Test();
Console.WriteLine(result);

在此过程中,请注意,我们应该在根CA中相互安装证书,以便建立客户端和服务器端之间的证书信任关系
回顾您的问题,原因可能是客户端和服务器端之间无法建立证书信任关系。我们必须确保客户端已在根CA中安装了服务证书,服务器已在根证书中安装了客户端证书。
如果有什么我可以帮助的,请随时告诉我。

最新更新