„Łańcuch certyfikatów został wydany przez organ, który nie jest zaufany” podczas łączenia DB w roli VM z witryny Azure

191

Wystąpił błąd podczas łączenia MY DB, która jest w roli VM (mam SQL VM Role) z witryny Azure. Zarówno rola maszyny wirtualnej, jak i witryna Azure znajdują się w strefie zachodniej. Mam do czynienia z następującym problemem:

SqlException (0x80131904): Pomyślnie nawiązano połączenie z serwerem, ale wystąpił błąd podczas procesu logowania. (dostawca: dostawca SSL, błąd: 0 - Łańcuch certyfikatów został wydany przez organ, który nie jest zaufany.]]

Jestem w stanie połączyć się z moją bazą danych za pomocą SSMS. Port 1433 jest otwarty na mojej roli VM. Co jest nie tak z moim połączeniem?

ZafarYousafi
źródło

Odpowiedzi:

366

Prawdopodobnie nie masz zainstalowanego certyfikatu podpisanego przez urząd certyfikacji w zaufanym magazynie głównym maszyny wirtualnej SQL.

Jeśli masz Encrypt=Trueparametry połączenia, ustaw je na off (niezalecane) lub dodaj następujące parametry w ciągu połączenia:

TrustServerCertificate=True

Program SQL Server utworzy samopodpisany certyfikat, jeśli nie zostanie zainstalowany, aby mógł być używany, ale osoba dzwoniąca nie będzie mu ufać, ponieważ nie jest podpisany przez urząd certyfikacji, chyba że powiesz ciągowi połączenia, aby ufał dowolnemu certyfikatowi serwera przez domyślna.

W dłuższej perspektywie zalecam skorzystanie z Let's Encrypt, aby uzyskać certyfikat podpisany przez CA od znanego zaufanego urzędu certyfikacji za darmo i zainstalować go na maszynie wirtualnej. Nie zapomnij ustawić automatycznego odświeżania. Możesz przeczytać więcej na ten temat w książkach SQL Server online pod tematami „Hierarchia szyfrowania” i „Korzystanie z szyfrowania bez sprawdzania poprawności”.

Thiago Silva
źródło
1
przepraszam mój zły, TTrusted_Connection = Fałsz został ustawiony w ciągu połączenia. ustawienie go na prawdę działa dla mnie. W każdym razie dzięki
ZafarYousafi
1
@ZafarYousafi powinieneś zaznaczyć tę odpowiedź jako poprawną.
Termato,
5
Nie zaleca się ustawiania opcji TrustServerCertificate- truespowoduje to wyłączenie sprawdzania certyfikatu. To nie jest lepsze niż ustawienie Encryptna false!
Matt Thomas
5
Porada udzielona w tej odpowiedzi „TrustServerCertificate = True” może sprawić, że problem zniknie, ale jest to straszna rada. Napraw przyczynę, a nie objawy. Druga część odpowiedzi sugerująca zainstalowanie certyfikatu podpisanego przez urząd certyfikacji jest właściwą drogą.
Mitch Wheat
W nowszych wersjach SSMS na karcie „Właściwości połączenia” znajduje się niewielka opcja o nazwie „Certyfikat serwera zaufania”. Sprawdzanie tego chłopca ma taki sam efekt jak polecenia wymienione powyżej.
gwynbleidd