Uso del certificado Wcf SSl sobre Tcp sin certificado de cliente (solo en el lado del servidor)

¿Hay alguna forma de usar WCF SSL con NetTcpBinding que no requiera que se instale un certificado de cliente en la máquina cliente? (SSL V2 si no me equivoco).

queremos que el certificado del servidor se encuentre en el almacén de confianza del cliente para la autenticación y el cifrado de su mensaje mediante la clave pública del servidor, lo que significa que solo la máquina del servidor tendrá un certificado de clave privada.

estamos usando un enlace NetTcpBinding y no un enlace personalizado en ambos lados. Si se puede hacer, ¿cuál es la configuración correcta para ello? (en configuraciones de cliente y servidor)

Gracias por adelantado.

Aquí están mis configuraciones de wcf.

CONFIGURACIÓN DEL 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>

CONFIGURACIÓN DEL 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>

Estoy agregando mis configuraciones actuales de servidor y cliente. otra pregunta:

en el nivel de autenticación, queremos que el cliente autentique el certificado del servidor (creo que la clave pública del servidor debería estar en el almacén de TrustedPeople), ¿es esto posible?

¿Nos recomienda usar Transport Security Or Message?

Si queremos autenticar el cliente y el servidor mediante NTLM (clientCredentialType = Windows), ¿se puede hacer además de la autenticación cert del servidor o solo se puede aplicar una de ellas? Hasta ahora, hemos usado la autenticación NTLM.

ahora mismo estoy obteniendo una excepción: "La actualización solicitada no es compatible con 'net.tcp: // nombre del servidor: 8040 /**'. Esto podría deberse a enlaces no coincidentes (por ejemplo, seguridad habilitada en el cliente y no en el servidor). , me aparece un error: "No se proporciona el certificado del cliente", pero no quiero configurar el certificado del cliente y eso es parte de mi problema principal.

Leemos que podemos usar para la autenticación cert del servidor estas etiquetas:


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

pero, creo que esta autenticación por identidad se realiza mediante un certificado codificado cuando preferimos que la identificación del certificado se realice al buscar la clave pública del servidor en la tienda del cliente (trustedPeople). ¿Esta información es realmente cierta? ¿Que estas etiquetas de identidad son alternativas a la búsqueda de clave pública en el almacén de confianza del cliente?

Espero que puedan ayudar en estos modales, gracias de nuevo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta