Ha az SQL klienseink (például a fejlesztők Management Studioi) és az SQL szervereink nem egymás közelében helyezkednek el, akkor praktikus, ha az SQL Server által használt tabular data stream (TDS) protokoll alá SSL-t teszünk.
Első lépésként természetesen egy érvényes tanúsítványra lesz szükségünk. Fontos, hogy a tanúsítványon szereplő névnek pontosan meg kell egyeznie a szerver nevével. Az egyezést az SQL Server DNS lekérdezéssel ellenőrzi, ezért lehetőleg ne bonyolítsuk az életünket DNS aliasokkal vagy DNS utótag bűvészkedéssel. A másik fontos dolog, hogy a tanúsítvány megbízható kiadótól származzon, amiben a szerver és a kliens is megbízik.
A kész tanúsítványt importáljuk be a Local Computer account Personal Certificates tárába. Ezt legegyszerűbben úgy tehetjük meg, ha elindítjuk az MMC-t, hozzáadjuk a Certificates snap-int és a hozzáadáskor kapott kérdésre azt választjuk, hogy a Computer account érdekel minket. Ezek után a Personal\Certificates ágon a helyi menüben találjuk az Import menüpontot (katt a teljes képért):
A következő lépés, hogy az SQL Servert futtató felhasználói fióknak jogot adunk a tanúsítvány elérésére. Ehhez a jobb oldali panelen jelöljük ki a tanúsítványt, majd a helyi menüben válasszuk a All Tasks –> Manage Private Keys… menüpontot:
Eredményül egy szokásos ACL konfiguráló ablakot kapunk. Kattintsunk az Add gombra és válasszuk ki azt a fiókot, akinek a nevében az SQL Server instance-ünk fut. Az SQL Server 2012 már alapértelmezés szerint saját service account nevében fut, ezt NT Service\MSSQL$instanceneve formában adhatjuk meg, majd adjunk neki Read jogot (nem kell Full control!):
Indítsuk el az SQL Server Configuration Managert és navigáljunk el az SQL Server Network Configuration –> Protocols for [instance neve] ágig, majd nyissuk meg a hozzá tartozó Properties ablakot:
Kattintsunk át a második, Certificate fülre és válasszuk ki a használni kívánt tanúsítványt:
Ha nem jelenik meg a tanúsítvány a listában, akkor gond van, ellenőrizzük a tanúsítványt, a névfeloldást és a jogosultságokat.
Visszalépve az első, Flags fülre, a Force Enryption kapcsoló Yes-re állításával kikényszeríthetjük a titkosítást:
Ebben az esetben csak azok a kliensek tudnak majd a szerverhez kapcsolódni, akiknél a connection stringben szerepel az Encrypt=True; beállítás. Amennyiben a kliens SQL Server Management Studio, a titkosítást a Connection Properties fülön az Encrypt connection kapcsoló bejelölésével engedélyezhetjük:
A titkosítás működését ellenőrizhetjük Wiresharkkal, de akár az SQL Servertől is megkérdezhetjük, hogy melyik kapcsolat van titkosítva. Ehhez a sys.dm_exec_connections view encrypt_option oszlopa a hiteles forrás. Ezzel a lekérdezéssel a kapcsolat legfontosabb paramétereit tekinthetjük át:
SELECT session_id, net_transport, client_net_address, local_net_address,
local_tcp_port, auth_scheme, encrypt_option
FROM sys.dm_exec_connections
Ha az encrypt_option oszlopban TRUE-t látunk, megnyugodhatunk.