Condividi tramite


Crittografia delle connessioni a SQL Server

SQL Server supporta Secure Sockets Layer (SSL) ed è compatibile con Internet Protocol Security (IPSec).

SSL (Secure Sockets Layer)

MicrosoftMicrosoftSQL Server può utilizzare Secure Sockets Layer (SSL) per crittografare i dati trasmessi attraverso una rete tra un'istanza di SQL Server e un'applicazione client. La crittografia SSL viene eseguita a livello di protocollo ed è disponibile per tutti i client SQL Server ad eccezione dei client DB Library e MDAC 2.53.

È possibile utilizzare SSL per la convalida del server quando è necessaria la crittografia per una connessione client. Se l'istanza di SQL Server è in esecuzione in un computer a cui è stato assegnato un certificato da un'autorità di certificazione pubblica, l'identità del computer e dell'istanza di SQL Server viene garantita dalla catena di certificati che fanno riferimento all'autorità radice attendibile. In questo caso per la convalida del server è necessario che il computer in cui viene eseguita l'applicazione client sia configurato in modo da considerare attendibile l'autorità radice del certificato utilizzato dal server. È anche possibile utilizzare la crittografia con un certificato autofirmato, come descritto nella sezione successiva, sebbene un certificato autofirmato offra un livello di protezione limitato.

Il livello di crittografia utilizzato da SSL, a 40 bit o a 128 bit, varia a seconda della versione del sistema operativo Microsoft Windows in esecuzione nei computer delle applicazioni e dei database.

L'attivazione della crittografia SSL contribuisce alla protezione del traffico di dati in rete tra le istanze di SQL Server e le applicazioni, ma comporta un rallentamento delle prestazioni. Quando tutto il traffico tra SQL Server e un'applicazione client è crittografato con SSL, sono necessarie le operazioni di elaborazione aggiuntive seguenti:

  • Al momento della connessione è necessario un ulteriore round trip in rete.

  • I pacchetti inviati dall'applicazione all'istanza di SQL Server devono essere crittografati dalla libreria di rete client e decrittografati dalla libreria di rete server.

  • I pacchetti inviati dall'istanza di SQL Server all'applicazione devono essere crittografati dalla libreria di rete server e decrittografati dalla libreria di rete client.

Configurazione di SSL per SQL Server

Nella procedura seguente viene descritto come configurare SSL per SQL Server.

Per configurare SSL

  1. Installare un certificato nell'archivio certificati di Windows del server.

  2. Fare clic sul pulsante Start, quindi nel gruppo di programmi Microsoft SQL Server scegliere Strumenti di configurazione e infine fare clic su Gestione configurazione SQL Server.

  3. Espandere Configurazione di rete SQL Server, fare clic con il pulsante destro del mouse sui protocolli per il server desiderati e quindi scegliere Proprietà.

    [!NOTA]

    Questa è la sezione Protocolli per<nome_istanza> nel riquadro sinistro dello strumento e non corrisponde a un protocollo specifico nel riquadro destro.

  4. Nella scheda Certificato configurare il Motore di database in modo da utilizzare il certificato.

  5. Nella scheda Flag visualizzare o specificare l'opzione di crittografia del protocollo. Il pacchetto di accesso verrà sempre crittografato.

    • Quando l'opzione Forza crittografia per Motore di database è impostata su , tutte le comunicazioni client/server verranno crittografate e verrà negato l'accesso ai client che non supportano la crittografia.

    • Quando l'opzione Forza crittografia per Motore di database è impostata su No, l'applicazione client può richiedere la crittografia anche se tale funzionalità non è necessaria.

    • Dopo la modifica dell'impostazione di Forza crittografia, è necessario riavviare SQL Server.

    Le credenziali nel pacchetto di accesso trasmesse quando un'applicazione client si connette a SQL Server vengono sempre crittografate. SQL Server utilizzerà un certificato di un'autorità di certificazione attendibile, se disponibile. Se non viene installato un certificato attendibile, SQL Server genererà un certificato autofirmato all'avvio dell'istanza e lo utilizzerà per crittografare le credenziali. Questo certificato autofirmato aumenta il livello di protezione, ma non protegge contro lo spoof di identità da parte del server. Se viene utilizzato il certificato autofirmato e il valore dell'opzione Forza crittografia è , tutti i dati trasmessi attraverso una rete tra SQL Server e l'applicazione client verranno crittografati con il certificato autofirmato.

    Nota di attenzioneAttenzione

    Le connessioni SSL crittografate con un certificato autofirmato non offrono un livello di protezione elevato. Sono infatti soggette ad attacchi di tipo man-in-the-middle. Non è consigliabile affidarsi all'SSL utilizzando certificati autofirmati in un ambiente di produzione o su server connessi a Internet.

Requisiti per i certificati

Affinché un certificato SSL venga caricato da SQL Server, è necessario che vengano soddisfatte le condizioni seguenti:

  • Il certificato deve essere presente nell'archivio certificati del computer locale oppure nell'archivio certificati dell'utente corrente.

  • L'ora di sistema corrente deve essere successiva al valore della proprietà Valido dal del certificato e antecedente al valore della proprietà Valido fino al del certificato.

  • Il certificato deve essere destinato all'autenticazione del server. A tale scopo, è necessario che la proprietà Utilizzo avanzato chiave del certificato sia impostata su Autenticazione server (1.3.6.1.5.5.7.3.1).

  • Il certificato deve essere stato creato con l'opzione KeySpec di AT_KEYEXCHANGE. In genere, la proprietà del certificato relativa all'utilizzo della chiave (KEY_USAGE) include anche la crittografia della chiave (CERT_KEY_ENCIPHERMENT_KEY_USAGE).

  • La proprietà Soggetto del certificato deve specificare che il nome comune (CN, Common Name) corrisponde al nome host oppure al nome di dominio completo (FQDN, Fully Qualified Domain Name) del server. Se SQL Server viene eseguito in un cluster di failover, è necessario che il nome comune corrisponda al nome host oppure al nome FQDN del server virtuale e che i certificati siano disponibili in tutti i nodi del cluster di failover.

Crittografia in un cluster

Se si desidera utilizzare la crittografia in un cluster di failover, è necessario installare il certificato server contenente il nome DNS completo dell'istanza cluster di failover in tutti i nodi del cluster di failover. Se, ad esempio, sono presenti un cluster con due nodi denominati test1.your company.com e test2. your company.com e un'istanza cluster di failover di SQL Server denominata fcisql, è necessario ottenere un certificato per fcisql.your company.com e installarlo in entrambi i nodi. Per configurare il cluster di failover per la crittografia, è quindi possibile selezionare la casella di controllo ForceEncryption nella finestra delle proprietà Protocolli per <server> di Configurazione di rete SQL Server.

Internet Protocol Security (IPSec)

Per crittografare i dati di SQL Server durante la trasmissione, è possibile utilizzare IPSec, disponibile nei sistemi operativi client e server e non richiede alcuna configurazione di SQL Server. Per informazioni su IPSec, vedere la documentazione di Windows o relativa alle reti.