/ / Dlaczego .Net WebClient może używać HTTPS bez żadnej konfiguracji, podczas gdy Java HttpClient nie może - java, .net, https, webclient, apache-httpclient-4.x

Dlaczego .Net WebClient może używać HTTPS bez żadnej konfiguracji, podczas gdy Java HttpClient nie może - java, .net, https, webclient, apache-httpclient-4.x

Nie bądź zaskoczony, ale moje pytanie nie dotyczy czegoś, co nie działa: dlaczego .Net WebClient jest w stanie używać HTTPS bez użycia konfiguracji bez jakiejkolwiek konfiguracji?

Nie zapytałbym, czy nie miałem poważnych powodów, by sądzić, że tak nie powinno być: rzeczywiście użyłem Apache HttpClient do wykonania tej samej operacji, POST przez HTTPS, ale narzekałem.

Tym, co niepokoiło HttpClient, był faktserwerowy certyfikat TLS nie był znany. Jest to uzasadniona skarga, więc dodałem certyfikat do magazynu certyfikatów JRE, z którego korzystałem, a następnie wszystko działało zgodnie z oczekiwaniami.

Najpierw możesz usunąć straszne wątpliwości: WebClient poprawnie używa protokołu HTTPS i jeśli próbuję się połączyć z "https://downloadspywaresandmalwares.com"powinien odrzucić mnie z czymś w stylu" jesteś szalonym kolesiem, to nie jest zaufana lokalizacja! "?

Sądzę więc, że ma to związek z rozbieżnościamipolityki bezpieczeństwa .Net i Java: może Java jest połączona z własnym zestawem certyfikatów i uprawnień, podczas gdy .Net jest bardziej zintegrowany z systemem operacyjnym, który może mieć większy zestaw zaufanych certyfikatów.

Jak więc sprawdzić wszystkie te założenia?

Jeśli to może mieć jakieś znaczenie: użyłem strony internetowej z Chrome, ale nigdy z IE, więc WebClient nie używa konfiguracji IE.

Dzięki za wszelkie dane wejściowe. :)

Odpowiedzi:

1 dla odpowiedzi № 1

Ok, myślę, że w końcu to mam:

  • jak podejrzewałem .Net nie ma własnego magazynu certyfikatów, ale używa magazynu systemu operacyjnego
  • "Udało mi się znaleźć i usunąć certyfikat, ale nie jest to łatwe, ponieważ Windows walczy o utrzymanie niektórych certyfikatów w swoim sklepie
  • po usunięciu, zgodnie z oczekiwaniami, WebClient jest zepsuty i narzeka, ponieważ "Nie można ustanowić relacji zaufania dla bezpiecznego kanału SSL / TLS"
  • więc tak WebClient używa poprawnie protokołu SSL, to ulga :)

Mam nadzieję, że ta informacja będzie przydatna dla kogoś innego ...