Technical Anshu หน้าแรก > บทช่วยสอน > ข้อผิดพลาดในการเข้ารหัสเซิร์ฟเวอร์ SQL
🔐 แก้ไขเซิร์ฟเวอร์ SQL

แก้ไขข้อผิดพลาดการเข้ารหัสเซิร์ฟเวอร์ SQL - โซลูชันเพียงคลิกเดียว

เชื่อมต่อ SQL Server แล้วปฏิเสธการเข้าสู่ระบบเนื่องจากไม่สามารถเชื่อถือใบรับรองของเซิร์ฟเวอร์ได้ นี่ไม่ใช่ปัญหาเครือข่ายและข้อมูลของคุณไม่ได้หายไป แต่เป็นปัญหาด้านความน่าเชื่อถือ ดำเนินการแก้ไขตามลำดับที่วิดีโอแสดง: ตัวเลือกฝั่งไคลเอ็นต์ด่วน สวิตช์เดียวกันภายในสตริงการเชื่อมต่อแอป และการแก้ไขที่เหมาะสมบนเซิร์ฟเวอร์

✍️ Technical Anshu🔐 SQL Server🎧 Multi-Language Audio
แก้ไขข้อผิดพลาดการเข้ารหัสเซิร์ฟเวอร์ SQL - โซลูชันเพียงคลิกเดียว
🎧 เสียงหลายภาษา: ในโปรแกรมเล่นวิดีโอ คลิก [การตั้งค่า] (⚙️) ➔ [แทร็กเสียง] เพื่อเลือกภาษาที่คุณต้องการ

📑บทต่างๆ

  1. ข้อผิดพลาดในการเข้าสู่ระบบ - "สายใบรับรองออกโดยหน่วยงานที่ไม่น่าเชื่อถือ"
  2. ข้อผิดพลาดหมายถึงอะไรจริงๆ - ต้องมีการเข้ารหัส ใบรับรองของเซิร์ฟเวอร์ไม่สามารถพิสูจน์ตัวตนได้
  3. การแก้ไขไคลเอ็นต์อย่างรวดเร็ว - ใบรับรองเซิร์ฟเวอร์ที่เชื่อถือได้ในหน้าต่างการเชื่อมต่อ SSMS
  4. การแก้ไขเดียวกันภายในสตริงการเชื่อมต่อแอปพลิเคชัน
  5. การแก้ไขที่ถูกต้อง - ทำให้เซิร์ฟเวอร์ได้รับใบรับรองจริงที่ลูกค้าเชื่อถือด้วยตนเอง
  6. ยืนยันการแก้ไข - เชื่อมต่ออีกครั้งด้วยวิธีที่เข้มงวดและพิสูจน์ว่าการเข้ารหัสเปิดอยู่จริง

📋 ภาพรวมและคำแนะนำทีละขั้นตอน

1

อ่านข้อผิดพลาด - มันเป็นปัญหาความน่าเชื่อถือ ไม่ใช่ปัญหาเครือข่าย

เครือข่ายของคุณใช้งานได้ปกติ และเซิร์ฟเวอร์กำลังทำงานอยู่ การเชื่อมต่อไปถึง SQL Server เซิร์ฟเวอร์เสนอช่องทางที่เข้ารหัสสำหรับการเข้าสู่ระบบ และพีซีของคุณปฏิเสธเนื่องจากใบรับรองที่พิสูจน์ตัวตนของเซิร์ฟเวอร์นั้นลงนามโดยไม่มีใครที่พีซีของคุณเชื่อถือ SSMS ข้อผิดพลาดแบบเต็มแสดงคือ:

📌 ข้อผิดพลาดตรงตามที่ SSMS แสดง: "สร้างการเชื่อมต่อกับเซิร์ฟเวอร์สำเร็จแล้ว แต่เกิดข้อผิดพลาดระหว่างกระบวนการเข้าสู่ระบบ (ผู้ให้บริการ: ผู้ให้บริการ SSL ข้อผิดพลาด: 0 - สายใบรับรองออกโดยหน่วยงานที่ไม่น่าเชื่อถือ)"

