Usando o certificado Wcf SSl sobre Tcp sem certificado de cliente (somente no lado do servidor)

Existe alguma maneira de usar o WCF SSL com NetTcpBinding que não exigiria um certificado de cliente para ser instalado na máquina do cliente? (SSL V2 se não me engano).

queremos que o certificado do servidor esteja no armazenamento confiável do cliente para autenticação e criptografando sua mensagem pela chave pública do servidor, o que significa que somente a máquina servidora terá um certificado de chave privada.

estamos usando um NetTcpBinding e não customBinding nos dois lados. Se for possível, qual é a configuração correta para isso? (nas configurações do cliente e do servidor)

Desde já, obrigado.

aqui estão minhas configurações de wcf.

CONFIGURAÇÃO DO SERVIDOR:



    <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>

CONFIG CLIENTE:



    <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>

estou adicionando minhas configurações atuais de servidor e cliente. outras perguntas:

no nível de autenticação, queremos que o cliente autentique o certificado do servidor (acho que a chave pública do servidor deve estar na loja trustedPeople), isso é possível?

você nos recomenda usar segurança ou mensagem de transporte?

se quisermos autenticar cliente e servidor por NTLM (clientCredentialType = Windows), isso pode ser feito além da autenticação de certificação do servidor ou apenas um deles pode ser aplicado? Até agora, usamos a autenticação NTLM.

agora estou recebendo exceção: "A atualização solicitada não é suportado por 'net.tcp: // servername: 8040 /**'. Isso pode ser devido a ligações incompatíveis (por exemplo, segurança ativada no cliente e não no servidor). "Eu entendo que esse erro ocorreu porque o cliente está usando o Windows Security e servidor no om certificado, mas quando estou mudando a segurança do cliente para certificado também , estou recebendo um erro: "O certificado de cliente não é fornecido", mas eu não quero definir o certificado do cliente e isso é parte do meu problema principal.

lemos que podemos usar para a autenticação do servidor cert esta tags:


    <identity>
      <certificate encodedValue="encoded certificate"/>
    </identity>

mas, eu acho que essa autenticação por identidade é feita por um certificado codificado quando nós preferimos que a identificação do certificado seja realizada pela busca da chave pública do servidor na loja do cliente (trustedPeople). Esta informação é realmente verdadeira? que essas tags de identidade são alternativas à pesquisa de chave pública na loja confiável do cliente?

Espero que você seja capaz de ajudar neste caminho, obrigado novamente.