دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
کنترل Message Queuing در سی شارپ
1404/08/11 -
نرم افزار ssms چیست؟
1404/08/10 -
کنترل linkLabel در سی شارپ
1404/08/09 -
کنترل imageList در سی شارپ
1404/08/08 -
کنترل FolderBrowserDialog در سی شارپ
1404/08/07
آموزش فعال سازی Tlsدر Sql Server
مقدمه
در دنیای امروز، امنیت دادهها یکی از اصلیترین دغدغههای مدیران و توسعهدهندگان پایگاهداده است.
زمانی که شما از Microsoft SQL Server استفاده میکنید، فعالسازی و استفاده از پروتکل TLS (Transport Layer Security) میتواند تضمین کند ارتباطات بین سرویسدهندهی SQL و کلاینتها با رمزنگاری انجام میشود.
مفهوم فعال سازی TLS در SQL Server
فعالسازی TLS در SQL Server به معنای راهاندازی ارتباط رمزنگاریشده بین سرور دیتابیس و کلاینتها است تا تمامی دادههای منتقلشده از جمله نامکاربری، رمزعبور و نتایج کوئری، تحت پوشش امنیتی قرار گیرند.
در ادامه، به این میپردازیم که چرا این موضوع اهمیت دارد و چه شرایطی لازم است.
چرا فعال سازی TLS مهم است؟
در دنیای امروز که حملات سایبری و سرقت دادهها به شدت افزایش یافته، رمزنگاری ارتباطات بین سرور و کلاینت به یک ضرورت امنیتی تبدیل شده است.
فعالسازی TLS در SQL Server باعث میشود دادهها هنگام انتقال بهصورت رمزنگاریشده جابهجا شوند و هیچ فرد یا نرمافزاری نتواند محتوای آنها را شنود یا تغییر دهد.
1. امنیتِ بیشتر
با رمزنگاری دادههای منتقلشده بین سرور و کلاینت، خطر شنود یا جعل ارتباط کاهش مییابد.
2. انطباق با استانداردها
نسخههای جدید SQL Server پشتیبانی از TLS ۱٫۲ و TLS ۱٫۳ را دارند، زیرا نسخههای قدیمیتر مثل SSL یا TLS ۱٫۰ ناامن محسوب میشوند.
3. اعتمادسازی برای کاربران و سیستمها
زمانی که ارتباطات پایگاهداده شما امن باشد، مشتریان و سرویسهای وابسته نیز اطمینان بیشتری خواهند داشت.
شرایط و پیشنیازها برای فعال سازی TLS در SQL Server
پیش از فعالسازی TLS باید اطمینان حاصل کنید که زیرساختهای نرمافزاری و سختافزاری محیط پایگاهداده از این پروتکل پشتیبانی میکنند.
در این مرحله، بررسی نسخه SQL Server، سیستمعامل و نصب گواهی SSL معتبر از الزامات اولیه محسوب میشود.
1. نسخهی SQL Server
نسخههایی از SQL Server که از TLS ۱٫۲ به بالا پشتیبانی میکنند، باید نصب آپدیتهای لازم را داشته باشند.
2. سیستم عامل و کتابخانهها
سیستم عامل ویندوز یا لینوکسی که SQL Server روی آن اجرا میشود، باید پروتکلهای TLS را فعال کرده باشد.
3. گواهینامه (Certificate)
باید یک گواهینامه معتبر بر روی سرور نصب شده باشد که شامل کلید خصوصی باشد و سرویس SQL بتواند به آن دسترسی داشته باشد.
مزایای فعالسازی TLS در SQL Server
فعالسازی TLS در SQL Server فراتر از اجرای چند دستور فنی ساده است و در واقع یک گام کلیدی برای افزایش امنیت کل زیرساخت دیتابیس محسوب میشود.
با پیادهسازی صحیح این پروتکل، دادهها هنگام انتقال بین سرور و کلاینتها بهصورت رمزنگاریشده محافظت میشوند و خطر نفوذ یا شنود اطلاعات حساس به حداقل میرسد.
با این کار، اطمینان حاصل میشود که ارتباطات SQL Server امن و قابل اعتماد هستند و سازمان از نظر سیاستهای امنیتی و استانداردهای داخلی نیز مطابقت دارد.
پیادهسازی TLS علاوه بر حفظ امنیت، باعث افزایش اعتماد کاربران و سرویسهای وابسته به دیتابیس و کاهش احتمال حملات شبکهای میشود.
- جلوگیری از شنود دادهها در مسیر شبکه
- افزایش اعتماد بین سرویسها و کلاینتها
- مطابقت با سیاستها و استانداردهای امنیتی سازمانی
- کاهش ریسک نفوذ یا هک از مسیر ارتباط شبکه
- بهبود وضعیت امنیتی و احتمالاً ارتقای رتبه امنیتی کلی سازمان