ตามค่าเริ่มต้น SQL Server จะป้องกันการเข้าสู่ระบบด้วยใบรับรองที่ลงนามด้วยตนเองที่เซิร์ฟเวอร์สร้างขึ้นเอง ใบรับรองที่ลงนามด้วยตนเองจะเข้ารหัสการรับส่งข้อมูล แต่ไม่สามารถพิสูจน์ได้ว่าเซิร์ฟเวอร์คือเซิร์ฟเวอร์ของคุณจริงๆ ดังนั้นไคลเอนต์ที่ต้องการการเข้ารหัสที่ตรวจสอบแล้วจึงปฏิเสธใบรับรองนั้น การแก้ไขอย่างตรงไปตรงมาทุกครั้งคือหนึ่งในสองสิ่ง: ทำให้ไคลเอ็นต์ยอมรับเซิร์ฟเวอร์นี้โดยเจตนา (ขั้นตอนที่ 2 และ 3) หรือมอบใบรับรองที่ไคลเอ็นต์เชื่อถือด้วยตนเอง (ขั้นตอนที่ 4)

2

Quick Client Fix ใน SSMS - ใบรับรองเซิร์ฟเวอร์ที่เชื่อถือได้

นี่คือเส้นทางด่วนที่แสดงในวิดีโอ มันไม่เปลี่ยนแปลงอะไรเลยบนเซิร์ฟเวอร์ มันบอกให้การเชื่อมต่อนี้ยอมรับใบรับรองของเซิร์ฟเวอร์โดยไม่ตรวจสอบว่าใครเป็นผู้ลงนาม ในหน้าต่าง SSMS เชื่อมต่อกับเซิร์ฟเวอร์ คลิก ตัวเลือก เพื่อเปิดแท็บพิเศษ ไปที่แท็บ คุณสมบัติการเชื่อมต่อ ตั้งค่าการเข้ารหัสเป็น บังคับ (หรือปล่อยไว้ตามที่เสนอ) ทำเครื่องหมาย เชื่อถือใบรับรองเซิร์ฟเวอร์ และคลิก เชื่อมต่อ การเข้าสู่ระบบจะต้องผ่านทันที

⚠️ รู้ว่าช่องทำเครื่องหมายปิดอะไร: การรับส่งข้อมูลจะยังคงถูกเข้ารหัส แต่การตรวจสอบตัวตนจะถูกข้ามไป - ไคลเอนต์ก็จะยอมรับเซิร์ฟเวอร์ปลอมที่วางอยู่ระหว่างนั้นด้วย บน LAN สำนักงานของคุณเอง สำหรับเซิร์ฟเวอร์ที่คุณควบคุม นี่เป็นวิธีแก้ปัญหาแบบวันต่อวันที่ยอมรับได้ และในการพัฒนาและทดสอบเครื่อง ถือเป็นการค้าที่ยุติธรรม ผ่านทางอินเทอร์เน็ตหรือบนเซิร์ฟเวอร์ที่ใช้งานจริงที่เก็บข้อมูลลูกค้า ให้ถือว่าเป็นบริดจ์ชั่วคราวเท่านั้น และทำงานให้เสร็จสิ้นด้วยขั้นตอนที่ 4 มันเป็นบริดจ์ ไม่ใช่ปลายทาง
3

การแก้ไขเดียวกันภายในสตริงการเชื่อมต่อแอป

หากแอปพลิเคชันล้มเหลวแทนที่จะเป็น SSMS สวิตช์เดียวกันนั้นจะอยู่ในสตริงการเชื่อมต่อ เพิ่มการตั้งค่าทั้งสองอย่างชัดเจน - Encrypt=True เปิดช่องทางที่ได้รับการป้องกัน และ TrustServerCertificate=True เป็นการสะกดสตริงการเชื่อมต่อของช่องทำเครื่องหมาย SSMS:

Connection String
Server=SQL01;Database=AppDB;User Id=appuser;Password=YourPassword;Encrypt=True;TrustServerCertificate=True;

