Chuỗi chứng chỉ được cấp bởi một cơ quan không đáng tin cậy khi kết nối DB trong VM Vai trò từ trang web Azure


189

Tôi gặp lỗi khi kết nối MY DB trong Vai trò VM (Tôi có Vai trò VM VM) từ Trang web Azure. Cả Vai trò VM và Trang web Azure đều ở khu vực phía Tây. Tôi đang đối mặt với vấn đề sau:

SqlException (0x80131904): Một kết nối đã được thiết lập thành công với máy chủ, nhưng sau đó đã xảy ra lỗi trong quá trình đăng nhập. (nhà cung cấp: Nhà cung cấp SSL, lỗi: 0 - Chuỗi chứng chỉ được cấp bởi cơ quan không đáng tin cậy.)]

Tôi có thể kết nối với DB của mình bằng SSMS. Cổng 1433 được mở trên vai trò VM của tôi. Có gì sai với kết nối của tôi?

Câu trả lời:


365

Bạn có thể không có chứng chỉ đã ký CA được cài đặt trong kho gốc đáng tin cậy của máy ảo SQL của bạn.

Nếu bạn có Encrypt=Truetrong chuỗi kết nối, hãy đặt thành tắt (không được khuyến nghị) hoặc thêm phần sau vào chuỗi kết nối:

TrustServerCertificate=True

SQL Server sẽ tạo chứng chỉ tự ký nếu bạn không cài đặt chứng chỉ để sử dụng, nhưng nó sẽ không được người gọi tin cậy vì nó không được ký CA, trừ khi bạn nói với chuỗi kết nối để tin tưởng bất kỳ chứng chỉ máy chủ nào mặc định.

Về lâu dài, tôi khuyên bạn nên tận dụng Let Encrypt để nhận chứng chỉ có chữ ký CA từ một CA đáng tin cậy đã biết miễn phí và cài đặt nó trên VM. Đừng quên thiết lập nó để tự động làm mới. Bạn có thể đọc thêm về chủ đề này trong sách SQL Server trực tuyến với chủ đề "Phân cấp mã hóa" và "Sử dụng mã hóa mà không cần xác thực".


1
xin lỗi, xấu của tôi, TTrusty_Connection = false đã được đặt trong chuỗi kết nối. thiết lập nó thực sự làm việc cho tôi. Thanx anyway
ZafarYousafi

1
@ZafarYousafi bạn nên đánh dấu câu trả lời này là chính xác.
Termato

5
Sẽ không tốt khi khuyên bạn cài đặt TrustServerCertificatethành true- điều này vô hiệu hóa việc kiểm tra chứng chỉ. Đó là không tốt hơn so với chỉ thiết Encryptđể false!
Matt Thomas

5
Lời khuyên đưa ra "TrustServerCertert = True" trong câu trả lời này có thể khiến vấn đề biến mất, nhưng đó là lời khuyên khủng khiếp. Khắc phục nguyên nhân, KHÔNG phải là triệu chứng. Phần khác của câu trả lời đề nghị cài đặt chứng chỉ CA đã ký là cách để đi.
Mitch Wheat

Trong các phiên bản mới hơn của SSMS, bạn tìm thấy một tùy chọn nhỏ gọi là "Chứng chỉ máy chủ tin cậy" trong tab "Thuộc tính kết nối". Kiểm tra cậu bé này có tác dụng tương tự như các lệnh được liệt kê ở trên.
gwynbleidd

82

Nếu bạn đang sử dụng SQL Management Studio, vui lòng goto thuộc tính kết nối và nhấp vào "Máy chủ tin cậy được chứng nhận" Nếu bạn đang sử dụng SQL Management Studio, vui lòng goto thuộc tính kết nối và nhấp vào "Máy chủ tin cậy được chứng nhận"


18
Đó không phải là một lời khuyên tồi cho mỗi người. Tôi sẽ nói rằng bạn có thể sử dụng nó khi bạn cần kết nối với máy chủ phát triển và thực hiện công việc của mình, chẳng hạn như mã hóa. Là một nhà phát triển phần mềm, tôi liên tục phải vật lộn với DevOps, những người không có thời gian để sửa chữa mọi thứ một cách nhanh chóng và tôi không thể lãng phí thời gian quý báu trước thời hạn. Cân nhắc phơi nhiễm dữ liệu tắt tùy chọn này phụ thuộc rất nhiều vào môi trường của bạn, nếu là cục bộ hoặc từ xa, cách quản trị viên thiết lập nó, hạn chế IP và có thể dễ dàng giảm thiểu bằng các cách giải quyết khác. Bạn không thể nói đó là một lời khuyên tồi mà không có một chút thông tin về cơ sở hạ tầng của bạn.
OrizG

Bạn vừa cứu ngày của tôi. Cảm ơn @ ct.tan
Milinda Wickramasinghe

@OrizG Tôi có SQL Server được cài đặt trên máy cục bộ và tôi sử dụng nó cho các dự án cá nhân. Hiện tại, tôi không muốn chi một xu với nó, vì vậy tôi đã có cho mình một máy chủ miễn phí và cố gắng định cấu hình máy chủ theo cách tôi ký chứng chỉ và trao đổi chúng giữa máy chủ và máy khách. sẽ được sử dụng để truy cập nó. Tuy nhiên, vì máy chủ miễn phí, tôi đã không quản lý để làm điều đó với Let Encrypt. Chính xác những nhược điểm của giải pháp này là gì, so với việc thực hiện trao đổi chứng chỉ đúng cách, với chứng chỉ CA đáng tin cậy đã ký?
ccoutinho

31

Nếu bạn đang thấy thông báo lỗi này khi cố gắng kết nối bằng SSMS, hãy thêm TrustServerCertificate=Truevào Thông số kết nối bổ sung.


23
Mitch, bạn đã thực hiện cùng một nhận xét về ba câu trả lời cho câu hỏi này. Nó có thể hữu ích cho những người đọc khác nếu bạn cung cấp một số thông tin hoặc liên kết thực sự về lý do tại sao đây là "lời khuyên thực sự, thực sự tồi tệ".
Shoeless

@Sholess Một số ý kiến ​​về câu trả lời được chấp nhận giải thích.
Tom Blodget

4

Nếu bạn đang cố truy cập thông qua Kết nối dữ liệu trong Visual Studio 2015 và gặp phải lỗi trên, hãy chuyển đến Nâng cao và đặt TrustServerCertificate=True lỗi để biến mất.


9
Đó không phải là một lời khuyên tồi cho mỗi người. Tôi sẽ nói rằng bạn có thể sử dụng nó khi bạn cần kết nối với máy chủ phát triển và thực hiện công việc của mình, chẳng hạn như mã hóa. Là một nhà phát triển phần mềm, tôi liên tục phải vật lộn với DevOps, những người không có thời gian để sửa chữa mọi thứ một cách nhanh chóng và tôi không thể lãng phí thời gian quý báu trước thời hạn. Cân nhắc phơi nhiễm dữ liệu tắt tùy chọn này phụ thuộc rất nhiều vào môi trường của bạn, nếu là cục bộ hoặc từ xa, cách quản trị viên thiết lập nó, hạn chế IP và có thể dễ dàng giảm thiểu bằng các cách giải quyết khác. Bạn không thể nói đó là một lời khuyên tồi mà không có một chút thông tin về cơ sở hạ tầng của bạn.
OrizG

1

Bị vấn đề tương tự khi truy cập SQLServer từ IIS. Thêm TrustServerCertert = True didnot help.

Có thể thấy một nhận xét trong tài liệu MS: Đảm bảo tài khoản dịch vụ SQLServer có quyền truy cập vào Chứng chỉ TLS bạn đang sử dụng. (Dịch vụ NT \ MSSQLSERVER)

Mở cửa hàng cá nhân và nhấp chuột phải vào chứng chỉ -> quản lý khóa riêng -> Thêm tài khoản dịch vụ SQL và kiểm soát hoàn toàn.

Khởi động lại dịch vụ SQL. Nó đã làm việc.


0

Điều tương tự có thể đạt được từ chính khách hàng của ssms. Chỉ cần mở ssms, chèn tên máy chủ và sau đó từ các tùy chọn trong thuộc tính kết nối tiêu đề, đảm bảo chứng chỉ máy chủ Trust được kiểm tra.


0

Tôi đã gặp sự cố này khi nhập dữ liệu Excel vào SQLDatabase thông qua SSMS. Giải pháp là thiết lập TrustServerCertificate = Truetrong phần bảo mật


0

Tôi gặp phải lỗi này khi cố chạy trình lược tả, mặc dù kết nối của tôi đã kiểm tra chứng chỉ máy chủ Trust và tôi đã thêm TrustServerCertificate=Truevào Phần nâng cao. Tôi đã thay đổi thành một phiên bản SSMS đang chạy với tư cách quản trị viên và trình hồ sơ bắt đầu không có vấn đề gì. (Trước đây tôi đã thấy rằng khi các kết nối của tôi thậm chí đến địa phương mất nhiều thời gian để kết nối, chạy với tư cách quản trị viên giúp đỡ).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.