Когда служба WCF, созданная Nettcpbinding
, проверяет подлинность клиента с помощью сертификата, нам необходимо указать сертификат службы в учетных данных службы.
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);
Во время этого процесса обратите внимание, что мы должны установить сертификат друг друга в Root CA, чтобы можно было установить доверительные отношения сертификата между клиентской и серверной сторонами.
Вернитесь к своему вопросу, причина может заключаться в том, что доверительные отношения сертификата не могут быть установлены между клиентской и серверной сторонами. Мы должны убедиться, что на стороне клиента установлен сертификат службы в Root CA, а на сервере установлен сертификат клиента в Root CA.
Не стесняйтесь, дайте мне знать, если есть что-то, что я могу помогите.