ใช้ชื่อเซิร์ฟเวอร์ ฐานข้อมูล และการเข้าสู่ระบบของคุณเองแทนค่าตัวอย่าง ข้อเสียเปรียบจะเหมือนกับช่องทำเครื่องหมายในขั้นตอนที่ 2 ทุกประการ โดยมีอันตรายเพิ่มเติมประการหนึ่ง นั่นคือ เมื่อรวมเข้ากับการกำหนดค่าของแอปพลิเคชันที่จัดส่ง เช็คที่ข้ามไปจะมีผลกับผู้ใช้ทุกคน โดยมองไม่เห็นและถาวร เก็บไว้ในการกำหนดค่าการพัฒนาและการจัดเตรียม และในการใช้งานจริงถือเป็นเวลาที่ยืมมาจนกว่าจะมีใบรับรองเซิร์ฟเวอร์ในขั้นตอนที่ 4

📌 เหตุใดแอปจึงพังโดยไม่ต้องสร้างใหม่: ไดรเวอร์ล่าสุดเปลี่ยนค่าเริ่มต้น - Microsoft.Data.SqlClient 5.1 และใหม่กว่า และไดรเวอร์ ODBC 18 เปิด เข้ารหัส เป็นค่าเริ่มต้น สตริงการเชื่อมต่อที่ไม่เคยกล่าวถึงการเข้ารหัสเริ่มเรียกร้องกับเซิร์ฟเวอร์ที่มีใบรับรองที่ลงนามเองไม่สามารถผ่านการตรวจสอบได้ ไม่มีการเปลี่ยนแปลงเกี่ยวกับฐานข้อมูลของคุณ สัญญาภายในสตริงทำ การเขียนการตั้งค่าอย่างชัดเจนหมายความว่าการอัปเดตไดรเวอร์ครั้งถัดไปไม่สามารถเปลี่ยนพฤติกรรมของแอปของคุณด้านหลังได้
4

การแก้ไขที่เหมาะสม - มอบใบรับรองจริงแก่เซิร์ฟเวอร์

การซ่อมแซมแบบถาวรจะเกิดขึ้นเพียงครั้งเดียวบนเซิร์ฟเวอร์ และหลังจากนั้นไคลเอ็นต์ทุกเครื่องจะเชื่อมต่ออย่างเคร่งครัดโดยไม่มีช่องทำเครื่องหมายและไม่มีคำเตือน ขั้นแรก ให้รับใบรับรองสำหรับชื่อ DNS แบบเต็มของเซิร์ฟเวอร์ (เช่น sql01.company.local) จากผู้ออกใบรับรองภายในของคุณหรือ CA สาธารณะ พร้อมการใช้งาน การตรวจสอบสิทธิ์เซิร์ฟเวอร์ นำเข้าพร้อมคีย์ส่วนตัวไปยังที่เก็บใบรับรอง Local Computer บนเครื่อง SQL Server จากนั้นคลิกขวาที่ใบรับรอง เลือก งานทั้งหมด → จัดการคีย์ส่วนตัว และให้สิทธิ์ อ่าน แก่บัญชีบริการ SQL Server บนคีย์ส่วนตัว เปิด SQL Server Configuration Manager ขยาย SQL Server Network Configuration คลิกขวาที่ Protocols for MSSQLSERVER เลือก Properties และเลือกใบรับรองบนแท็บ Certificate บนแท็บ ธง คุณยังสามารถตั้งค่า ForceEncryption เป็น ใช่ เพื่อให้ไคลเอ็นต์ทุกเครื่องจำเป็นต้องเข้ารหัส เริ่มบริการ SQL Server ใหม่ - การเปลี่ยนแปลงจะไม่ทำอะไรเลยจนกว่าคุณจะดำเนินการ

✅ กับดักทั้งสองที่ทำให้ "ใช้งานไม่ได้" เกือบทั้งหมด: ใบรับรองที่มีชื่อไม่ตรงกับชื่อที่ลูกค้าเชื่อมต่อ (เชื่อมต่อด้วยชื่อ DNS ของเซิร์ฟเวอร์ ไม่ใช่ที่อยู่ IP) และบัญชีบริการที่ไม่สามารถอ่านรหัสส่วนตัวได้ หลังจากรีสตาร์ท บันทึกข้อผิดพลาดของ SQL Server ควรบันทึกว่าใบรับรองได้รับการโหลดสำหรับการเข้ารหัสสำเร็จแล้ว หากมีปัญหาแทน สิทธิ์การใช้คีย์ส่วนตัวจะเป็นที่แรกที่ต้องค้นหา
⚠️ เกี่ยวกับ ForceEncryption: การตั้งค่าเป็น ใช่ บนเซิร์ฟเวอร์จะบังคับใช้การเข้ารหัสสำหรับทุกการเชื่อมต่อ - ซึ่งเป็นสถานะด้านขวาสุดเมื่อมีการติดตั้งใบรับรองที่เชื่อถือได้เท่านั้น การบังคับในขณะที่เซิร์ฟเวอร์ยังคงมีใบรับรองที่ลงนามด้วยตนเองจะทำให้ไคลเอนต์ที่เข้มงวดทุกตัวล้มเหลวด้วยข้อผิดพลาดเดียวกันนี้ในคราวเดียว
5

