Versión imprimible      Enviar     
Evaluar y enviar comentarios
MSDN
MSDN Library
MSDN10
MSDN10
 Cómo: Utilizar SSL para proteger la...
Cómo: Utilizar SSL para proteger la comunicación con SQL Server 2000
Publicado: 26 de junio de 2006

Consulte la Página de entrada como punto de partida y para obtener una descripción completa del documento Crear aplicaciones ASP.NET seguras.

Resumen: A menudo resulta fundamental que las aplicaciones puedan proteger los datos transmitidos hacia y desde un servidor de bases de datos SQL Server. Con SQL Server 2000, puede utilizar SSL para crear un canal cifrado. En este artículo se muestra cómo instalar un certificado en el servidor de bases de datos, configurar SQL Server para SSL y comprobar que el canal es seguro.

Puede utilizar el protocolo Secure Sockets Layer (SSL) para proteger el vínculo de comunicación entre los clientes (llamadores directos) y Microsoft® SQL Server™ 2000. Si se configura SQL Server para SSL, todos los datos transmitidos desde el cliente al servidor (y viceversa) se pueden cifrar para asegurar que se mantiene la confidencialidad de los datos durante su transmisión entre el cliente y SQL Server.

Notas

  • SSL es una alternativa al uso de IPSec para proteger el tráfico de base de datos.
    Para obtener más información acerca de cómo utilizar IPSec para proteger el tráfico de base de datos, consulte "Cómo: Utilizar IPSec para proporcionar comunicación segura entre dos servidores" .

  • A diferencia de IPSec, no se requieren cambios en la configuración si se modifica la dirección IP del cliente o del servidor

  • Para que SSL funcione, debe instalar un certificado de servidor en el servidor de bases de datos. El equipo cliente también debe contar con un certificado de la misma entidad emisora de certificados (CA) raíz.

  • Los clientes deben tener instaladas bibliotecas de conectividad de SQL Server 2000. Las versiones anteriores y las bibliotecas genéricas no funcionarán.

  • SSL sólo funciona con TCP/IP (el protocolo de comunicación recomendado para SQL Server) y canalizaciones con nombre.

  • Puede configurar el servidor para exigir el uso de cifrado en todas las conexiones.

  • En el cliente, puede realizar las siguientes acciones:

    • Exigir el uso de cifrado en todas las conexiones salientes.

    • Permitir mediante la cadena de conexión que las aplicaciones cliente elijan si desean utilizar el cifrado en cada conexión.

Requisitos

A continuación se describen las recomendaciones de hardware, software, infraestructura de red, conocimientos y Service Pack que se necesitan.

  • Dos equipos que ejecuten el sistema operativo Microsoft Windows® 2000 Server

  • SQL Server 2000 en el servidor de bases de datos. En este ejemplo, se supone que el servicio SQL Server se ejecuta como Sistema local. Si el certificado se encuentra en el almacén Equipo local, SSL debe funcionar con independencia de la cuenta con la que se ejecute SQL.

  • Microsoft Data Access Components (MDAC) 2.6 o posterior, o bibliotecas de conectividad de cliente de SQL Server 2000 en el equipo cliente.

  • En este ejemplo es necesario el acceso a Servicios de Microsoft Certificate Server bajo Windows 2000 para permitir la creación de certificados de autenticación de servidor; sin embargo, no es un requisito básico.

En esta página

Instalar un certificado de autenticación de servidor Instalar un certificado de autenticación de servidor
Comprobar que el certificado está instalado  Comprobar que el certificado está instalado
Instalar el certificado de la entidad emisora en el cliente  Instalar el certificado de la entidad emisora en el cliente
Forzar que todos los clientes utilicen SSL  Forzar que todos los clientes utilicen SSL
Permitir que los clientes determinen si deben utilizar SSL Permitir que los clientes determinen si deben utilizar SSL
Comprobar que la comunicación está cifrada  Comprobar que la comunicación está cifrada
Recursos adicionales Recursos adicionales

Instalar un certificado de autenticación de servidor

SSL requiere que el servidor posea un certificado de autenticación de servidor emitido por una entidad emisora de certificados (CA, Certification Authority) en la que confíen los clientes que se conectan.

