You are on page 1of 6

Llamar a un servicio Web mediante SSL

SSL se puede utilizar para garantizar la integridad y confidencialidad de los mensajes


transmitidos hacia y desde un servicio Web. En este artículo se muestra cómo utilizar
SSL con los servicios Web.
Puede configurar un servicio Web para requerir el uso de Secure Sockets Layer (SSL)
con el fin de proteger la transmisión de datos confidenciales entre el cliente y el servicio.
SSL proporciona las siguientes ventajas:
Integridad de los mensajes. Asegura que los mensajes no se modifican durante su
transmisión.
Confidencialidad de los mensajes. Asegura que se mantiene la privacidad de los
mensajes durante su transmisión.

En este artículo se describe cómo configurar un servicio Web para requerir SSL y cómo
llamar al servicio Web desde una aplicación cliente ASP.NET mediante el protocolo
HTTPS.

Nota: la información de este artículo se aplica también a los objetos remotos alojados
en ASP.NET y en IIS (con la tecnología .NET Remoting). Para obtener información
acerca de cómo crear un componente remoto alojado en IIS, consulte el artículo
Q312107 "How To: Host a Remote Object in Microsoft Internet Information Services"
(en inglés).

Requisitos
A continuación se describen las recomendaciones de hardware, software, infraestructura
de red, conocimientos y Service Pack que se necesitan:
Sistema operativo Microsoft® Windows® 2000 Server
Sistema de desarrollo Microsoft Visual Studio® .NET
Un servidor Web que tenga instalado un certificado de servidor
Para obtener más información acerca de cómo instalar certificados de servidor
Web, consulte "Cómo: Configurar SSL en un servidor Web".

Para llevar a cabo los procedimientos de este artículo, también es necesario que tenga
conocimientos acerca del desarrollo Web ASP.NET con la herramienta Microsoft Visual
C#™.

Resumen
En este artículo se incluyen los siguientes procedimientos:
1. Crear un servicio Web sencillo

1
2. Configurar el directorio virtual del servicio Web para requerir SSL
3. Probar el servicio Web con un explorador
4. Instalar el certificado de la entidad emisora en el equipo cliente
5. Desarrollar una aplicación Web para llamar al componente revisado

1. Crear un servicio Web sencillo


Para crear un servicio Web sencillo en el equipo host de servicios Web
1. Inicie Visual Studio .NET y cree una nueva aplicación de servicio Web ASP.NET
en C# con el nombre SecureMath.
2. Cambie el nombre de service1.asmx por math.asmx.
3. Abra math.asmx.cs y cambie el nombre de la clase Service1 por math.
4. Agregue a la clase math el siguiente método Web.

[WebMethod]
public long Add(long operand1, long operand2)
{
return (operand1 + operand2);
}

5. En el menú Generar, haga clic en Generar solución para crear el servicio Web.

2. Configurar el directorio virtual del servicio Web para


requerir SSL
El servicio Web se ejecuta en Servicios de Internet Information Server (IIS) y depende de
IIS para proporcionar compatibilidad con SSL.
En este procedimiento se supone que dispone de un certificado de servidor válido
instalado en el servidor Web. Para obtener más información acerca de cómo instalar
certificados de servidor Web, consulte "Cómo: Configurar SSL en un servidor Web".
Para utilizar IIS para configurar el directorio virtual del servicio Web para SSL
1. En el equipo host de servicios Web, inicie IIS.
2. Vaya al directorio virtual SecureMath.
3. Haga clic con el botón secundario del mouse (ratón) en SecureMath y, a
continuación, haga clic en Propiedades.
4. Haga clic en la ficha Seguridad de directorios.
5. En Comunicaciones seguras, haga clic en Modificar.
Si el botón Modificar no está disponible, es probable que no tenga instalado un
certificado de servidor Web.
6. Active la casilla de verificación Requerir canal seguro (SSL).
7. Haga clic en Aceptar y, a continuación, haga clic de nuevo en Aceptar.
8. En el cuadro de diálogo Omitir herencia, haga clic en Seleccionar todo y,
después, haga clic en Aceptar para cerrar el cuadro de diálogo de propiedades de
SecureMath.
De esta forma se aplica la nueva configuración de seguridad a todos los
subdirectorios de la raíz del directorio virtual.

2
3. Probar el servicio Web con un explorador
En este procedimiento se asegura que el certificado del servidor Web es válido y que ha
sido emitido por una entidad emisora de certificados (CA, Certification Authority) en la
que el equipo cliente confía.
Para llamar al servicio Web mediante SSL desde Internet Explorer
1. Inicie Internet Explorer en el equipo cliente y vaya a la dirección del servicio Web
(con HTTPS). Por ejemplo:

https://WebServer/securemath/math.asmx

El explorador debe mostrar la página de prueba del servicio Web.


2. Si la página de prueba se muestra correctamente, cierre Internet Explorer y vaya
al procedimiento 5, "Desarrollar una aplicación Web para llamar al componente
revisado".
3. Si aparece el cuadro de diálogo Alerta de seguridad que se muestra en la
ilustración 1, haga clic en Ver certificado para ver la identidad de la entidad
emisora del certificado del servidor Web. Debe instalar el certificado de la CA en el
equipo cliente. Para ello, consulte el procedimiento 4, "Instalar el certificado de la
entidad emisora en el equipo cliente".
4. Cierre Internet Explorer.

{Insert figure: Security Alert - Non Trusted Server Cert.gif }


Ilustración 1
Cuadro de diálogo Alerta de seguridad

4. Instalar el certificado de la entidad emisora en el equipo


