Использовать сертификат клиента в службе WCF net tcp - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть приложение WCF, работающее как net tcp, и на сервере установлен сертификат сервера (xxx.domain.com).

Включен транспорт с защитой сертификата. Веб-сайт IIS настроен и работает нормально с вышеуказанным сертификатом. Кроме того, он не установлен на локальном компьютере, так как он обнаружил правильный root ca и промежуточный сертификат.

Могу ли я вызвать службу wcf без установленного сертификата, если да, то какой? я должен использовать Root CA или промежуточный. См. Цепочку сертификатов ниже

Root CA
Средний
xxx.domain.com

Вот код, используемый в клиенте

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

1 Ответ

0 голосов
/ 24 апреля 2020

Когда служба 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.
Не стесняйтесь, дайте мне знать, если есть что-то, что я могу помогите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...