Проверка сертификата сервера WCF в локальной сети - PullRequest
0 голосов
/ 24 февраля 2020

Мой сервис и мой клиент находятся в двух разных сетях LAN. Служба владеет собственным подписанным сертификатом, который используется для установления sh TCP TLS-соединения. Клиент не доверяет этому сертификату напрямую, но доверяет его root сертификату. Оптимально клиент не должен устанавливать какие-либо дополнительные сертификаты.

Сервер не заботится о личности клиента, но клиент должен. Как клиент проверяет, что он подключается к ожидаемому серверу?

      <endpoint address="net.tcp://10.64.62.1:23269/CalculatorService"
                binding="netTcpBinding"
                bindingConfiguration="NetTcpBinding_ICalculatorService"
                contract="CalculatorService.ICalculatorService"
                name="clientEndpointBehavior"
                behaviorConfiguration="clientEndpointBehavior"
                >        
        <identity>
          <dns value="" />
        </identity>
      </endpoint>

Единственный параметр в <identity>, который не блокирует идентификацию для одного сертификата или требует windows ClientCredentialType, - <dns>. Но в этом случае я не могу понять, каким должно быть значение <dns> и как это предотвратить поддельные сертификаты, которые также подписаны цепочкой, начинающейся с доверенного root CA?

1 Ответ

0 голосов
/ 25 февраля 2020

Вы правы, раздел «Идентичность» используется для идентификации сервера при подключении конкретного сервера. Это должно быть в следующем виде.

   <endpoint address="net.tcp://10.157.13.69:21011/" binding="netTcpBinding"
        bindingConfiguration="NetTcpBinding_IService" contract="ServiceReference1.IService"
        name="NetTcpBinding_IService">
        <identity>
          <userPrincipalName value="VABQIA969VM\Administrator" />
        </identity>
      </endpoint>

Пожалуйста, проверьте приведенное ниже официальное описание.
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/service-identity-and-authentication
Чтобы узнать, как обеспечить безопасность обмена сертификатами, см. Следующий документ.
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/working-with-certificates

...