cliente
En este procedimiento se instala el certificado de la entidad emisora en el equipo cliente
como una entidad emisora de certificados raíz de confianza. El equipo cliente debe
confiar en la entidad emisora de certificados para poder aceptar el certificado de servidor
sin mostrar el cuadro de diálogo Alerta de seguridad.

3
Si utiliza Servicios de Microsoft Certificate Server como CA en el dominio de
Windows
Lleve a cabo este procedimiento sólo si el certificado del servidor Web ha sido emitido por
una CA de Servicios de Microsoft Certificate Server. De lo contrario, si dispone del archivo
.cer de la CA, vaya al paso 8.
1. Inicie Internet Explorer y vaya a la dirección http://nombreDeHost/certsrv, donde
nombreDeHost es el nombre del equipo en el que se encuentran los Servicios de
Microsoft Certificate Server que emitieron el certificado de servidor.
2. Haga clic en Recuperar el certificado de entidad emisora de certificados o la
lista de revocación de certificados y, a continuación, haga clic en Siguiente.
3. Haga clic en Instalar esta ruta de certificación de CA.
4. En el cuadro de diálogo Almacén de certificados raíz, haga clic en Sí.
5. Vaya a la dirección del servicio Web utilizando HTTPS. Por ejemplo:

https://WebServer/securemath/math.asmx

El explorador debe mostrar correctamente la página de prueba del servicio Web,


sin que aparezca el cuadro de diálogo Alerta de seguridad.
Ya tiene instalado el certificado de la CA en su almacén personal de certificados
raíz de confianza. Para poder llamar correctamente al servicio Web desde una
página ASP.NET, debe agregar el certificado de la CA al almacén de certificados
raíz de confianza del equipo.
6. Repita los pasos 1 y 2, haga clic en Descargar certificado de la CA y, después,
guarde el certificado en un archivo en el equipo local.
7. Realice ahora los pasos restantes.
Si dispone del archivo .cer del certificado de la CA
8. En la barra de tareas, haga clic en Inicio y, después, en Ejecutar.
9. Escriba mmc y, a continuación, haga clic en Aceptar.
10. En el menú Consola, haga clic en Agregar o quitar complemento.
11. Haga clic en Agregar.
12. Seleccione Certificados y, después, haga clic en Agregar.
13. Seleccione Cuenta de equipo y, después, haga clic en Siguiente.
14. Seleccione Equipo local: (el equipo en el que se ejecuta esta consola) y,
después, haga clic en Finalizar.
15. Haga clic en Cerrar y, a continuación, en Aceptar.
16. En el panel izquierdo del complemento MMC, expanda Certificados (equipo
local).
17. Expanda Entidades emisoras de certificados raíz de confianza.
18. Haga clic con el botón secundario en Certificados, elija Todas las tareas y, a
continuación, haga clic en Importar.
19. Haga clic en Siguiente para pasar el cuadro de diálogo inicial del Asistente para
importación de certificados.
20. Escriba la ruta y el nombre del archivo .cer de la CA.
21. Haga clic en Siguiente.
22. Seleccione Colocar todos los certificados en el siguiente almacén y haga clic
en Examinar.

4
23. Seleccione Mostrar almacenes físicos.
24. Expanda Entidades emisoras de certificados raíz de confianza en la lista y,
después, seleccione Equipo local.
25. Haga clic en Aceptar, haga clic en Siguiente y, a continuación, en Finalizar.
26. Haga clic en Aceptar para cerrar el cuadro de mensaje de confirmación.
27. Actualice la vista de la carpeta Certificados en el complemento MMC y
compruebe que el certificado de la CA aparece en la lista.
28. Cierre el complemento MMC.

5. Desarrollar una aplicación Web para llamar al servicio


Web
En este procedimiento se crea una aplicación Web ASP.NET sencilla. Esta aplicación se
utilizará como cliente para llamar al servicio Web.
Para crear una aplicación Web ASP.NET sencilla
1. En el equipo cliente del servicio Web, cree una nueva aplicación Web ASP.NET en
C# con el nombre SecureMathClient.
2. Agregue una referencia Web (mediante HTTPS) al servicio Web.
a. En el Explorador de soluciones, haga clic con el botón secundario en el nodo
Referencias y, después, haga clic en Agregar referencia Web.
b. En el cuadro de diálogo Agregar referencia Web, escriba la dirección URL
del servicio Web. Asegúrese de que utiliza una dirección URL HTTPS.

Nota: si ya ha establecido una referencia Web a un servicio Web sin utilizar


HTTPS, puede modificar manualmente el archivo de clases proxy generado y
cambiar la línea de código en la que se establece la propiedad Url para que se
utilice una dirección URL HTTPS en lugar de una dirección URL HTTP.

c. Haga clic en Agregar referencia.


3. Abra el archivo WebForm1.aspx.cs y agregue la siguiente instrucción using
debajo de las instrucciones using existentes.

using SecureMathClient.WebReference1;

4. Vea WebForm1.aspx en el modo del diseñador y cree un formulario como el que


se muestra en la ilustración 2 con los siguientes Id.:
operand1
operand2
result
add

5
{Insert figure: WebServiceClientForm.gif }
Ilustración 2
Formulario WebForm1.aspx
5 Haga doble clic en el botón Add (Sumar) para crear un controlador de eventos de
clic.
6. Agregue al controlador de eventos el siguiente código.

private void add_Click(object sender, System.EventArgs e)


{
math mathService = new math();
int addResult = (int) mathService.Add( Int32.Parse(operand1.Text),
Int32.Parse(operand2.Text));
result.Text = addResult.ToString();
}

7. En el menú Generar, haga clic en Generar solución.


8. Ejecute la aplicación. Escriba dos números para sumar y, después, haga clic en el
botón Add.
La aplicación Web llamará al servicio Web mediante SSL.

You might also like