رفع خطای اتصال به SQL Server: مشکل TrustServerCertificate

رفع خطای اتصال به SQL Server: مشکل TrustServerCertificate
فهرست مقاله [نمایش]

    رفع مشکل خطای اتصال به دیتابیس SQL Server

    در این مطلب می‌خواهیم درباره خطایی صحبت کنیم که هنگام اتصال به SQL Server ممکن است با آن روبرو شوید. اگر با EF Core کار می‌کنید یا مستقیم به دیتابیس وصل می‌شوید، شاید این مشکل برایتان پیش آمده باشد. این خطا به خاطر تغییراتی است که در نسخه‌های 7 دات نت و SQL Server ایجاد شد که ممکن است کمی گیج‌کننده باشد.

     نسخه NET 7. که منتشر شد، بسیاری از کاربران در شبکه‌های اجتماعی و بخش نظرات سایت ما، با ارسال این خطا، علت مشکل را می‌پرسیدند. در روزهای ابتدایی عرضه این نسخه، راهنمای مشخصی برای رفع این خطا وجود نداشت و بسیاری از کاربران دچار سردرگمی شده بودند. حتی حالا، با گذشت چند سال از معرفی این قابلیت، هنوز هم کاربرانی که تازه کار با  NET. را شروع کرده‌اند، به‌خصوص آن‌هایی که اتصال به دیتابیس را از آموزش‌های قدیمی‌تر یاد گرفته‌اند یا از کانکشن استرینگ‌های قدیمی کپی می‌کنند، با این مشکل مواجه می‌شوند.

    هدف ما از انتشار این مقاله، کمک به همین دسته از کاربران است؛ کسانی که در آغاز مسیر یادگیری هستند و نیاز دارند سریع و ساده این مشکل را برطرف کنند.

     

    خطا

    ممکن است هنگام اجرای EF Core یا تلاش برای اتصال، این پیام خطا را ببینید:

    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.)
    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.Data.SqlClient.SqlException: '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.)'

    این یعنی ارتباط برقرار شده، ولی در مرحله ورود مشکلی پیش آمده. مشکل؟ گواهینامه SSL توسط یک مرجع معتبر تأیید نشده است.

     

    چرا این خطا پیش می‌آید؟

    از نسخه .NET 7 به بعد، مقدار پیش‌فرض گزینه TrustServerCertificate به False تغییر کرده است. هدف از این تغییر افزایش امنیت است. در نسخه‌های قبلی، این مقدار True بود و به طور خودکار گواهینامه‌ها را قبول می‌کرد. با این تغییر، اگر گواهینامه معتبر نباشد، اتصال برقرار نمی‌شود.

    می‌توانید اطلاعات بیشتری درباره این ویژگی را در لینک زیر مطالعه کنید:
    https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-7.0/breaking-changes?tabs=v7#new-behavior

     

    TrustServerCertificate چیست؟

    این گزینه می‌گوید آیا برنامه باید گواهینامه SSL سرور را تأیید کند یا نه.

    وقتی True باشد، برنامه بررسی نمی‌کند و اتصال برقرار می‌شود.

    وقتی False باشد، برنامه بررسی می‌کند. اگر گواهینامه مشکل داشته باشد، اتصال رد می‌شود.

    چطور این خطا را رفع کنیم؟

    روش سریع

    برای رفع سریع، مقدار TrustServerCertificate را در کانکشن استرینگ به True تغییر دهید. مثل این:

    Server=your_server_name;Database=your_database_name;User Id=your_username;Password=your_password;TrustServerCertificate=True;

    🚫این روش مشکل را حل می‌کند ولی امن‌ترین راه نیست.

    روش اصولی

    اگر امنیت برایتان مهم است (که باید باشد!)، این مراحل را انجام دهید:

    تهیه گواهینامه:

    برای سرور لوکال یا تست،میتوانید از همین روش استفاده کنید.

    اما برای سرور پروداکشن، یک گواهینامه معتبر از یک مرجع گواهینامه (CA) تهیه کنید.

    نصب گواهینامه روی سرور:

    گواهینامه را روی سرور نصب کنید و مطمئن شوید آماده استفاده است.

    فعال کردن ارتباط امن:

    در SQL Server Configuration Manager، گزینه Force Encryption را فعال کنید.

     

    تنظیمات در SQL Server Management Studio (SSMS)

    اگر با SSMS کار می‌کنید و این مشکل را دارید، می‌توانید گزینه "Trust server certificate" را فعال کنید. :

    وارد SSMS شوید.

    در صفحه اتصال به سرور.

    گزینه Trust server certificate را فعال کنید.

    این روش کارتان را راه می‌اندازد، ولی باز هم بهتر است از گواهینامه‌های معتبر استفاده کنید.

     

     

    خطای  The certificate chain was issued by an authority that is not trusted نشان‌دهنده تلاش برای امن‌تر کردن ارتباطات در NET. و SQL Server است. اگر عجله دارید، می‌توانید از روش سریع TrustServerCertificate=True  استفاده کنید، اما توصیه ما استفاده از گواهینامه معتبر است.

    ارتباط امن‌تر یعنی داده‌های شما بهتر محافظت می‌شوند و حملات امنیتی سخت‌تر می‌شوند. به همین دلیل ارزشش را دارد که این مراحل را طی کنید.

    اطلاعات نویسنده
    • نویسنده: احسان بابائی

    ارسال دیدگاه

    برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربری‌تان شوید


    دیدگاه کاربران


    آموزش پیشنهادی باگتو


    course image

    ستارگان Asp.Net Core

    8,990,000 تومان


    اطلاعات بیشتر

    این مقالات را هم بخوانید!