Android Client / Serveur sur TLS v1.2

Je vais essayer mon pour créer TLS v1.2 la communication entre un serveur et un client android.
J'ai créé un TLS v1.0 connexion avec n'importe quel problème, mais je n'arrive pas v1.2.
C'est le serveur de code:

char[] passphrase = "myComplexPass1".toCharArray();
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
keystore.load(new FileInputStream("cacerts"), passphrase);
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509");
keyManagerFactory.init(keystore, passphrase);
SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
KeyManager[] keyManagers = keyManagerFactory.getKeyManagers();
SSLContext sslContext.init(keyManagers, null, null);
SSLServerSocketFactory sslServerSocketFactory = sslContext.getServerSocketFactory();
SSLServerSocket sslServerSocket = (SSLServerSocket) sslServerSocketFactory.createServerSocket(port);
sslServerSocket.setEnabledProtocols(new String [] { "TLSv1", "TLSv1.1", "TLSv1.2" });
sslServerSocket.setUseClientMode(false);
sslServerSocket.setWantClientAuth(false);
sslServerSocket.setNeedClientAuth(false);
sslSocket = (SSLSocket)sslServerSocket.accept();

alors que c'est le code de client:

char[] passphrase = "myComplexPass1".toCharArray();
KeyStore keystore = KeyStore.getInstance("BKS");
keystore.load(this.getApplicationContext().getResources().openRawResource(R.raw.jb), passphrase);
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(keystore, passphrase);
SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
Log.d("Context Protocol",sslContext.getProtocol());//this prints correctly TLS v1.2!
KeyManager[] keyManagers = keyManagerFactory.getKeyManagers();
TrustManager[] trustManagers = new TrustManager[]{
                    new X509TrustManager() {
                        public java.security.cert.X509Certificate[] getAcceptedIssuers()
                        {
                            return null;
                        }
                        public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType)
                        {

                        }
                        public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType)
                        {

                        }
                    }
            };
sslContext.init(keyManagers, trustManagers, new SecureRandom());
SSLSocketFactory sslSocketFactory = (SSLSocketFactory) sslContext.getSocketFactory();
SSLSocket skt = (SSLSocket) sslSocketFactory.createSocket(HOST, PORT);
skt.setKeepAlive(true);

Client code, écrit en java client en cours d'exécution sur JRE7 sur mon pc, fonctionne parfaitement et je vois avec getProtocol (côté serveur) TLSv1.2 avec un bon chiffre, pris en charge par tlsv1.2.
Même code sur android faire un tlsv1.0 connexion!
Vraiment, je ne comprends pas.
Sur Java client JRE7 œuvres, sur android SEULEMENT tlsv1.0
Toute suggestion?

C'est ma première question, j'ai beaucoup cherché. Probablement ma mise en forme n'est pas correcte 🙁

TLS 1.2 est disponible sur Android 4.1. Voir stackoverflow.com/questions/5950178/... pour plus de détails.
Merci, mais d'après ce lien il devrait être pris en charge. Je suis sous android 4.2.2

OriginalL'auteur Guido Davide | 2013-05-13