Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O driver Microsoft JDBC para SQL Server ou cliente tem de validar que o servidor é o servidor correto e que o seu certificado é emitido por uma autoridade certificadora em quem o cliente confia. Para validar o certificado do servidor, o material de confiança deve ser fornecido no momento da ligação. Além disso, o emissor do certificado do servidor deve ser uma autoridade certificadora em quem o cliente confie.
Este artigo descreve primeiro como fornecer o material de confiança no computador do cliente. Depois, descreve como importar um certificado de servidor para o armazenamento de confiança do computador cliente quando a instância do certificado de Segurança da Camada de Transporte (TLS) do SQL Server é emitida por uma autoridade certificadora privada.
Para mais informações sobre a validação do certificado do servidor, consulte a secção Validating Server TLS Certificate em Compreender o suporte à encriptação.
Configuração do repositório de confiança do cliente
Validar o certificado do servidor requer o material de confiança no momento da ligação, seja usando explicitamente as propriedades de ligação trustStore e trustStorePassword , ou utilizando implicitamente o armazenamento de confiança padrão da Máquina Virtual Java (JVM) subjacente. Para mais informações sobre como definir as propriedades trustStore e trustStorePassword numa cadeia de ligação, consulte Ligação com encriptação.
Se a propriedade trustStore não for especificada ou definida como nula, o driver Microsoft JDBC para SQL Server dependerá do fornecedor de segurança da JVM subjacente, a Java Secure Socket Extension (SunJSSE). O fornecedor SunJSSE fornece um TrustManager predefinido, que é usado para validar certificados X.509 devolvidos pelo SQL Server contra o material de confiança fornecido numa loja de confiança.
O TrustManager tenta localizar o trustStore padrão na seguinte ordem de pesquisa:
- Se a propriedade do sistema "javax.net.ssl.trustStore" estiver definida, o TrustManager tenta encontrar o ficheiro trustStore predefinido usando o nome do ficheiro especificado por essa propriedade do sistema.
- Se a propriedade do sistema "javax.net.ssl.trustStore" não foi especificada, e o ficheiro "<java-home>/lib/security/jssecacerts" existir, esse ficheiro é usado.
- Se existir o ficheiro "<java-home>/lib/security/cacerts", esse ficheiro é utilizado.
Para mais informações, consulte a documentação da interface SUNX509 TrustManager no site da Sun Microsystems.
O Java Runtime Environment permite definir as propriedades do sistema trustStore e trustStorePassword da seguinte forma:
java -Djavax.net.ssl.trustStore=C:\MyCertificates\storeName
java -Djavax.net.ssl.trustStorePassword=storePassword
Neste caso, qualquer aplicação a correr nesta JVM usará estas definições como padrão. Para substituir as configurações padrão na sua aplicação, deve definir as propriedades de conexão trustStore e trustStorePassword quer na cadeia de conexão, quer no método setter apropriado da classe SQLServerDataSource.
Além disso, pode configurar e gerir os ficheiros de repositório de confiança por defeito, como "<java-home>/lib/security/jssecacerts" e "<java-home>/lib/security/cacerts". Para isso, utilize a utilidade JAVA "keytool" que está instalada com o JRE (Java Runtime Environment). Para mais informações sobre a ferramenta "keytool", consulte a documentação do keytool no site da Oracle.
Importação do certificado do servidor para o trust store
Durante o handshake TLS, o servidor envia seu certificado de chave pública para o cliente. O emissor de um certificado de chave pública é conhecido como Autoridade de Certificação (CA). O cliente tem de garantir que a autoridade certificadora é uma autoridade em quem confia. Esta garantia é alcançada ao conhecer previamente a chave pública das CAs de confiança. Normalmente, a JVM vem com um conjunto pré-definido de autoridades certificadoras de confiança.
Se a instância do certificado TLS do SQL Server for emitida por uma autoridade certificadora privada, deve adicionar o certificado da autoridade certificadora à lista de certificados de confiança na loja de confiança do computador cliente.
Para isso, utilize a utilidade JAVA "keytool" que está instalada com o JRE (Java Runtime Environment). O seguinte prompt de comandos demonstra como usar a ferramenta "keytool" para importar um certificado a partir de um ficheiro:
keytool -import -v -trustcacerts -alias myServer -file caCert.cer -keystore truststore.ks
O exemplo utiliza um ficheiro chamado "caCert.cer" como ficheiro de certificado. Deve obter este arquivo de certificado do servidor. Os passos seguintes explicam como exportar o certificado do servidor para um ficheiro:
- Seleciona Start e depois Run, e escreve MMC. (MMC é um acrónimo para Microsoft Management Console – Consola de Gestão da Microsoft).
- Na consola MMC, abra os Certificados.
- Expandir Pessoal e depois Certificados.
- Clique com o botão direito no certificado do servidor e depois selecione Todas as Tarefas\Exportar.
- Selecione Next para passar pela caixa de diálogo de boas-vindas do Assistente de Exportação de Certificados.
- Confirma que está
No, do not export the private keyselecionado e depois seleciona Próximo. - Certifique-se de selecionar um binário codificado em DER X.509 (.CER) ou codificado Base-64 X.509 (.CER), e depois selecionar Seguinte.
- Introduza um nome de ficheiro de exportação.
- Selecione Próximo, e depois selecione Terminar para exportar o certificado.