Conectar con el cifrado SSL
El controlador JDBC de Microsoft SQL Server 2005 versión 1.2 proporciona propiedades de conexión nuevas y nuevos métodos getter y setter para permitir que las aplicaciones usen el cifrado de Capa de sockets seguros (SSL, Secure Sockets Layer).
En los ejemplos de este tema se describe cómo utilizar las nuevas propiedades de cadena de conexión en una aplicación Java. Para obtener más información sobre estas nuevas propiedades de cadena de conexión, como son encrypt, trustServerCertificate, trustStore, trustStorePassword y hostNameInCertificate, vea Establecer las propiedades de conexión.
Cuando la propiedad encrypt se establezca en true y la propiedad trustServerCertificate se establezca en true, el controlador JDBC de Microsoft SQL Server 2005 no validará el certificado SSL de SQL Server. Esto normalmente se requiere para permitir conexiones en entornos de pruebas, por ejemplo donde la instancia de SQL Server tiene sólo un certificado autofirmado.
El ejemplo de código siguiente demuestra cómo establecer la propiedad trustServerCertificate en una cadena de conexión:
String connectionUrl =
"jdbc:sqlserver://localhost:1433;" +
"databaseName=AdventureWorks;integratedSecurity=true;" +
"encrypt=true;trustServerCertificate=true";
Cuando se establezca la propiedad encrypt en true y la propiedad trustServerCertificate en false, el controlador JDBC de Microsoft SQL Server 2005 validará el certificado SSL de SQL Server. Validar el certificado de servidor es una parte del protocolo de enlace de SSL y garantiza que el servidor es el apropiado al que hay que conectarse. Para validar el certificado de servidor, se debe suministrar material de confianza en el momento de la conexión utilizando explícitamente las propiedades de conexión trustStore y trustStorePassword, o el almacén de confianza predeterminado de la máquina virtual Java (JVM) subyacente de forma implícita.
La propiedad trustStore especifica la ruta de acceso (incluido el nombre de archivo) del archivo trustStore de certificado, que contiene la lista de certificados en los que el cliente confía. La propiedad trustStorePassword especifica la contraseña que se usa para comprobar la integridad de los datos de trustStore. Para obtener más información sobre cómo utilizar el almacén de confianza predeterminado de la JVM, vea Configurar el cliente para el cifrado SSL.
El ejemplo de código siguiente muestra cómo establecer las propiedades trustStore y trustStorePassword en una cadena de conexión:
String connectionUrl =
"jdbc:sqlserver://localhost:1433;" +
"databaseName=AdventureWorks;integratedSecurity=true;" +
"encrypt=true; trustServerCertificate=false;" +
"trustStore=storeName;trustStorePassword=storePassword";
El controlador JDBC proporciona una propiedad adicional, hostNameInCertificate, que especifica el nombre de host del servidor. El valor de esta propiedad debe coincidir con la propiedad de asunto del certificado.
El ejemplo de código siguiente muestra cómo utilizar la propiedad hostNameInCertificate en una cadena de conexión:
String connectionUrl =
"jdbc:sqlserver://localhost:1433;" +
"databaseName=AdventureWorks;integratedSecurity=true;" +
"encrypt=true; trustServerCertificate=false;" +
"trustStore=storeName;trustStorePassword=storePassword" +
"hostNameInCertificate=hostName";
Nota
También puede establecer el valor de las propiedades de conexión mediante los métodos setter adecuados que proporciona la clase SQLServerDataSource.