Partilhar via


Configurando o cliente para criptografia

Baixar driver JDBC

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:

  1. Seleciona Start e depois Run, e escreve MMC. (MMC é um acrónimo para Microsoft Management Console – Consola de Gestão da Microsoft).
  2. Na consola MMC, abra os Certificados.
  3. Expandir Pessoal e depois Certificados.
  4. Clique com o botão direito no certificado do servidor e depois selecione Todas as Tarefas\Exportar.
  5. Selecione Next para passar pela caixa de diálogo de boas-vindas do Assistente de Exportação de Certificados.
  6. Confirma que está No, do not export the private key selecionado e depois seleciona Próximo.
  7. Certifique-se de selecionar um binário codificado em DER X.509 (.CER) ou codificado Base-64 X.509 (.CER), e depois selecionar Seguinte.
  8. Introduza um nome de ficheiro de exportação.
  9. Selecione Próximo, e depois selecione Terminar para exportar o certificado.

Consulte também

Usando criptografia
Protegendo aplicativos de driver JDBC