Compartir a través de


Descripción de la compatibilidad con SSL

Al conectarse a SQL Server, si la aplicación solicita cifrado y la instancia de SQL Server se configura para ser compatible con el cifrado SSL, el controlador JDBC de Microsoft SQL Server 2005 inicia el protocolo de enlace SSL. El protocolo de enlace permite al servidor y al cliente negociar los algoritmos de cifrado y criptográficos que se usarán para proteger los datos. Después de completar el protocolo de enlace SSL, el cliente y el servidor pueden enviar los datos cifrados de forma segura. Durante el protocolo de enlace SSL, el servidor envía su certificado de clave pública al cliente. El emisor de un certificado de clave pública se conoce como entidad de certificación (CA, Certificate Authority). El cliente es responsable de validar que la entidad de certificación sea una en la que el cliente confíe.

Si la aplicación no solicita cifrado, el controlador JDBC de Microsoft SQL Server 2005 no exigirá que SQL Server admita el cifrado SSL. Si la instancia de SQL Server no se configura para exigir el cifrado SSL, se establece una conexión sin cifrado. Si la instancia de SQL Server se configura para exigir el cifrado SSL, el controlador habilitará manualmente el cifrado SSL al ejecutarse en una Máquina virtual Java (JVM, Java Virtual Machine), o si no la conexión se termina y el controlador generará un error.

Nota

Para obtener más información acerca de cómo configurar SSL para SQL Server, vea el tema "Cifrar conexiones a SQL Server" en los Libros en pantalla de SQL Server 2005.

Para permitir que las aplicaciones usen el cifrado SSL, el controlador JDBC de Microsoft SQL Server 2005 versión 1.2 proporciona las siguientes propiedades de conexión: encrypt, trustServerCertificate, trustStore, trustStorePassword y hostNameInCertificate. Para obtener más información, vea Establecer las propiedades de conexión.

En la tabla siguiente se resume cómo se comporta el controlador JDBC de Microsoft SQL Server 2005 versión 1.2 en los escenarios de conexiones SSL posibles. Cada escenario usa un conjunto diferente de propiedades de conexión SSL. La tabla incluye:

  • blank: "La propiedad no existe en la cadena de conexión"

  • value: "La propiedad existe en la cadena de conexión y su valor es válido"

  • any: "No importa si la propiedad existe en la cadena de conexión o si su valor es válido"

Nota

El mismo comportamiento se aplica para la autenticación de usuarios de SQL Server y la autenticación integrada de Windows.

encrypt trustServerCertificate hostNameInCertificate trustStore trustStorePassword Comportamiento

false o en blanco

cualquiera

cualquiera

cualquiera

cualquiera

El controlador JDBC de Microsoft SQL Server 2005 no exigirá que SQL Server sea compatible con el cifrado SSL. Si el servidor tiene un certificado autofirmado, el controlador inicia el intercambio del certificado SSL. El certificado SSL no será validado y sólo se cifran las credenciales (en el paquete de inicio de sesión).

Si el servidor requiere que el cliente sea compatible con el cifrado SSL, el controlador iniciará el intercambio de certificados SSL. El certificado SSL no será validado, pero se cifrará toda la comunicación.

Nota

En algunas JVM de la versión 1.4, el controlador JDBC podría no cifrar las credenciales de inicio de sesión. Se recomienda usar una versión más reciente de JVM si es posible.

true

true

cualquiera

cualquiera

cualquiera

El controlador JDBC de Microsoft SQL Server 2005 solicita usar el cifrado SSL con el servidor SQL Server.

Si el servidor requiere que el cliente sea compatible con el cifrado SSL o si admite el cifrado, el controlador iniciará el intercambio de certificados SSL. Observe que si la propiedad trustServerCertificate se establece en "true", el controlador no validará el certificado SSL.

Si el servidor no está configurado para ser compatible con el cifrado SSL, el controlador generará un error y terminará la conexión.

true

false o en blanco

en blanco

en blanco

en blanco

El controlador JDBC de Microsoft SQL Server 2005 solicita usar el cifrado SSL con el servidor SQL Server.

Si el servidor requiere que el cliente sea compatible con el cifrado SSL o si admite el cifrado, el controlador iniciará el intercambio de certificados SSL.

El controlador usará la propiedad serverName especificada en la dirección URL de conexión para validar el certificado SSL de servidor y confiar en las reglas de búsqueda en la fábrica del administrador de confianzas con el fin de determinar qué almacén de certificados usar.

Si el servidor no está configurado para ser compatible con el cifrado SSL, el controlador generará un error y terminará la conexión.

true

false o en blanco

value

en blanco

en blanco

El controlador JDBC de Microsoft SQL Server 2005 solicita usar el cifrado SSL con el servidor SQL Server.

Si el servidor requiere que el cliente sea compatible con el cifrado SSL o si admite el cifrado, el controlador iniciará el intercambio de certificados SSL.

El controlador validará el valor del asunto del certificado SSL con el valor especificado para la propiedad hostNameInCertificate.

Si el servidor no está configurado para ser compatible con el cifrado SSL, el controlador generará un error y terminará la conexión.

true

false o en blanco

en blanco

value

value

El controlador JDBC de Microsoft SQL Server 2005 solicita usar el cifrado SSL con el servidor SQL Server.