نحوه ایجاد و فعال سازی TLS در SQL Server
فعالسازی TLS در SQL Server شامل چند گام اصلی است: نصب گواهینامه، تنظیم SQL Server برای استفاده از آن، و در نهایت بررسی و اطمینان از اینکه ارتباطات با موفقیت رمزنگاری میشوند.
۱ – نصب و تهیه گواهینامه مناسب
اولین مرحله در فعالسازی TLS برای SQL Server، تهیه و نصب یک گواهینامهی امن و معتبر است.
این گواهینامه در واقع پایهی ارتباط رمزنگاریشده بین کلاینت و سرور محسوب میشود و اگر بهدرستی انتخاب و پیکربندی نشود، کل فرآیند امنیتی را بیاثر میکند.
در ادامه انواع گواهینامه و نحوه نصب صحیح آن را بررسی میکنیم.
1. انتخاب نوع گواهینامه
در این مرحله باید مشخص شود که گواهینامه از یک مرجع صدور معتبر (CA) دریافت میشود یا بهصورت Self-Signed برای محیطهای آزمایشی ساخته خواهد شد.
انتخاب درست در این بخش مستقیماً بر اعتماد سرویسها و پایداری ارتباط امن تأثیر میگذارد.
- گواهینامه صادرشده توسط CA معتبر
- یا برای محیط تست، استفاده از گواهینامه Self-Signed
2. شرایط گواهینامه برای SQL Server
هر گواهینامهی مورد استفاده در SQL Server باید ویژگیهای مشخصی داشته باشد تا توسط سرویس SQL به رسمیت شناخته شود.
این ویژگیها تضمین میکنند که ارتباط TLS بهدرستی برقرار شده و خطاهای امنیتی یا هشدارهای مربوط به هویت سرور نمایش داده نشوند.
- Subject یا CN باید نام کامل دامنه (FQDN) یا اسم سرویس SQL باشد.
- حداقل کلید RSA ۲۰۴۸ بیت و الگوریتم قوی (مانند SHA-256) داشته باشد.
- Extended Key Usage (EKU) شامل گزینهی Server Authentication باشد.
3. نصب گواهینامه بر روی سرور
پس از تهیه گواهینامه، باید آن را در محیط ویندوز نصب و در اختیار سرویس SQL Server قرار دهید.
نصب صحیح در مسیر درست و تعیین سطح دسترسی مناسب برای کلید خصوصی از مهمترین نکاتی است که در این بخش باید رعایت شود.
- وارد MMC ویندوز شده و Snap-in Certificates برای Computer Account اضافه کنید.
- گواهینامه را در بخش Personal Store وارد نمایید.
- سرویس account مربوط به SQL Server باید دسترسی خواندن به کلید خصوصی گواهینامه داشته باشد.
۲ – تنظیم SQL Server برای استفاده از گواهینامه
پس از نصب موفق گواهینامه، حال نوبت آن است که SQL Server را به گونهای تنظیم کنید تا از این گواهینامه برای رمزنگاری ارتباطات خود استفاده کند.
این بخش شامل انتخاب گواهینامه صحیح، فعالسازی رمزنگاری اجباری و در نهایت راهاندازی مجدد سرویس است تا تنظیمات جدید اعمال شوند.
اجرای دقیق این مرحله تضمین میکند که تمامی کانالهای ارتباطی شما بهصورت امن برقرار شوند.
1. انتخاب گواهینامه در SQL Server Configuration Manager
در این مرحله باید مشخص کنید که SQL Server از کدام گواهینامه نصبشده برای رمزنگاری ارتباطات استفاده کند.
انتخاب گواهینامه اشتباه یا ناقص میتواند باعث بروز خطای اتصال یا عدم شناسایی هویت سرور شود، بنابراین دقت در این بخش حیاتی است.
- در SQL Server Configuration Manager به بخش SQL Server Network Configuration بروید.
- در تب Certificate، گواهینامه نصبشده را از لیست انتخاب کنید.
2. فعالسازی گزینه Force Encryption
برای اطمینان از اینکه تمام ارتباطات بهصورت رمزنگاریشده برقرار شوند، باید گزینهی Force Encryption را فعال کنید.
این گزینه به SQL Server دستور میدهد که تنها در صورتی ارتباط را برقرار کند که کلاینت نیز از TLS پشتیبانی کند، در نتیجه امنیت در سطح پروتکل تضمین میشود.
- در مسیر Protocols for <instance> → Flags، گزینه Force Encryption را روی Yes قرار دهید.
- در نسخههای جدید SQL Server مانند SQL Server 2022، گزینهی Strict Encryption نیز در دسترس است که سطح امنیتی بالاتری فراهم میکند.
3. راهاندازی مجدد سرویس SQL Server
برای اعمال تغییرات امنیتی در تنظیمات TLS، باید سرویس SQL Server را مجدداً راهاندازی کنید.
بدون این کار، تنظیمات جدید فعال نخواهند شد و ارتباط همچنان بهصورت رمزنگارینشده برقرار میشود.
پس از انجام تغییرات، سرویس SQL Server را ریاستارت کنید تا پیکربندی جدید فعال شود.
۳ – تنظیمات کلاینت و آزمون ارتباط
پس از پیکربندی موفق سرور، لازم است اطمینان حاصل شود که کلاینتها نیز از همان تنظیمات TLS پیروی میکنند.
در واقع، اگر سمت کلاینت بهدرستی تنظیم نشود، ارتباط رمزنگاریشده برقرار نخواهد شد.
این مرحله شامل اصلاح Connection String و بررسی صحت برقراری ارتباط امن بین کلاینت و SQL Server است.
1. تنظیم رشته اتصال (Connection String)
برای فعالسازی TLS از سمت کلاینت، باید پارامترهای مربوط به رمزنگاری در رشته اتصال مشخص شوند.
این تنظیمات تعیین میکنند که ارتباط صرفاً در حالت رمزنگاریشده برقرار شود و از گواهینامهی سرور برای احراز هویت استفاده گردد.
در صورتی که از گواهینامهی Self-Signed یا صادرشده توسط CA داخلی استفاده شود، نیاز به تنظیم خاصی برای اعتمادسازی وجود دارد.
- در رشته اتصال کلاینت، گزینهی Encrypt=true را فعال کنید تا تبادل دادهها رمزنگاری شود.
- اگر گواهینامه از CA داخلی یا Self-Signed است، مقدار TrustServerCertificate=true را نیز اضافه کنید تا کلاینت بتواند به سرور اعتماد کند.
2. آزمون ارتباط رمزنگاریشده
پس از انجام تنظیمات، باید صحت برقراری ارتباط امن بین کلاینت و SQL Server بررسی شود.
این مرحله کمک میکند تا از عملکرد صحیح TLS و جلوگیری از بازگشت به حالت رمزنگارینشده اطمینان حاصل کنید.
استفاده از ابزارهای مانیتورینگ یا رخدادهای SQL، دقیقترین راه برای تأیید موفقیت ارتباط امن است.
- با بهرهگیری از Extended Events یا ابزارهای مانیتورینگ SQL بررسی کنید که اتصالها از طریق TLS برقرار میشوند.
- در صورت استفاده از نسخههای قدیمیتر SQL Server یا درایورهای کلاینت، ممکن است ارتباط بهدلیل ناسازگاری TLS بسته شود.
مثالهای کاربردی با کد در فعالسازی TLS در SQL Server
در این قسمت چند مثال واقعی آورده شده تا بتوانید فعالسازی TLS را بهصورت عملی پیادهسازی کنید. این کدها شامل ایجاد گواهینامه، تنظیم SQL Server و بررسی رمزنگاری ارتباط هستند.
1. ایجاد گواهینامه Self-Signed در ویندوز با PowerShell
برای محیطهای تست یا توسعه، میتوانید گواهینامهای خودامضا (Self-Signed) با PowerShell بسازید:
# ایجاد گواهینامه خودامضا برای SQL Server
New-SelfSignedCertificate `
-DnsName "sqlserver01.contoso.com" `
-CertStoreLocation "Cert:\LocalMachine\My" `
-KeyLength 2048 `
-FriendlyName "SQLServerTLSCert" `
-KeyExportPolicy Exportable `
-Provider "Microsoft Enhanced RSA and AES Cryptographic Provider"
توضیح دستورات
مقدار DnsName باید با نام واقعی سرور SQL مطابقت داشته باشد.
گواهینامه در Store محلی سرور ذخیره میشود (LocalMachine\My).
پس از ساخت، باید SQL Server را طوری تنظیم کنید که از همین گواهینامه استفاده کند.
مثال ۲: انتخاب گواهینامه در SQL Server Configuration با PowerShell
اگر بخواهید گواهینامه را از طریق خط فرمان یا PowerShell به SQL Server اختصاص دهید، میتوانید از این دستور استفاده کنید:
# تنظیم گواهینامه برای SQL Server instance
$thumbprint = "A1B2C3D4E5F67890123456789ABCDEF12345678"
Set-ItemProperty `
-Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\SuperSocketNetLib" `
-Name "Certificate" `
-Value $thumbprint
# فعال کردن Force Encryption
Set-ItemProperty `
-Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\SuperSocketNetLib" `
-Name "ForceEncryption" `
-Value 1
توضیح دستورات
مقدار thumbprint$ را با شناسهی واقعی گواهینامه خود جایگزین کنید.
پس از اجرای این دستورات، باید سرویس SQL Server را ریاستارت کنید تا تغییرات اعمال شوند.
مثال ۳: بررسی رمزنگاری اتصال با کوئری T-SQL
میتوانید با اجرای کوئری زیر در SSMS بررسی کنید که آیا ارتباط کلاینت با TLS برقرار شده یا خیر:
SELECT
session_id,
encrypt_option AS EncryptionStatus,
net_transport,
protocol_type,
client_net_address
FROM sys.dm_exec_connections
WHERE session_id = @@SPID;
خروجی مورد انتظار
اگر ستون EncryptionStatus مقدار TRUE را برگرداند، یعنی ارتباط فعلاً از طریق TLS برقرار است.
مثال ۴: استفاده از TLS در رشته اتصال (Connection String)
در سمت برنامهنویس (مثلاً C)، برای اطمینان از رمزنگاری ارتباط باید پارامترهای Encrypt و TrustServerCertificate را در Connection String تنظیم کنید:
string connectionString =
"Server=sqlserver01.contoso.com;" +
"Database=SalesDB;" +
"User Id=admin;" +
"Password=StrongPass@123;" +
"Encrypt=True;" +
"TrustServerCertificate=False;";
نکات و چالشهای رایج فعال سازی Tlsدر Sql Server
حتی پس از فعالسازی TLS، ممکن است با چالشهایی مواجه شوید که آشنایی با آنها برای پیشگیری مفید است.
1. پشتیبانی کلاینتها
اگر کلاینت شما از درایور قدیمی SQL Native Client یا ODBC-Provider قدیمی استفاده کند، ممکن است نتواند با TLS ۱٫۲ ارتباط برقرار کند.
2. گواهینامه نامعتبر
اگر Subject یا CN گواهینامه با نام سرویس یا نام DNS مطابقت نداشته باشد، خطاهایی مانند The target principal name is incorrect ممکن است رخ دهد.
3. تأثیر بر کارایی
فعالسازی رمزنگاری ممکن است باعث افزایش بار پردازش شود؛ مثلا در مقاله MS گفته شده است که وقتی همه ترافیک رمزنگاری شود، Round-trip اضافی وجود دارد.
4. توجه به نسخههای پروتکل
ممکن است بخواهید پروتکلهای ناامن مثل TLS ۱٫۰ یا TLS ۱٫۱ را غیرفعال کنید؛ اما توجه داشته باشید که ممکن است کنکشنهایی که هنوز از آنها استفاده میکنند، با خطا مواجه شوند.
۵. محیط کلاستر یا Always On
در محیطهایی با سرویس در دسترس بالا (HA)، همه نودها باید گواهینامه را دریافت کنند و تنظیمات Force Encryption در همه آنها اعمال شود.

پرسشهای آموزش فعال سازی Tlsدر Sql Server
1. آیا فقط گواهینامه Self-Signed کافی است؟
گواهینامه Self-Signed برای محیط توسعه یا تست قابل قبول است، اما برای محیط تولید پیشنهاد میشود از گواهینامه صادرشده توسط CA معتبر استفاده کنید تا ریسکهای امنیتی کاهش یابد
2. آیا فعالسازی TLS روی عملکرد سرویس تأثیر دارد؟
بله، چون رمزنگاری و رمزگشایی انجام میشود، ممکن است بار پردازشی و زمان Round-trip کمی افزایش یابد.
این تأثیر معمولاً کم ولی قابل توجه در سیستمهای بزرگ است.
نتیجهگیری
فعالسازی TLS در SQL Server یکی از اقدامات حیاتی برای امنیت ارتباطات دیتابیس است.
با نصب گواهینامه مناسب، پیکربندی صحیح SQL Server، و اطمینان از تنظیمات کلاینت، میتوانید از ارتباطات رمزنگاریشده و امن بهرهمند شوید.
پیشنهاد میشود پس از فعالسازی، بهصورت دورهای وضعیت ارتباطات را بررسی و مانیتورینگ نمایید تا از عملکرد صحیح و امن بودن محیطتان مطمئن باشید.
دوره های مرتبط
آموزش پایگاه داده SqlServer
پایگاه داده Sqlserver یکی از پایگاه داده های مهم برای ذخیره اطلاعات محسوب میشود .
997,000 تومان
آموزش Attach کردن دیتابیس در SQL Server
آموزش داینامیک کردن کانکشن دیتابیس در نرم افزار های تجاری تحت ویندوز









