Otrzymuję następujący błąd podczas żądania usługi sieciowej do zdalnej usługi internetowej:
Nie można ustanowić relacji zaufania dla bezpiecznego kanału SSL / TLS. ---> System.Security.Authentication.AuthenticationException: zdalny certyfikat jest nieprawidłowy zgodnie z procedurą sprawdzania poprawności.
Czy mimo wszystko można zignorować ten błąd i kontynuować?
Wygląda na to, że zdalny certyfikat nie jest podpisany.
Witryna, z którą się łączę, to www.czebox.cz
- więc nie krępuj się jej odwiedzić i zauważ, że nawet przeglądarki generują wyjątki bezpieczeństwa.
Zezwalanie na wszystkie certyfikaty jest bardzo potężne, ale może być również niebezpieczne. Jeśli chcesz zezwolić tylko na ważne certyfikaty i niektóre określone certyfikaty, możesz to zrobić w ten sposób.
.NET core:
.NET Framework:
Aktualizacja:
Jak uzyskać
cert.GetCertHashString()
wartość w Chrome:Kliknij
Secure
lubNot Secure
na pasku adresu.Następnie kliknij Certyfikat -> Szczegóły -> Odcisk palca i skopiuj wartość. Pamiętaj o tym
cert.GetCertHashString().ToLower()
.źródło
Hash String
od certyfikatu?cert.GetCertHashString()
zImmediate window
lub sprawdź certThumbprint
w przeglądarce lubMMC
jeżeli jest on zainstalowany lokalnie.Metoda IgnoreBadCertificates:
źródło
Przyczyną niepowodzenia nie jest to, że nie jest podpisany, ale dlatego, że certyfikat główny nie jest zaufany przez klienta. Zamiast wyłączać sprawdzanie poprawności SSL, alternatywnym podejściem byłoby dodanie certyfikatu głównego urzędu certyfikacji do listy urzędów certyfikacji, którym ufa Twoja aplikacja.
To jest główny certyfikat urzędu certyfikacji, któremu Twoja aplikacja obecnie nie ufa:
Możesz zdekodować i wyświetlić ten certyfikat za pomocą
ten dekoder certyfikatu lub inny dekoder certyfikatu
źródło
Aby wyłączyć sprawdzanie poprawności certyfikatu SSL w konfiguracji klienta.
źródło
Ten kod zadziałał dla mnie. Musiałem dodać TLS2, ponieważ właśnie tego interesuje mnie URL.
źródło
Omiń certyfikat SSL ...
źródło
Jeśli używasz gniazd bezpośrednio i uwierzytelniasz się jako klient, metoda wywołania zwrotnego programu Service Point Manager nie będzie działać. Oto, co zadziałało dla mnie. UŻYWAĆ WYŁĄCZNIE W CELACH TESTOWYCH .
Kluczem jest tutaj zapewnienie zdalnego wywołania zwrotnego weryfikacji certyfikatu bezpośrednio w konstruktorze strumienia SSL.
źródło
Aby dalej rozwinąć post BIGNUM - najlepiej byłoby, gdybyś potrzebował rozwiązania, które będzie symulować warunki, które zobaczysz w środowisku produkcyjnym, a modyfikowanie kodu tego nie zrobi i może być niebezpieczne, jeśli zapomnisz wyjąć kod przed jego wdrożeniem.
Będziesz potrzebował jakiegoś certyfikatu z podpisem własnym. Jeśli wiesz, co robisz, możesz skorzystać z opublikowanego binarnego BIGNUM, ale jeśli nie, możesz poszukać certyfikatu. Jeśli używasz IIS Express, będziesz już mieć jeden z nich, po prostu musisz go znaleźć. Otwórz Firefoksa lub dowolną przeglądarkę, którą lubisz i przejdź do witryny deweloperskiej. Powinno być możliwe wyświetlenie informacji o certyfikacie z paska adresu URL, aw zależności od przeglądarki powinno być możliwe wyeksportowanie certyfikatu do pliku.
Następnie otwórz MMC.exe i dodaj przystawkę Certyfikat. Zaimportuj plik certyfikatu do magazynu zaufanych głównych urzędów certyfikacji i to wszystko, czego potrzebujesz. Ważne jest, aby upewnić się, że trafia do tego sklepu, a nie do innego sklepu, takiego jak „Osobisty”. Jeśli nie znasz programu MMC lub certyfikatów, istnieje wiele witryn internetowych zawierających informacje, jak to zrobić.
Teraz twój komputer jako całość będzie niejawnie ufał wszystkim certyfikatom, które sam wygenerował i nie będziesz musiał dodawać kodu, aby to obsłużyć. Kiedy przejdziesz do produkcji, będzie ona nadal działać, pod warunkiem, że masz tam zainstalowany odpowiedni ważny certyfikat. Nie rób tego na serwerze produkcyjnym - byłoby to złe i nie zadziała dla żadnych innych klientów poza tymi na samym serwerze.
źródło
Działa to w przypadku platformy .Net Core. Zadzwoń do swojego klienta Soap:
źródło