Para instalar un certificado de servidor

  1. Inicie sesión en el servidor de bases de datos con una cuenta de administrador.

  2. Inicie Internet Explorer y vaya a la dirección de Servicios de Microsoft Certificate Server, por ejemplo:

    http://MyCA/certsrv
    
  3. Haga clic en Solicitar un certificado y, después, en Siguiente.

  4. Haga clic en Solicitud avanzada y, después, en Siguiente.

  5. Haga clic en Enviar una petición de certificado a esta CA mediante un formulario y, después, haga clic en Siguiente.

  6. Siga estos pasos para rellenar el formulario de solicitud de certificado:

    a. En el campo Nombre, escriba el nombre de dominio completo del equipo en el que se ejecuta SQL Server. Por ejemplo:

    sql01.nwtraders.com

    b. En el campo Propósito (o Tipo de certificado necesario), haga clic en Certificado de autenticación de servidor.

    c. Para el Proveedor de servicios de cifrado (CSP), haga clic en Proveedor de servicios de cifrado Microsoft RSA SChannel.

    Nota: también funcionan los proveedores Microsoft Base Cryptographic Provider versión 1.0 y Microsoft Enhanced Cryptographic. El proveedor Microsoft Strong Cryptographic Provider no funciona.

    d. Active la casilla de verificación Usar almacén del equipo local.

    Nota: NO active Habilitar la protección segura de claves privadas.
  7. Haga clic en Enviar para enviar la solicitud.

    Si el servidor de certificados emite automáticamente los certificados, puede instalar el certificado en este momento. De lo contrario, podrá instalar el certificado después de que el administrador de la CA lo haya emitido; para ello, utilice el explorador para ir a Servicios de Microsoft Certificate Server y seleccione Comprobar una solicitud de certificado pendiente.

Comprobar que el certificado está instalado

En este procedimiento se comprueba que el certificado de servidor se ha instalado correctamente.

Para comprobar que el certificado está instalado

  1. En la barra de tareas, haga clic en el botón Inicio y, después, en Ejecutar.

  2. Escriba mmc y, a continuación, haga clic en Aceptar.

  3. En el menú Consola, haga clic en Agregar o quitar complemento.

  4. Haga clic en Agregar.

  5. Haga clic en Certificados y, después, en Agregar.

  6. Haga clic en Cuenta de equipo y, después, en Siguiente.

  7. Asegúrese de que la opción Equipo local: (el equipo en el que se está ejecutando esta consola) está seleccionada y, después, haga clic en Finalizar.

  8. Haga clic en Cerrar y, a continuación, en Aceptar.

  9. En la vista de árbol del panel izquierdo, expanda Certificados (equipo local), expanda Personal y, después, seleccione Certificados.

  10. Compruebe que sólo hay un certificado con el nombre de dominio completo que especificó en el procedimiento anterior.
    Puede hacer doble clic en el certificado para ver los detalles.

Instalar el certificado de la entidad emisora en el cliente

Después de instalar el certificado y reiniciar el servicio SQL Server, SQL Server puede negociar el uso de SSL con los clientes. Los clientes que utilicen SSL para conectar a SQL Server deben cumplir los siguientes requisitos:

  • Tener instalado MDAC 2.6 o bibliotecas de conectividad de SQL Server 2000.

  • Confiar en la entidad emisora del certificado del servidor SQL Server.

Para instalar el certificado de la entidad emisora en el equipo cliente

  • Inicie sesión en el equipo cliente como administrador.

  • Inicie Internet Explorer y vaya a la dirección de Servicios de Microsoft Certificate Server, por ejemplo:

    http://MyCA/certsrv
    
  • 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.

  • Haga clic en Instalar esta ruta de certificación de CA y, después, haga clic en como respuesta al cuadro de diálogo de confirmación para instalar el certificado raíz.

Forzar que todos los clientes utilicen SSL

Puede configurar el servidor para exigir que todos los clientes utilicen SSL (como se describe en este procedimiento) o puede permitir que los clientes elijan si desean utilizar SSL en cada conexión (como se describe en el siguiente procedimiento). Las ventajas de configurar el servidor para exigir que los clientes utilicen SSL son las siguientes:

  • Se garantiza que todas las comunicaciones son seguras.

  • Se rechazan las conexiones no protegidas.

Las desventajas son:

  • Todos los clientes deben tener instalado MDAC 2.6 o bibliotecas de conectividad de SQL Server 2000; las bibliotecas anteriores o genéricas no permitirán la conexión.

  • Las conexiones que no sea necesario proteger sufren una ligera sobrecarga de rendimiento como consecuencia del cifrado.

Para exigir que todos los clientes utilicen SSL

  • En el equipo que ejecuta SQL Server, haga clic en Herramienta de red de servidor en el grupo de programas Microsoft SQL Server.

  • Haga clic para activar la casilla Forzar cifrado de protocolo.

  • Compruebe que está habilitado TCP/IP y/o las canalizaciones con nombre.
    SSL no es compatible con otros protocolos.

  • Haga clic en Aceptar para cerrar la Herramienta de red de SQL Server y, después, haga clic en Aceptar como respuesta al cuadro de mensaje de Herramienta de red de SQL Server.

  • Reinicie el servicio SQL Server.

