A TLS v1.2 engedélyezése a Java 7-ben
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 FOLYAMATOT1. Á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ó