Si el servidor requiere que el cliente sea compatible con el cifrado SSL o si admite el cifrado, el controlador iniciará el intercambio de certificados SSL.

El controlador usará el valor de la propiedad trustStore para buscar el archivo trustStore del certificado y el valor de la propiedad trustStorePassword para comprobar la integridad del archivo trustStore.

Si el servidor no está configurado para ser compatible con el cifrado SSL, el controlador generará un error y terminará la conexión.

true

false o en blanco

en blanco

en blanco

value

El controlador JDBC de Microsoft SQL Server 2005 solicita usar el cifrado SSL con el servidor SQL Server.

Si el servidor requiere que el cliente sea compatible con el cifrado SSL o si admite el cifrado, el controlador iniciará el intercambio de certificados SSL.

El controlador usará el valor de la propiedad trustStorePassword para comprobar la integridad del archivo trustStore predeterminado.

Si el servidor no está configurado para ser compatible con el cifrado SSL, el controlador generará un error y terminará la conexión.

true

false o en blanco

en blanco

value

en blanco

El controlador JDBC de Microsoft SQL Server 2005 solicita usar el cifrado SSL con el servidor SQL Server.

Si el servidor requiere que el cliente sea compatible con el cifrado SSL o si admite el cifrado, el controlador iniciará el intercambio de certificados SSL.

El controlador usará el valor de la propiedad trustStore para buscar la ubicación del archivo trustStore.

Si el servidor no está configurado para ser compatible con el cifrado SSL, el controlador generará un error y terminará la conexión.

true

false o en blanco

value

en blanco

value

El controlador JDBC de Microsoft SQL Server 2005 solicita usar el cifrado SSL con el servidor SQL Server.

Si el servidor requiere que el cliente sea compatible con el cifrado SSL o si admite el cifrado, el controlador iniciará el intercambio de certificados SSL.

El controlador usará el valor de la propiedad trustStorePassword para comprobar la integridad del archivo trustStore predeterminado. Además, el controlador usará el valor de la propiedad hostNameInCertificate para validar el certificado SSL.

Si el servidor no está configurado para ser compatible con el cifrado SSL, el controlador generará un error y terminará la conexión.

true

false o en blanco

value

value

en blanco

El controlador JDBC de Microsoft SQL Server 2005 solicita usar el cifrado SSL con el servidor SQL Server.

Si el servidor requiere que el cliente sea compatible con el cifrado SSL o si admite el cifrado, el controlador iniciará el intercambio de certificados SSL.

El controlador usará el valor de la propiedad trustStore para buscar la ubicación del archivo trustStore. Además, el controlador usará el valor de la propiedad hostNameInCertificate para validar el certificado SSL.

Si el servidor no está configurado para ser compatible con el cifrado SSL, el controlador generará un error y terminará la conexión.

true

false o en blanco

value

value

value

El controlador JDBC de Microsoft SQL Server 2005 solicita usar el cifrado SSL con el servidor SQL Server.

Si el servidor requiere que el cliente sea compatible con el cifrado SSL o si admite el cifrado, el controlador iniciará el intercambio de certificados SSL.

El controlador usará el valor de la propiedad trustStore para buscar el archivo trustStore del certificado y el valor de la propiedad trustStorePassword para comprobar la integridad del archivo trustStore. Además, el controlador usará el valor de la propiedad hostNameInCertificate para validar el certificado SSL.

Si el servidor no está configurado para ser compatible con el cifrado SSL, el controlador generará un error y terminará la conexión.

Si la propiedad de cifrado se establece en true, el controlador JDBC de Microsoft SQL Server 2005 usa el proveedor de seguridad JSSE predeterminado de JVM para negociar el cifrado SSL con SQL Server. El proveedor de seguridad predeterminado puede no admitir todas las características necesarias para negociar el cifrado SSL correctamente. Por ejemplo, el proveedor de seguridad predeterminado puede no admitir el tamaño de la clave pública RSA que se usa en el certificado SSL de SQL Server. En este caso, el proveedor de seguridad predeterminado podría generar un error que ocasionará que el controlador JDBC termine la conexión. Para resolver este problema, intente una de las siguientes acciones:

  • Configurar el servidor SQL Server con un certificado de servidor que tenga una clave pública RSA más pequeña.

  • Configurar la JVM para usar un proveedor de seguridad JSSE diferente en el archivo de propiedades de seguridad "<inicio-java>/lib/security/java.security"

  • Usar una JVM distinta

Validar un certificado SSL de servidor

Durante el protocolo de enlace SSL, el servidor envía su certificado de clave pública al cliente. El controlador JDBC o el cliente tienen que validar que una entidad de certificación en la que el cliente confíe emita el certificado de servidor. El controlador requiere que el certificado de servidor cumpla las condiciones siguientes:

  • Una entidad de certificación de confianza emita el certificado.

  • El certificado debe estar destinado a la autenticación del servidor.

  • El certificado no ha expirado.

  • La propiedad de asunto del certificado indica que el nombre común (CN) comienza con el nombre de servidor especificado en la cadena de conexión o, si se especifica, el valor de la propiedad hostNameInCertificate. Si el nombre de servidor es una dirección IP, el controlador valida que el valor de CN comience con la dirección IP.

Vea también

Conceptos

Usar el cifrado SSL

Otros recursos

Proteger las aplicaciones del controlador JDBC