En todas las conexiones de cliente posteriores se requerirá el uso de SSL, tanto si especifican conexiones seguras como si no.

Permitir que los clientes determinen si deben utilizar SSL

En este procedimiento se muestra cómo configurar SSL para permitir que los clientes decidan si deben utilizarlo o no. Puede configurar las bibliotecas de cliente para exigir el uso de SSL en todas las conexiones o puede permitir que las aplicaciones individuales elijan en cada conexión. A continuación se enumeran las ventajas de configurar el cliente:

  • La sobrecarga de SSL sólo se produce en las conexiones que realmente lo requieren.

  • Los clientes pueden conectarse aunque no admitan SSL con SQL Server.

Si adopta este planteamiento, debe estar seguro de que desea permitir conexiones no protegidas.

Para volver a configurar el servidor

  1. En el equipo con SQL Server, ejecute la Herramienta de red de servidor.

  2. Desactive la casilla de verificación Forzar cifrado de protocolo.

  3. Reinicie el servicio SQL Server.

  4. Vuelva al equipo cliente.

Para utilizar SSL en todas las conexiones de cliente

Con este planteamiento se configuran las bibliotecas de cliente para utilizar SSL en todas las conexiones. Eso significa que no se podrá tener acceso a los servidores SQL Server que no admitan el cifrado ni a los servidores SQL Server anteriores a SQL Server 2000.

  1. En el grupo de programas Microsoft SQL Server, haga clic en Herramienta de red de cliente.

  2. Asegúrese de que está habilitado TCP/IP y/o las canalizaciones con nombre.

  3. Active la casilla Forzar cifrado de protocolo.

Para permitir que las aplicaciones decidan si deben o no utilizar el cifrado

Con este planteamiento, las aplicaciones utilizan la cadena de conexión para determinar si deben utilizar o no el cifrado. Esto permite que cada aplicación sólo utilice el cifrado cuando es necesario.

  • Si utiliza el proveedor de datos OLE-DB para conectar a SQL Server, establezca Use Encryption for Data en true como se muestra en el siguiente ejemplo de cadena de conexión OLE-DB.

    "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security 
    Info=False;Initial    
                                       Catalog=Northwind;Data Source=sql01;Use Encryption for 
    Data=True"
    
  • Si utiliza el proveedor de datos SQL Server .NET para conectar a SQL Server, establezca Encrypt en true, como se muestra en el siguiente ejemplo

    "Server=sql01;Integrated Security=SSPI;Persist Security 
    Info=False;Database=Northwind;Encrypt=True"
    

Comprobar que la comunicación está cifrada

En este procedimiento se utiliza el Monitor de red para comprobar que los datos enviados entre el servidor de aplicaciones y el servidor de bases de datos están cifrados. Se comenzará por enviar los datos en texto sin cifrar y, a continuación, se habilitará el cifrado primero mediante la configuración del servidor y, después, mediante la configuración del cliente.

