2012-07-10 21 views
5

He leído la documentación provista en MSDN y algunas otras publicaciones en este sitio. Sin embargo, todavía no está claro si WCF (específicamente, NetTcpBinding) realmente encriptará el mensaje contenidos al usar seguridad de mensaje con certificados. ¿Alguien sabe con seguridad?¿La seguridad del mensaje WCF en realidad encripta los contenidos del mensaje?

Por ejemplo, puede especificar tanto las credenciales de transporte y de mensajes en su fichero de configuración:

 <security mode="TransportWithMessageCredential"> 
      <transport clientCredentialType="Certificate"/> 
      <message clientCredentialType="Certificate" 
        negotiateServiceCredential="true" /> 
     </security> 

Por lo que yo puedo decir la documentación de MSDN implica que la seguridad de mensajes simplemente se basa en cualquiera de nombre de usuario/contraseña o la autenticación basada en certificados (negociación), pero no especifica específicamente que el mensaje en sí mismo está encriptado en el nivel del mensaje. Por ejemplo, si utilizo ÚNICAMENTE seguridad de mensajes, con negociación basada en certificados, no creo que el contenido del mensaje esté realmente encriptado (es decir, un detector de paquetes podría interceptar el contenido del mensaje sin procesar, incluso si el servicio exige autenticación). ?

Si es posible el cifrado de nivel de mensaje verdadero (usando NetTcpBinding) ¿cómo se hace en el código? Creo que esto está relacionado con el AlgorithmSuite, aunque no estoy seguro,

binding.Security.Mode = SecurityMode.Message; 
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows; 
binding.Security.Message.AlgorithmSuite = new System.ServiceModel.Security.TripleDesSecurityAlgorithmSuite(); 

Respuesta

6

No estoy seguro si esto responde a tu pregunta totalmente, pero de acuerdo con this article TCP encripta por defecto.

NetTcpBinding es seguro por defecto. Específicamente, las personas que llaman deben proporcionar credenciales de Windows para la autenticación y todos los paquetes de mensajes son firmados y encriptados sobre protocolo TCP.

En otras palabras, si se personaliza la configuración, pero utiliza un modo de seguridad que no sea 'None',

Por defecto, todos los enlaces de WCF seguras serán cifrar y firmar mensajes. No se puede deshabilitar para la seguridad del transporte, sin embargo, para el mensaje de seguridad puede deshabilitar esto para fines de depuración o cuando se usa un método de protección alternativo, como IPSec, .

+0

decidí simplemente oler los paquetes a mí mismo utilizando Wireshark, y puedo confirmar que esto es cierto.Aparentemente, Windows se encarga de la encriptación misma para la comunicación de dominio/dominio de confianza. ¡Gracias! –

5

WCF puede cifrar el contenido del mensaje con un netTcpBinding. La forma más fácil de ver esto es agregar diagnostics a su archivo .config y generar un archivo svclog. En realidad se puede ver el mensaje cifrado con la herramienta svctraceviewer.exe

He aquí alguna información más (que puede que ya haya leído) WCF NetTcpBinding Security - how does it work?

0

Quizás una respuesta tardía. Pero aquí es algo que encontré en MSDN.

La seguridad de los mensajes hace que el mensaje sea seguro, independientemente del transporte que use para transmitir el mensaje, y el contexto de seguridad se integra directamente en el mensaje.

MSDN Article

Cuestiones relacionadas