ตรวจสอบการแก้ไขด้วยวิธีที่เข้มงวด

การเข้าสู่ระบบที่ประสบความสำเร็จอย่างเงียบๆ พิสูจน์ได้น้อยกว่าที่ผู้คนคิด เนื่องจากชุดค่าผสมการตั้งค่าบางอย่างเชื่อมต่อกันโดยไม่มีการป้องกันที่แท้จริง พิสูจน์ทั้งสองครึ่ง ขั้นแรก เชื่อมต่อใหม่จากไคลเอ็นต์ด้วยวิธีที่เข้มงวด: เชื่อมต่อโดยใช้ชื่อ DNS ของเซิร์ฟเวอร์ - ชื่อภายในใบรับรอง - ตั้งค่าการเข้ารหัสเป็นบังคับ และปล่อย ใบรับรองเซิร์ฟเวอร์ที่เชื่อถือได้ ไว้โดยไม่เลือก การเข้าสู่ระบบควรสำเร็จโดยไม่มีคำเตือน จากนั้น ในเซสชันเดียวกันนั้น ให้ถามเซิร์ฟเวอร์ว่าการเชื่อมต่อได้รับการเข้ารหัสจริงหรือไม่โดยการเรียกใช้แบบสอบถามนี้ใน SSMS:

SQL Query
SELECT session_id, encrypt_option, auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID;

encrypt_option ที่แสดง TRUE คือเกรดที่ผ่าน FALSE ด้วยการเข้าสู่ระบบที่ใช้งานได้หมายความว่าการเชื่อมต่อสำเร็จโดยการลดการป้องกัน และงานยังไม่เสร็จสิ้น การทดสอบที่ผ่านนั้นคือเส้นชัยที่แท้จริง ไคลเอนต์ที่กำหนดค่าอย่างถูกต้อง รวมถึงเวอร์ชัน SSMS ในอนาคต ตอนนี้เชื่อมต่อกับการตรวจสอบความถูกต้องเต็มรูปแบบและไม่มีการตั้งค่าพิเศษ

🏷️ตัวแปรการค้นหาหัวข้อและคำหลัก

🔍 SQLServer 🔍 CertificateNotTrusted 🔍 TrustServerCertificate 🔍 SSMS 🔍 ForceEncryption 🔍 TechnicalAnshu 🔍 SQL Server Encryption Error 🔍 Certificate Chain Not Trusted 🔍 Encrypt Connection 🔍 Connection String Fix 🔍 SQL Server Configuration Manager 🔍 SSL Provider Error
🎙️ บทถอดเสียงฉบับเต็ม — แตะเพื่อขยาย

__TOK_24__

__TOK_25__

__TOK_26__

❓คำถามที่พบบ่อย

บทช่วยสอนนี้ติดตามฟรี 100% หรือไม่

__TOK_27__

ผู้เริ่มต้นสามารถปฏิบัติตามคำแนะนำนี้ได้หรือไม่?

__TOK_28__

ฉันจะถามคำถามได้ที่ไหนหากฉันติดขัด?

__TOK_29__

🚀 ดูการฝึกสอนแบบเต็มบน YouTube

__TOK_30__

__TOK_31__

▶️ ดูวิดีโอเต็ม
บทช่วยสอนนี้อ้างอิงจากวิดีโอแก้ไขข้อผิดพลาดการเข้ารหัสเซิร์ฟเวอร์ SQL ของ Technical Anshu • ติดอยู่ในขั้นตอนใดหรือไม่ ถามในความคิดเห็นของวิดีโอ — คุณจะได้รับความช่วยเหลือที่นั่น 🙏