Para comprobar que la comunicación está cifrada

  1. En el equipo cliente, utilice Visual Studio .NET para crear una nueva aplicación de consola en C# con el nombre SQLSecureClient.

  2. Copie el siguiente código en class1.cs para reemplazar todo el código existente.

    Nota: reemplace el nombre del servidor en la cadena de conexión por el nombre del servidor de bases de datos.

       using System;
       using System.Data;
       using System.Data.SqlClient;
    
    namespace SQLSecureClient
       {
       class Class1
       {
       [STAThread]
       static void Main(string[] args)
       {
       // Replace the server name in the following connection string with the 
       // name of your database server
       SqlConnection conn = new SqlConnection(
       "server='sql01';database=NorthWind;Integrated Security='SSPI'");
    
    SqlCommand cmd = new SqlCommand("SELECT * FROM Products");
       try
       {
       conn.Open();
       cmd.Connection = conn;
       SqlDataReader reader = cmd.ExecuteReader();
       while (reader.Read())
       {
       Console.WriteLine("{0} {1}", 
       reader.GetInt32(0).ToString(), 
       reader.GetString(1) );
       }
       reader.Close();
       }
       catch( Exception ex)
       {
       }
       finally
       {
       conn.Close();
       }
       }
       }
    
  3. En el menú Generar, haga clic en Generar solución.

  4. Para que la autenticación de Windows se realice correctamente entre los dos equipos, debe duplicar en el servidor de bases de datos la cuenta con la que ha iniciado sesión de forma interactiva en el equipo cliente. Asegúrese de que el nombre de usuario y la contraseña coinciden. Como alternativa, puede utilizar una cuenta de dominio que se reconozca en ambos equipos.
    Debe utilizar también el Administrador corporativo de SQL Server para crear un inicio de sesión en la base de datos para la cuenta recién creada y agregar un nuevo usuario de base de datos para el inicio de sesión en la base de datos Northwind.

  5. En el servidor de bases de datos, utilice la Herramienta de red de SQL Server para deshabilitar el uso del cifrado; para ello, asegúrese de que la opción Forzar cifrado de protocolo no está activada.

  6. En el servidor de bases de datos, haga clic en Monitor de red dentro del grupo de programas Herramientas administrativas.

    Nota: en Windows 2000 Server se incluye una versión limitada del Monitor de red. En Microsoft SMS se incluye una versión completa.

    Si no tiene instalado el Monitor de red, vaya a Agregar o quitar programas en el Panel de control, haga clic en Agregar o quitar componentes de Windows, seleccione Herramientas de administración y supervisión en la lista Componentes de Windows, haga clic en Detalles y seleccione Herramientas del Monitor de red. Haga clic en Aceptar y, después, en Siguiente para instalar la versión limitada de Monitor de red. Puede que se le pida el CD de Windows 2000 Server.

  7. En el menú Capturar, haga clic en Filtro para crear un nuevo filtro configurado para ver el tráfico de red TCP/IP enviado entre el servidor de bases de datos y el equipo cliente.

  8. Haga clic en el botón Iniciar captura.

  9. Vuelva al equipo cliente y ejecute la aplicación de consola de prueba. En la ventana de la consola debe aparecer una lista de productos de la base de datos Northwind.

  10. Vuelva al servidor de bases de datos y haga clic en el botón Detener y ver captura en el Monitor de red.

  11. Haga doble clic en la primera trama capturada para ver los datos de la captura

  12. Desplácese hacia abajo por las tramas capturadas. Debe ver la instrucción SELECT en texto sin cifrar seguida de la lista de productos recuperados en la base de datos.

  13. Exija ahora el uso del cifrado en todas las conexiones mediante la configuración del servidor con la Herramienta de red de SQL Server:

    a. Utilice la Herramienta de red de SQL Server para activar la opción Forzar cifrado de protocolo.

    b. Detenga y reinicie el servicio SQL Server.

  14. Vuelva al Monitor de red y haga clic en el botón Iniciar captura. En el cuadro de diálogo Guardar archivo, haga clic en No.

  15. Vuelva al equipo cliente y ejecute de nuevo la aplicación de consola de prueba.

  16. Vuelva al servidor de bases de datos y haga clic en Detener y ver captura en el Monitor de red.

  17. Confirme que los datos no son legibles (porque están cifrados).

  18. Vuelva a configurar el servidor para dejar de exigir el cifrado:

    a. Utilice la Herramienta de red de SQL Server para desactivar la casilla de verificación Forzar cifrado de protocolo.

    b. Detenga y reinicie el servicio SQL Server.

  19. Inicie una nueva captura en el Monitor de red y vuelva a ejecutar la aplicación cliente. Confirme que los datos vuelven a aparecer en texto sin cifrar.

  20. Vuelva al equipo cliente y seleccione Herramienta de red de cliente en el grupo de programas Microsoft SQL Server.

  21. Active Forzar cifrado de protocolo y, después, haga clic en Aceptar para cerrar la Herramienta de red de cliente.

  22. Vuelva al Monitor de red y haga clic en el botón Iniciar captura. En el cuadro de diálogo Guardar archivo, haga clic en No.

  23. Vuelva al equipo cliente y ejecute de nuevo la aplicación de consola de prueba.

  24. Vuelva al servidor de bases de datos y haga clic en Detener y ver captura en el Monitor de red.

  25. Confirme que los datos no son legibles (porque están cifrados).

  26. Observe que, en todos los casos, SQL Server envía al cliente su certificado de autenticación de servidor sin cifrado al principio de la secuencia de comunicación. Esto forma parte del protocolo SSL. Observe que esta situación tiene lugar incluso cuando ni el servidor ni el cliente requieren cifrado.

Recursos adicionales

Para obtener información acerca de cómo instalar el Monitor de red en Windows 2000, busque los siguientes artículos en Microsoft Knowledge Base:

  • "HOW TO: Install Network Monitor in Windows 2000" (Q243270, en inglés)

  • "HOW TO: Enable SSL Encryption for SQL Server 2000 with Certificate Server" (Q276553, en inglés)

Para obtener más información acerca del Monitor de red, consulte la sección "Network Manager" (en inglés) del SDK de la plataforma de Microsoft en MSDN (http://msdn2.microsoft.com/library/ms709187.aspx).

© 2008 Microsoft Corporation. Reservados todos los derechos. Términos de uso  |  Marcas Registradas  |  Privacidad
Page view tracker