Есть ли способ использовать WCF SSL с NetTcpBinding, который не требовал бы установки клиентского сертификата на клиентской машине? (SSL V2, если не ошибаюсь).
мы хотим, чтобы сертификат сервера находился в доверенном хранилище клиента для аутентификации и Шифрование своего сообщения с помощью открытого ключа сервера, что означает, что только серверная машина будет иметь сертификат закрытого ключа.
мы используем NetTcpBinding, а не customBinding с обеих сторон. Если это можно сделать, какова правильная конфигурация для него? (о конфигурации клиента и сервера)
Заранее спасибо.
вот мои конфиги wcf.
КОНФИГУРАЦИЯ СЕРВЕРА:
<configuration>
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="TcpSecureBinding">
<security mode="Transport">
<transport clientCredentialType="Certificate"/>
</security>
</binding>
</netTcpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceCredentialsBehavior">
<serviceDebug includeExceptionDetailInFaults="True" />
<serviceMetadata httpGetEnabled="true" />
<serviceAuthorization
principalPermissionMode="UseWindowsGroups">
</serviceAuthorization>
<serviceCredentials>
<windowsAuthentication includeWindowsGruops="true"
allowAnonymousLogons="false"/>
<clientCertificate>
<authentication certificateValidationMode="none"/>
</clientCertificate>
<serverCertificate
findValue="thumbprint"
storelocation="LocalMachine"
x509FindType="FindMyThumbprint"
storeName="My"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="ServiceCredentialsBehavior"
name="ServiceModel.Calculator">
<endpoint address="net.tcp://localhost:8040/Calculator"
binding="netTcpBinding"
bindingConfiguration="TcpSecureBinding"
contract="ServiceModel.ICalculator" >
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
</service>
</services>
</system.serviceModel>
</configuration>
КОНФИГУРАЦИЯ КЛИЕНТА:
<configuration>
<system.serviceModel>
<client>
<endpoint address="net.tcp://localhost:8040/Calculator"
behaviorConfiguration="endpointCredentialBehavior"
binding="netTcpBinding"
bindingConfiguration="Binding1"
contract="ServiceModel.ICalculator">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
</client>
<behaviors>
<endpointBehaviors>
<behavior name="endpointCredentialBehavior">
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<netTcpBinding>
<binding name="Binding1">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
</bindings>
</system.serviceModel>
</configuration>
я добавляю свои текущие конфигурации сервера и клиента. еще вопросы:
на уровне аутентификации мы хотим, чтобы клиент аутентифицировал сертификат сервера (я думаю, что открытый ключ сервера должен находиться в хранилище trustPeople), возможно ли это?
Вы рекомендуете нам использовать Transport Security или Message?
если мы хотим аутентифицировать клиент и сервер с помощью NTLM (clientCredentialType=Windows) это можно сделать в дополнение к аутентификации сертификата сервера или можно применить только один из них? до сих пор мы использовали аутентификацию NTLM.
Сейчас я получаю исключение: «Запрошенное обновление не поддерживается ‘net.tcp://servername:8040/ **». Это может быть связано с несоответствием привязок (например, безопасность включена на клиенте, а не на сервере) ." я понимаю, что эта ошибка произошла из-за того, что клиент использует безопасность Windows и сервер в сертификате om, но когда я также меняю безопасность клиента на сертификат, я получаю сообщение об ошибке: "Сертификат клиента не предоставлен". но я не хочу устанавливать сертификат клиента, и это часть моей основной проблемы.
мы читаем, что мы можем использовать для аутентификации сертификата сервера эти теги:
идентификация>
но я думаю, что эта аутентификация по удостоверению выполняется с помощью закодированного сертификата, когда мы предпочитаем, чтобы идентификация сертификата выполнялась путем поиска открытого ключа сервера в хранилище клиента (trustedPeople). эта информация действительно соответствует действительности? что эти теги идентификации являются альтернативой поиску открытого ключа в доверенном хранилище клиента?
Надеюсь, вы сможете помочь в этом, еще раз спасибо.