A TLS v1.2 engedélyezése a Java 7-ben

Java Top

Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:

>> ELLENŐRIZZE A FOLYAMATOT

1. Áttekintés

Az SSL-kapcsolatokról a TLSv1.2-et kell használnunk. Valóban, ez a Java 8 alapértelmezett SSL-protokollja.

És bár a Java 7 támogatja a TLSv1.2-t, az alapértelmezett TLS v1.0, amely manapság túl gyenge.

Ebben az oktatóanyagban megvitatjuk a Java 7 TLSv1.2 használatára történő konfigurálásának különféle lehetőségeit.

2. Java VM Argumentumok használata

Ha Java 1.7.0_95 vagy újabb verziót használunk, hozzáadhatjuk a jdk.tls.client.protocols ingatlan, mint a Jáva parancssori argumentum a TLSv1.2 támogatásához:

java -Djdk.tls.client.protocols = TLSv1.2 

De a Java 1.7.0_95 csak azoknak az ügyfeleknek áll rendelkezésre, akik támogatást vásároltak az Oracle-től. Tehát az alábbiakban megvizsgáljuk a többi lehetőséget a TLSv1.2 engedélyezéséhez a Java 7-en.

3. Az SSLSocket használata

Ebben az első példában engedélyezzük a TLSv1.2 használatát SSLSocketFactory.

Első, létrehozhatunk egy alapértelmezettet SSLSocketFactory objektumot a SSLSocketFactory #getDefault gyári módszer.

Ezután egyszerűen átadjuk a vendéglátónkat és a kikötőnket SSLSocket #createSocket:

SSLSocketFactory socketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault (); SSLSocket sslSocket = (SSLSocket) socketFactory.createSocket (hosturl, port);

Az alapértelmezett SSLSocket A fent létrehozott SSL-protokollok nincsenek társítva. Az SSL protokollokat társíthatjuk a sajátunkhoz SSLSocket pár módon.

Első megközelítésben egy sor támogatott SSL protokollt adhatunk át a setEnabledProtocols módszer a mi SSLSocket példa:

sslSocket.setEnabledProtocols (új karakterlánc [] {"TLSv1.2"});

Alternatív megoldásként használhatjuk SSLParaméterek, ugyanazt a tömböt használva:

SSLParameters params = new SSLParameters (); params.setProtocols (új karakterlánc [] {"TLSv1.2"}); sslSocket.setSSLParameters (paraméterek);

4. Az SSLContext használata

A SSLSocket közvetlenül csak az egyetlen kapcsolatot változtatja meg. Tudjuk használni SSLContext hogy megváltoztassuk a SSLSocketFactory.

Tehát ahelyett, hogy használná SSLSocketFactory # getInstance, Csináljuk SSLContext # getInstance, megadvaTLSv1.2”Paraméterként.Csak megkapjuk a magunkét SSLSocketFactory ettől most:

SSLContext sslContext = SSLContext.getInstance ("TLSv1.2"); sslContext.init (null, null, new SecureRandom ()); SSLSocketFactory socketFactory = sslContext.getSocketFactory (); SSLSocket socket = (SSLSocket) socketFactory.createSocket (url, port);

Gyors mellékletként mindig ne felejtsük el használni SecureRandom amikor SSL-vel dolgozik.

5. Használata HttpsURLConnection

Természetesen nem mindig közvetlenül hozunk létre aljzatokat. Gyakran az alkalmazás protokoll szintjén vagyunk.

Végül nézzük meg, hogyan engedélyezhetjük a TLSv1.2-et HttpsURLConnection.

Először szükségünk lesz egy példányra URL. Képzeljük el, hogy a //example.org webhelyhez kapcsolódunk:

URL url = új URL ("//" + hosturl + ":" + port);

Most beállíthatjuk SSLContext mint azelőtt:

SSLContext sslContext = SSLContext.getInstance ("TLSv1.2"); sslContext.init (null, null, new SecureRandom ());

Utolsó lépésünk a kapcsolat létrehozása és egy SSLSocketFactory:

HttpsURLConnection connection = (HttpsURLConnection) url.openConnection (); connection.setSSLSocketFactory (sslContext.getSocketFactory ());

6. Következtetés

Ebben a rövid cikkben bemutattunk néhány módot a TLSv1.2 engedélyezésére a Java 7-en.

Az ebben a cikkben használt kódminták elérhetők a GitHubon.

Java alsó

Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:

>> ELLENŐRIZZE A FOLYAMATOT