Mam pakiet zgodny z Javą, aby rozmawiać z serwerem https w sieci. Uruchomienie kompilacji daje następujący wyjątek:
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at com.sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)
Myślę, że jest to spowodowane tym, że połączenie nawiązane z komputerem klienckim nie jest bezpieczne. Czy istnieje sposób na skonfigurowanie lokalnej maszyny lub portów w celu połączenia się ze zdalnym serwerem https?
HttpURLConnection
automatycznie zrobi to za Ciebie, jeśli w ogóle nie określisz portu.Powinieneś mieć lokalną nazwę domeny SMTP, która skontaktuje się z serwerem poczty i ustanowi nowe połączenie, jak również powinieneś zmienić właściwość SSL w swoim programowaniu poniżej
źródło
Otrzymałem ten sam komunikat o błędzie, gdy zapomniałem zalogować się do zapory firmowej, zanim wykonałem żądanie POST przez proxy.
źródło
Mam ten sam błąd. to dlatego, że uzyskiwałem dostęp do portu https za pomocą protokołu http .. Problem został rozwiązany po zmianie protokołu http na https.
źródło
Mam ten sam problem z aplikacją Java zbudowaną w Jdevelopr 11.1.1.7 IDE. Rozwiązałem ten problem, odznaczając użycie proxy formularza Właściwości projektu.
Możesz go znaleźć w: Project Properties -> (z lewego panelu) Run / Debug / Profile -> Kliknij (edytuj) z prawego panelu -> Tool Setting z lewego panelu -> odznacz opcję (Use Proxy).
źródło
Dodając to jako odpowiedź, ponieważ może to pomóc komuś później.
Musiałem zmusić jvm do użycia stosu IPv4 w celu rozwiązania błędu. Moja aplikacja działała w sieci firmowej, ale łącząc się z domu dawała ten sam wyjątek. Bez serwera proxy. Dodano argument jvm
-Djava.net.preferIPv4Stack=true
i wszystkiehttps
żądania działały normalnie.źródło
Jeśli korzystasz z lokalnego źródła, sugeruję użycie:
Działa dla mnie przy użyciu testu jednostkowego.
Mam nadzieję, że to pomoc!
źródło
Udało mi się teraz, zmieniłem ustawienie mojego konta Google, jak poniżej:
Chociaż włączyłem SSL i TSL podczas uruchamiania programu w tym linku w tym samym poście. Spędziłem dużo czasu, ale niż sobie uświadomiłem i znalazłem ten link. I wykonałem 2 następujące kroki i ustawiłem kontrolę w Google. :
Wyłącz weryfikację dwuetapową (hasło i hasło jednorazowe)
Włączanie zezwalania na dostęp do mniej bezpiecznych aplikacji ( Zezwalaj na mniej bezpieczne aplikacje: WŁĄCZONE ).
Teraz mogę wysyłać pocztę używając powyższego programu.
źródło
Jak powiedział EJP, jest to komunikat wyświetlany z powodu wywołania protokołu innego niż HTTPS. Jeśli jesteś pewien, że to HTTPS, sprawdź ustawienia pomijania serwera proxy i na wypadek, gdybyś dodał adres URL hosta usługi internetowej do listy pomijanych serwerów proxy
źródło
jeśli połączenie jest testem FTPS:
FTPSClient ftpClient = nowy FTPSClient (protokół, fałsz);
protokół = TLS, SSL i false = isImplicit.
źródło
Miałem do czynienia z tym wyjątkiem podczas korzystania z Gmaila.
Aby korzystać z Gmaila, musiałem włączyć opcję „Zezwalaj na mniej bezpieczne aplikacje” .
To ustawienie Gmaila można znaleźć pod adresem https://www.google.com/settings/security/lesssecureapps po zalogowaniu się na konto Gmail.
źródło
TUTAJ BARDZO WAŻNA ODPOWIEDŹ:
Po prostu zmieniasz ciąg adresu URL interfejsu API (w swojej metodzie) z https na http .. Może to być również przyczyna:
zamiast
źródło
Otrzymałem ten sam problem i został on rozwiązany przez ustawienie „proxyUser” i „proxyPassword” we właściwościach systemu.
wraz z „proxyHost” i „proxyPort”
Mam nadzieję, że to zadziała.
źródło
rozwiązałem swój problem używając portu 25 i podążania za prop
źródło
Na wypadek, gdybyś biegał
spróbuj zatrzymać usługi.
Nie jestem pewien, dlaczego głosowałem negatywnie na tę odpowiedź. W naszej sieci korporacyjnej JEST to rozwiązanie problemu.
źródło
Mam podobny błąd podczas używania komponentu camel-mail do wysyłania e-maili przez gmail smtp.
Rozwiązanie zmieniało się z portu TLS (587) na port SSL (465), jak poniżej:
źródło
Jeśli uruchamiasz proces Java z wiersza poleceń w Javie 6 lub starszej, dodanie tego przełącznika rozwiązało powyższy problem:
-Dhttps.protocols = "TLSv1"
źródło
Może wygasła ważność domyślnego certyfikatu. aby odnowić go przez konsolę administratora, wybierz „Bezpieczeństwo> Certyfikat SSL i zarządzanie kluczami> Magazyny kluczy i certyfikaty> NodeDefaultKeyStore> Certyfikaty osobiste”, wybierz alias „domyślny” i kliknij „odnów” po ponownym uruchomieniu WAS.
źródło
Innym powodem może być „odmowa dostępu”, być może nie możesz uzyskać dostępu do URI i strony z odpowiedzią blokującą otrzymaną odpowiedź na dostęp do sieci wewnętrznej. Jeśli nie jesteś pewien, czy Twoja strefa aplikacji wymaga reguły zapory, spróbuj połączyć się z terminala, z wiersza poleceń. W przypadku systemu GNU / Linux lub Unix możesz spróbować wykonać to polecenie i zobaczyć, że wynik pochodzi z reguły blokowania lub naprawdę zdalnego adresu:
echo | nc -v yazilimcity.net 443
źródło