Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Juraj Mlich
Tvůrce
Avatar
Juraj Mlich:15.1.2017 13:00

Zdravím

v Jave sa pripájam pomocou klasického https požiadavku na vzdialený server za účelom stiahnutia určitých dát.

URL urls = new URL(url);
HttpURLConnection conn = (HttpURLConnection) urls.openConnection();

Server je na wedos hostingu, ceritifkáty vygenerované pomocou let's encrypt. Bohužiaľ pri každom requeste dostávam takúto chybu:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at sun.security.ssl.Alerts.getSSLException(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
        at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
        at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
        at sun.security.ssl.Handshaker.processLoop(Unknown Source)
        at sun.security.ssl.Handshaker.process_record(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)

Vedel by mi niekto prosím poradiť, že čo s tým je? Ako áno, je mi jasné, že problém je s validáciou certifikátu, ale ako ho teda verifikovať? Po googlení som samozrejme našiel, že treba spustiť nejaký java príkaz, ktorý toto vyrieši za mňa, ale keďže aplikáciu si bude môcť stiahnuť ktokoľvek, musí to byť vykonávané automaticky. Ja už som desperate.

Za každý link, radu, riadok kódu ďakujem :)

 
Odpovědět
15.1.2017 13:00
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na Juraj Mlich
Juraj Mlich:15.1.2017 13:02

Ešte dodám, že certifikáty sa pravidelne menia, keďže je to let's encrypt (každé 3 mesiace).

 
Nahoru Odpovědět
15.1.2017 13:02
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovídá na Juraj Mlich
Jindřich Máca:15.1.2017 16:50

Ahoj, co takhle si nastudovat něco o práci s HTTPS v Javě? :D Ona totiž třída HttpURLConnection si neumí s SSL moc dobře poradit. Proto existuje třída HttpsURLConnec­tion - https://docs.oracle.com/…nection.html ;)

HttpsURLConnection extends HttpURLConnection with support for https-specific features.
See http://www.w3.org/…W/Protocols/ and RFC 2818 for more details on the https specification.

 
Nahoru Odpovědět
15.1.2017 16:50
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na Jindřich Máca
Juraj Mlich:15.1.2017 18:13

HttpsURLConnection je len potomok HttpURLConnection a metóda URL#openConnec­tion() vracia HTTP či HTTPS verziu podľa použitého protokolu, takže v tom určite problém nie je. Medzičasom som už ale zistil, že Java pridáva lets encrypt ako uznanú autoritu vo verziu 8u101, takže problém vyriešený. Ďakujem.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
15.1.2017 18:13
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.