"Rantai sertifikat dikeluarkan oleh otoritas yang tidak tepercaya" saat menghubungkan DB di Peran VM dari situs web Azure

192

Saya mengalami kesalahan saat menghubungkan DB MY yang ada di Peran VM (Saya punya SQL VM Peran) dari Situs Azure. Peran VM dan Situs Azure berada di zona Barat. Saya menghadapi masalah berikut:

SqlException (0x80131904): Koneksi berhasil dibuat dengan server, tetapi kemudian terjadi kesalahan selama proses login. (penyedia: Penyedia SSL, kesalahan: 0 - Rantai sertifikat dikeluarkan oleh otoritas yang tidak dipercaya.)]

Saya dapat terhubung ke DB saya menggunakan SSMS. Port 1433 terbuka pada peran VM saya. Apa yang salah dengan koneksi saya?

ZafarYousafi
sumber

Jawaban:

367

Anda mungkin tidak memiliki sertifikat bertanda CA yang diinstal di root store tepercaya SQL VM Anda.

Jika Anda memiliki Encrypt=Truestring koneksi, setel ke mati (tidak disarankan), atau tambahkan berikut ini dalam string koneksi:

TrustServerCertificate=True

SQL Server akan membuat sertifikat yang ditandatangani sendiri jika Anda tidak menginstalnya untuk digunakan, tetapi sertifikat itu tidak akan dipercaya oleh penelepon karena tidak ditandatangani CA, kecuali jika Anda memberi tahu string koneksi untuk mempercayai semua sertifikat server dengan standar.

Jangka panjang, saya akan merekomendasikan memanfaatkan Let's Encrypt untuk mendapatkan sertifikat bertanda CA dari CA tepercaya yang dikenal secara gratis, dan menginstalnya di VM. Jangan lupa mengaturnya untuk menyegarkan secara otomatis. Anda dapat membaca lebih lanjut tentang topik ini dalam buku-buku SQL Server online di bawah topik "Hirarki Enkripsi", dan "Menggunakan Enkripsi Tanpa Validasi".

Thiago Silva
sumber
1
maaf saya salah, TTrusted_Connection = Salah diatur dalam string koneksi. pengaturannya benar bekerja untuk saya. Ngomong
ZafarYousafi
1
@ZafarYousafi Anda harus menandai jawaban ini sebagai benar.
Termato
5
Tidak baik untuk menyarankan pengaturan TrustServerCertificateke true--ini menonaktifkan pemeriksaan sertifikat. Itu tidak lebih baik dari sekedar pengaturan Encryptuntuk false!
Matt Thomas
5
Nasihat yang diberikan "TrustServerCertificate = Benar" dalam jawaban ini mungkin membuat masalahnya hilang, tapi itu saran yang mengerikan. Perbaiki penyebabnya, BUKAN gejalanya. Bagian lain dari jawaban yang menyarankan pemasangan sertifikat yang ditandatangani CA adalah cara yang harus ditempuh.
Mitch Wheat
Dalam versi SSMS yang lebih baru Anda menemukan opsi kecil yang disebut "Percayai sertifikat server" di Tab "Properti Koneksi". Memeriksa bocah ini memiliki efek yang sama dengan perintah yang tercantum di atas.
gwynbleidd
87

Jika Anda menggunakan SQL Management Studio, silakan pergi ke properti koneksi dan klik "Percayai server bersertifikat" Jika Anda menggunakan SQL Management Studio, silakan pergi ke properti koneksi dan klik "Percayai server bersertifikat"

