Avatar billede mergelspir Seniormester
27. september 2022 - 12:16 Der er 4 kommentarer og
1 løsning

Hvilken SSL/TLS protokolversion bruger jeg?

Jeg får pludselig følgende exception:
Exception javax.net.ssl.SSLException: Received fatal alert: protocol_version

Exception kommer fra den nederste linie i følgende tre liniers kode, der henter valutakurser fra den europæiske centralbank (ECB)

URL url = new URL("https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");
URLConnection uc = url.openConnection();
InputStream in = uc.getInputStream();    // <-- Denne linie trigger exception'en


Koden har fungeret upåklageligt i mange år!!

Jeg antager, at fejlmeddelelsen kommer, fordi ECB har strammet op på sikkerheden og er begyndt at kræve en bedre protocol.
Jeg har skrevet til ECB, men ikke fået noget svar (endnu).
Jeg forestiller mig også, at det er hurtigere at spørge i dette forum.

Mine settings:
Tomcat Version: Apache Tomcat/7.0.33
Servlet Specification Version: 3.0
JSP version: 2.1
Java runtime version: 1.7.0_09-b05
JWM: 23.5-b02

Jeg kan se, at supportedProtocols er:
SSLv2Hello
SSLv3
TLSv1
TLSv1.1
TLSv1.2

Jeg kan se, at enabledProtocols er:
SSLv2Hello
SSLv3
TLSv1
TLSv1.1
TLSv1.2

Mit spørgsmål er:
Hvordan kan jeg se, hvilken protokolversion jeg aktuelt forsøger at bruge?
Dvs, versionen på den protocol, der fejler.


Usefull link:
https://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html#SunJSSEProvider
Avatar billede Slettet bruger
27. september 2022 - 13:13 #1
Disse er betragtet som legacy:
SSLv2, SSLv3, TLSv1.0, TLSv1.1

https://notifications.qualys.com/product/2020/06/24/deprecating-tlsv1-0-and-tlsv1-1

Du kan teste kryptering og se om der er noget der skal deaktiveres...

https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml%22

-Det ser ud til at det understøtter helt op til TLS 1.3 for hjemmesiden, men der er svag krypteringer som kan defineres fra service. Enten fra gpedit.msc og ændre cipher suites order.

Test:
https://www.ssllabs.com/ssltest/analyze.html?d=www.ecb.europa.eu
-Det grønne betragtes gode kryptering, og det røde er for svage og disse kan deaktiveres ved hjælp af gpedit.msc og vælge kun de gode ind til cipher suite order.


Java? Java runtime version: 1.7.0_09-b05
Er dette som udvikler? Skal du nok installere seneste Java JDK, i dag er den version 19 eller 17, men er det almindelig java er det nået i dag til jre-8u341.

JDR
https://www.oracle.com/java/technologies/downloads/#jdk19-windows

Almindelig Java er dette nået til version 8, så dit version 1.7 er meget bagud.
https://www.java.com/en/download/manual.jsp

Testninger: Qualys SSL Labs
https://www.ssllabs.com/index.html


-Jeg håber, at nogen kan bedre svare dig senere, jeg hopper af tråden.
Avatar billede mergelspir Seniormester
27. september 2022 - 13:34 #2
Til jer, der kommenterer på java-version 1.7:
Jeg ved kun alt for godt, at den Java-version er outdated.
Jeg vil - af flere grunde - meget gerne op på en senere version.
Men det er den java-version, mit web-hotel (Levonline.com) tilbyder.
Og de har ingen planer om at opgradere.
Avatar billede arne_v Ekspert
27. september 2022 - 14:17 #3
Lidt blandede kommentarer:

0)

TLS v1.2 er det eneste som duer (når TLSv1.3 ikke er understøttet).

1)

Troubleshooting:
- installer præcis samme Java version lokalt og test med et simpel Java SE test program fordi så kan du nemmere debugge
- kør det med -Djavax.net.debug=ssl så vil den vise hvad der sker

2)

Du burde kunne restricte den brugte protocol. Det er nemt med en rå SSLSocket. Men URLConnection skal man lige gnave sig ind.

        SSLContext ssl = SSLContext.getInstance("TLSv1.2");
        ssl.init(null, null, null);
        ((HttpsURLConnection)uc).setSSLSocketFactory(ssl.getSocketFactory());

bør tvinge brug af TLSv1.2.

3)

Hvis den indbyggede JCE bare er for gammel, så hent BouncyCastle jars og få Java til at bruge dem.

Det vil sågar give dig TLSv1.3.
Avatar billede arne_v Ekspert
27. september 2022 - 14:47 #4
Med hensyn til Java version for evt. senere læsere.

De to mest brugte Java versioner i drift idag er 8 og 11 - 17 er stadig relativ ny, Men om et år eller to vil de mest brugte Java versioner være 11 og 17.

Stort set ingen bruger 9, 10, 12, 13, 14, 15, 16, 18, 19 da de ikke er LTS versioner.
Avatar billede mergelspir Seniormester
28. september 2022 - 12:36 #5
Jeg ved ikke, hvad problemet var, men nu fungerer koden igen.
(Jeg kan virkelig ikke li' den slags fejl!!)
Jeg nåede desværre ikke at debugge som foreslået af arne_v.

Blot til orientering:
Jeg har modtaget svar fra ECB's Team Coordinator & Web Developer:
"We have removed access using TLS1.0 and TLS 1.1 following the discontinuation announcement by all major software vendors in 2018 (Google, Microsoft, Apple, and Mozilla) and the final removal of support from their products during 2021 and 2022. The solution depends on your system and in general involves updating your systems to support at least TLS 1.2."

Tusind tak til jer, der svarede.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester