2011-01-13 22 views
15

Me estoy preparando para crear un servicio WCF que nuestros clientes puedan usar para actualizar los datos en nuestro sistema. Por lo tanto, debe estar disponible a través de Internet. Tengo un libro sobre WCF del cual sé que el Message Security es el camino a seguir cuando se pone a disposición un Servicio WCF a través de Internet. Esto se debe a que no debe usar la seguridad de transporte porque solo debe usarse en entornos donde pueda garantizar que exista una conexión punto a punto entre el servicio y el cliente. ¿Lo entendí bien? Así que quiero usar Message Security en combinación con una autenticación personalizada UserName. Entiendo que tengo que obtener un certificado para lograr eso. Nuestra empresa ya posee un certificado SSL que se utiliza para nuestros sitios web.Servicio WCF: certificados y seguridad de mensajes con autenticación de nombre de usuario

  • ¿Puedo utilizar el mismo certificado para la seguridad del mensaje del Servicio WCF?

Y

  • es la forma interoperable seguridad de los mensajes con los clientes que esperan un servicio web ASMX?

Para realizar pruebas creé mi propio certificado con Makecert. Funcionó bien, pero siempre tuve que agregar el certificado al Trusted Persons en la máquina del cliente.

  • ¿Es posible que el Message Security con la certificación arriba mencionada, sin forzar el cliente para agregar el certificado al Trusted Persons manualmente?

Ahora, vamos a suponer el siguiente escenario:

Company Infrastructure

Hay dos servidores web detrás de un ISA Server/Servidor de seguridad. Este servidor ISA contiene el certificado de la dirección www.company.com. Entonces todo el material SSL es manejado por él. También reenvía las solicitudes entrantes a los servidores web en consecuencia. El Servicio WCF recién creado debería ejecutarse en el segundo servidor web.

  • ¿Tengo que copiar el certificado en el servidor web para poder utilizar el Message Security?

En caso afirmativo, escuché que copiar certificados no es una buena práctica porque reduce el nivel de seguridad. Mover el certificado al servidor web no es una opción, porque también es necesario para los sitios web en el servidor web1.

  • ¿Cuáles son mis opciones en este caso?

Y:

  • ¿Cuál sería la mejor práctica para este escenario, sin tener en cuenta los requisitos que se indican?

Gracias ...

+0

En la pregunta que menciona que desea utilizar la seguridad de mensajes con la autenticación de nombre de usuario, entonces no estoy seguro de por qué es necesario copiar los certificados para Message Security? Lo que me estoy perdiendo? – VoodooChild

+1

Al utilizar MessageSecurity, sus mensajes se pueden firmar y/o cifrar. Por lo tanto, necesita una clave privada de un certificado y la otra parte necesita la clave pública. Si el servidor que aloja el Servicio WCF no tiene la clave privada, ¿cómo debería poder firmar o encriptar el mensaje? O descifrar mensajes entrantes para ese asunto. La seguridad de los mensajes solo incluye el contexto de seguridad en sí mismo, por lo que no tiene que depender de las capacidades de su transporte. Consulte http://msdn.microsoft.com/en-us/library/ms733137.aspx –

Respuesta

12

pregunta bien preparado. En primer lugar, probablemente leído el mismo libro y me gustaría aclarar esta afirmación:

Eso se debe a que no se debe utilizar la seguridad del transporte porque debe sólo se puede utilizar en entornos en los que se puede garantizar que hay una conexión punto a punto entre el servicio y el cliente.

Sí. HTTPS (seguridad de transporte) ofrece solo seguridad punto a punto, pero las personas de IMO no entienden este escenario correctamente. ¿Piensa que si se conecta a su banca por Internet a través de HTTPs lo hará al azar en algún lugar en el medio de la comunicación de intercambio de Internet de HTTPS a HTTP? ¡NO! La conexión de punto a punto significa que el canal de transporte protegido entre el cliente y la puerta de enlace a la que se accede proporciona la URL solicitada. En su escenario, significa un canal de transporte seguro entre el Cliente y su servidor ISA. No se asegurará la comunicación entre su ISA y el Servidor Web 2. Si desea un extremo a otro que proporcione un canal seguro entre el cliente y el Servidor Web 2 (ISA no podrá interceptar los mensajes), necesita seguridad en los mensajes.

Ahora a sus otras preguntas:

¿Puedo utilizar el mismo certificado para la seguridad mensaje del Servicio WCF?

Sí se puede, pero hay que copiar la clave privada a su servidor Web 2.

es el camino seguridad de los mensajes interoperable con los clientes que esperan un servicio web ASMX?

No. El cliente ASMX puro no puede usar la seguridad de los mensajes a menos que codifique una gran cantidad de extensiones y encabezados SOAP personalizados o que instale WSE 3.0.

¿Es posible habilitar la seguridad de los mensajes con lo anterior certificado sin forzar el cliente para agregar el certificado a las personas de confianza manualmente?

Si pero autoridad de certificación que publicó el certificado debe ser de confianza en la máquina cliente. Es lo mismo con HTTPS. Los servicios asegurados con seguridad de mensajes también pueden exponer la huella digital del certificado dentro de WSDL. Los clientes pueden validar la identidad del servicio con esta huella digital. Creo que en ese caso tampoco es necesario instalar el certificado en el cliente, pero cuando expire el certificado, todos los clientes deberán actualizarse.

¿Tengo que copiar el certificado en el servidor web para poder utilizar el seguridad de los mensajes?

Sí, debes. Pero esto puede ser un problema porque, por motivos de seguridad, el certificado se puede marcar como no exportable. La mejor solución es solicitar un nuevo certificado solo para este propósito.

+0

Gracias por su respuesta. :-) ¿Cuál es tu sugerencia? Cambiar a la seguridad del transporte? En caso afirmativo, ¿cómo le digo al servicio que la ISA está a cargo de la seguridad del transporte? Porque si configuro el modo de seguridad de transporte, el servicio también requiere un certificado presente en el 'servidor web2', ¿no es así? ¿Puedo seguir usando userNamePasswordValidationMode = "Custom" o solo es posible con la configuración de seguridad del mensaje? Tantas preguntas ...;) –

+0

Sí, todos estos requisitos son posibles. Es solo su elección en función de los requisitos y la confidencialidad de los datos transportados. –

+0

Buena aclaración sobre la interpretación errónea de lo que significa seguridad punto a punto. He estado leyendo para entender la mejor manera de desarrollar un WCF para ser consumido en PHP y temía que 'basicHTTPBinding' sobre HTTPS no fuera seguro. – PedroC88

Cuestiones relacionadas