ct.tan
sumber
18
Ini bukan saran yang buruk. Saya akan mengatakan bahwa Anda dapat menggunakannya ketika Anda perlu terhubung ke server pengembangan dan melakukan pekerjaan Anda, seperti coding. Sebagai pengembang perangkat lunak, saya terus-menerus berjuang dengan DevOps yang tidak punya waktu untuk memperbaiki hal-hal dengan cepat dan saya tidak mampu membuang waktu yang berharga melawan tenggat waktu. Menimbang paparan data mematikan opsi ini tergantung banyak lingkungan Anda, apakah itu lokal atau jarak jauh, bagaimana admin mengaturnya, pembatasan IP dan dapat dengan mudah dikurangi dengan solusi lain. Anda tidak dapat mengatakan itu saran yang buruk tanpa memiliki sedikit informasi tentang infrastruktur Anda.
OrizG
Anda baru saja menyelamatkan hari saya. Terima kasih @ ct.tan
Milinda Wickramasinghe
@ OrizG Saya memiliki SQL Server yang diinstal pada mesin lokal, dan saya menggunakannya untuk proyek pribadi. Saat ini, saya tidak ingin menghabiskan sepeser pun, jadi saya mendapatkan host gratis dan mencoba mengkonfigurasi server dengan cara saya menandatangani sertifikat, dan menukarnya antara server dan klien. akan digunakan untuk mengaksesnya. Namun, karena host gratis, saya tidak berhasil melakukannya dengan Let's Encrypt. Apa sebenarnya kerugian dari solusi ini, dibandingkan dengan melakukan pertukaran sertifikat dengan benar, dengan sertifikat bertanda tangan CA yang dipercaya?
ccoutinho
31

Jika Anda melihat pesan kesalahan ini ketika mencoba terhubung menggunakan SSMS, tambahkan TrustServerCertificate=Trueke Parameter Koneksi Tambahan.

vmanne
sumber
23
Mitch, Anda membuat komentar yang sama tentang tiga jawaban untuk pertanyaan ini. Mungkin bermanfaat bagi pembaca lain jika Anda memberikan beberapa informasi substantif atau tautan mengapa ini "benar-benar nasihat yang buruk."
Shoeless
@Shoeless Beberapa komentar pada jawaban yang diterima menjelaskan.
Tom Blodget
4

Jika Anda mencoba mengaksesnya melalui Koneksi Data di Visual Studio 2015, dan mendapatkan Kesalahan di atas, Lalu Pergi ke Tingkat Lanjut dan atur TrustServerCertificate=True agar kesalahan hilang.

Bhavjot
sumber
9
Ini bukan saran yang buruk. Saya akan mengatakan bahwa Anda dapat menggunakannya ketika Anda perlu terhubung ke server pengembangan dan melakukan pekerjaan Anda, seperti coding. Sebagai pengembang perangkat lunak, saya terus-menerus berjuang dengan DevOps yang tidak punya waktu untuk memperbaiki hal-hal dengan cepat dan saya tidak mampu membuang waktu yang berharga melawan tenggat waktu. Menimbang paparan data mematikan opsi ini tergantung banyak lingkungan Anda, apakah itu lokal atau jarak jauh, bagaimana admin mengaturnya, pembatasan IP dan dapat dengan mudah dikurangi dengan solusi lain. Anda tidak dapat mengatakan itu saran yang buruk tanpa memiliki sedikit informasi tentang infrastruktur Anda.
OrizG
1

Terkena masalah yang sama saat mengakses SQLServer dari IIS. Menambahkan TrustServerCertificate = Benar tidak membantu.

Dapat melihat komentar di MS docs: Pastikan akun layanan SQLServer memiliki akses ke Sertifikat TLS yang Anda gunakan. (Layanan NT \ MSSQLSERVER)

Buka toko pribadi dan klik kanan pada sertifikat -> kelola kunci pribadi -> Tambahkan akun layanan SQL dan berikan kontrol penuh.

Mulai ulang layanan SQL. Itu berhasil.

Kaavya T
sumber
0

Hal yang sama dapat dicapai dari ssms client itu sendiri. Cukup buka ssms, masukkan nama server dan kemudian dari opsi di bawah properti koneksi judul pastikan sertifikat server Trust dicentang.

Manas
sumber
0

Saya mendapatkan Masalah ini saat mengimpor data Excel ke SQLDatabase melalui SSMS. Solusinya adalah dengan mengatur TrustServerCertificate = Truedi bagian keamanan

Kanna Reddy
sumber
0

Saya mengalami kesalahan ini mencoba menjalankan profiler, meskipun koneksi saya sudah memeriksa sertifikat server kepercayaan dan saya menambahkan TrustServerCertificate=Truedi bagian lanjutan. Saya mengubah ke instance SSMS yang berjalan sebagai administrator dan profiler mulai tanpa masalah. (Saya sebelumnya telah menemukan bahwa ketika koneksi saya ke lokal memerlukan waktu lama untuk terhubung, berjalan sebagai administrator membantu).

Tagihan
sumber