Configurazione del client per la crittografia

Scaricare il driver JDBC

Microsoft JDBC Driver per SQL Server o il client deve convalidare che il server sia quello corretto e che il certificato venga rilasciato da un'autorità di certificazione ritenuta attendibile dal client. Per convalidare il certificato del server, è necessario che in fase di connessione venga fornito il materiale relativo all'attendibilità. Inoltre, l'autorità emittente del certificato del server deve essere un'autorità di certificazione considerata attendibile dal client.

In questo articolo viene innanzitutto descritto come fornire il materiale relativo all'attendibilità nel computer client. Viene quindi descritto come importare un certificato del server nell'archivio di attendibilità del computer client quando l'istanza del certificato TLS (Transport Layer Security) di SQL Server viene emessa da un'Autorità di certificazione privata.

Per altre informazioni sulla convalida del certificato del server, vedere la sezione Convalida del certificato TLS del server in Informazioni sul supporto della crittografia.

Configurazione dell'archivio di attendibilità del client

La convalida del certificato del server richiede il materiale relativo all'attendibilità in fase di connessione usando le proprietà di connessione trustStore e trustStorePassword in modo esplicito o usando l'archivio di attendibilità predefinito di JVM (Java Virtual Machine) sottostante in modo implicito. Per altre informazioni su come impostare le proprietà trustStore e trustStorePassword in una stringa di connessione, vedere Connessione tramite la crittografia.

Se la proprietà trustStore non è specificata o è impostata su null, il Microsoft JDBC Driver per SQL Server userà il provider di sicurezza JVM sottostante, SunJSSE (Java Secure Socket Extension). Il provider SunJSSE fornisce un oggetto TrustManager predefinito, usato per convalidare i certificati X.509 restituiti da SQL Server rispetto al materiale relativo all'attendibilità fornito in un archivio di attendibilità.

TrustManager prova a individuare il file trustStore predefinito nell'ordine di ricerca seguente:

  • Se è definita la proprietà di sistema "javax.net.ssl.trustStore", TrustManager prova a individuare il file trustStore predefinito usando il nome file specificato dalla proprietà di sistema.
  • Se la proprietà di sistema "javax.net.ssl.trustStore" non è stata specificata ed è presente il file "<java-home>/lib/security/jssecacerts", viene usato questo file.
  • Se il file "<java-home>/lib/security/cacerts" è presente, viene usato questo file.

Per ulteriori informazioni, vedere la documentazione relativa all'interfaccia TrustManager SUNX509 nel sito Web Sun Microsystems.

Java Runtime Environment consente di impostare le proprietà di sistema trustStore e trustStorePassword come indicato di seguito:

java -Djavax.net.ssl.trustStore=C:\MyCertificates\storeName
java -Djavax.net.ssl.trustStorePassword=storePassword

In questo caso, in qualsiasi applicazione in esecuzione in questo ambiente JVM queste impostazioni vengono utilizzate come predefinite. Per sostituire le impostazioni predefinite nell'applicazione, è necessario impostare le proprietà di connessionetrustStore e trustStorePassword nella stringa di connessione o nel metodo setter appropriato della classe SQLServerDataSource.

Inoltre, è possibile configurare e gestire i file dell'archivio di attendibilità predefinito, come "<java-home>/lib/security/jssecacerts" e "<java-home>/lib/security/cacerts". A tale scopo, utilizzare l'utilità "keytool" JAVA installata con JRE (Java Runtime Environment). Per altre informazioni sull'utilità "keytool", vedere la relativa documentazione sul sito Web Oracle.

Importazione del certificato del server nell'archivio di attendibilità

Durante l'handshake TLS, il server invia il certificato di chiave pubblica al client. L'emittente di un certificato a chiave pubblica è noto come Autorità di certificazione (CA). Il client deve verificare che l'autorità di certificazione sia considerata attendibile dal client stesso. Questa operazione può essere eseguita se la chiave pubblica delle autorità di certificazione attendibili è conosciuta in anticipo. In genere, con JVM viene fornito un set predefinito di Autorità di certificazione attendibili.

Se l'istanza del certificato TLS di SQL Server viene emessa da un'Autorità di certificazione privata, è necessario aggiungere il certificato dell'Autorità di certificazione all'elenco di certificati attendibili nell'archivio di attendibilità del computer client.

A tale scopo, utilizzare l'utilità "keytool" JAVA installata con JRE (Java Runtime Environment). Nel prompt dei comandi seguente viene illustrato come utilizzare l'utilità "keytool" per importare un certificato da un file:

keytool -import -v -trustcacerts -alias myServer -file caCert.cer -keystore truststore.ks

Nell'esempio viene utilizzato un file denominato "caCert.cer" come file di certificato. È necessario ottenere questo file di certificato dal server. I passaggi seguenti illustrano come esportare il certificato del server in un file:

  1. Fare clic sul pulsante Start, scegliere Esegui e digitare MMC. MMC è l'acronimo di Microsoft Management Console.
  2. In MMC, aprire Certificati.
  3. Espandere Personale, quindi Certificati.
  4. Fare clic con il pulsante destro del mouse sul certificato del server e selezionare Tutte leAttività\Esporta.
  5. Scegliere Avanti per passare alla pagina successiva a quella introduttiva dell'Esportazione guidata certificati.
  6. Verificare che sia selezionata l'opzione No, do not export the private key, quindi scegliere Avanti.
  7. Verificare che sia selezionata l'opzione Binario codificato DER X.509 (.CER) o Codificato Base 64 X.509 (.CER), quindi scegliere Avanti.
  8. Immettere un nome del file di esportazione.
  9. Scegliere Avanti, quindi Fine per esportare il certificato.

Vedi anche

Uso della crittografia
Protezione delle applicazioni del driver JDBC