קביעת תצורה של הצפנת חיבור SSL ב- MS SQL Server


אם אתה משתמש ברשתות ציבוריות/לא מהימנות כדי לחבר לקוחות/יישומים למסד הנתונים של Microsoft SQL Server, מומלץ להשתמש בהצפנת תעבורה. בוא נראה כיצד להגדיר ולהפעיל הצפנת תעבורת SSL/TLS הכרחית עבור חיבור לקוח ל- Microsoft SQL Server.

ב- MS SQL 2016 ואילך, TLS משמש במקום SSL.

כדי לאפשר הצפנה עבור חיבור MS SQL Server, עליך להצטייד באישור TLS/SSL בשרת שלך. זה יכול להיות אישור מסחרי, אישור שהונפק על-ידי רשות האישורים שלך או אישור בחתימה עצמית. אישור TLS חייב לעמוד בדרישות הבאות:

  • שימוש משופר במפתח —

    Server Authentication 1.3.6.1.5.5.7.3.1

    ;

  • תאריך תפוגה תקף;

  • האישור חייב להיות ממוקם אצל המשתמש (

    certmgr.msc

    ) או מחשב (

    certlm.msc

    ) חנות תעודות;

  • האישור חייב לכלול את שם השרת שבו MSSQL פועל בשם הנושא שלו;

  • הלקוחות חייבים לתת אמון באישור.

באפשרותך ליצור אישור בחתימה עצמית באמצעות PowerShell (מומלץ להשתמש באישורים בחתימה עצמית בסביבות בדיקה בלבד):

New-SelfSignedCertificate -DnsName srvdb01.a-d.site -CertStoreLocation cert:\LocalMachine\My

אם בכוונתך לגשת למופע MSSQL שלך לא רק לפי שם מארח אלא גם לפי שמות אחרים (לדוגמה, אם מאזין קבוצת זמינות גבוהה הפועל תמיד עם מסד נתונים של מתווך חיבורים RDS ממוקם בשרת), הוסף את כל השמות הזמינים לשם החלופי נושא. כדי להנפיק אישור בחתימה עצמית עם רשתות SAN מרובות התקפות למשך שלוש שנים:

$curdate = Get-Date
$add3year = $curdate.AddYears(3)
$newcert=New-SelfSignedCertificate -DnsName srvdb01, srvdb01.a-d.loc,SQLRDDBCL.a-d.site -CertStoreLocation cert:\LocalMachine\My -notafter $add3year

יבא את האישור לרשימת האישורים המהימנים:

$certFile = Export-Certificate -Cert $newcert -FilePath C:\certname.cer
Import-Certificate -CertStoreLocation Cert:\LocalMachine\AuthRoot -FilePath $certFile.FullName

אם אתה משתמש באישור מרשות האישורים שלך או מרשות אישורים חיצונית, יבא אותו למאגר האישורים של המחשב (או למאגר אישורי המשתמש אם MS SQL Server פועל תחת חשבון משתמש או חשבון מנוהל gMSA). אם שירות SQL Server פועל תחת חשבון ללא הרשאות מנהל מקומיות, הענק לו הרשאות קריאה עבור האישור.

לאחר מכן אגד את האישור למופע SQL Server המותקן:

  1. הפעל את מנהל התצורה של SQL Server, עבור אל תצורת רשת של SQL Server ופתח את המאפיינים של פרוטוקולים עבור MSSQLSERVER;

  2. אפשר הצפנת כוח;

  3. עבור אל הכרטיסיה אישור ובחר את האישור שייבאת למשתמש או למאגר אישורי המחשב ברשימה הנפתחת;

  4. הפעל מחדש את MS SQL כדי להחיל את השינויים.

כדי לאלץ את הלקוח להשתמש תמיד בחיבור מוצפן לשרת MSSQL:

  • פתח את Server Configuration Manager ב- client -> SQL Native Client Configuration -> Properties -> להפעיל את Force Protocol Encryption.

  • באפשרותך גם להשתמש במחרוזת החיבור הבאה הגורמת ללקוח להשתמש ב- SSL/TLS כדי להתחבר לשרת MSSQL:

    Data Source=srvdb01.a-d.site;Integrated Security=False;User ID=test;Password=[Password];Encrypt=True

לקוחות חייבים לתת אמון באישור המשמש להצפנת תעבורה. אחרת, השגיאה הבאה תופיע בחיבור:

Cannot connect to SRVDB01.
A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - The certificate chain was issued by an authority that is not trusted.) (Microsoft SQL Server, Error: -2146893019).

באפשרותך להוסיף אישור לרשימת הבסיס המהימנה במחשבי תחום באמצעות GPO.

כדי לגרום ל- SQL Server Management Studio (SSMS) להשתמש תמיד בהצפנה כדי להתחבר למסד נתונים של SQL Server, פתח את חלון החיבור (התחבר לשרת) -> אפשרויות -> הפעל את האפשרות הצפן חיבור.

אם "

The target principal name is incorrect

השגיאה " מופיעה, ודא שאתה משתמש בשם SQL Server שצוין בשם הנושא או ב- SAN של האישור.

באפשרותך להתחבר ל- SQL Server באמצעות מודול PowerShell של SqlServer ולוודא אם SQL Server תומך בהצפנת חיבור:

Invoke-Sqlcmd -ServerInstance "srvdb01" -Query "SELECT DISTINCT encrypt_option FROM sys.dm_exec_connections WHERE session_id = @@SPID"

אם מופע SQL Server שלך אינו פועל ביציאת ברירת המחדל, t מצוין באופן הבא:

-ServerInstance "srvdb01,23223"

בדוגמה שלנו, SQL Server תומך בחיבורים מוצפנים (

encrypt_option=TRUE

).

מסדי נתונים של Azure SQL תומכים בחיבורים מוצפנים בלבד. גם אם האפשרות הצפן חיבור ב- SSMS אינה מסומנת, החיבור ל- Azure SQL יוצפן (עיין במאמר אבטחת מסד נתונים ב- Azure SQL).