Cuando ejecuto el siguiente código, ¿por qué es el primer handshake SSLv2, no TLSv1 o SSLv3?cómo usar TLSV1 o SSLV3 para el primer apretón de manos (Cliente Hola) en Java?
¿Cómo usar TLSV1 o SSLV3 para el primer saludo de manos en Java?
String host = "www.google.com";
String url = "/adsense/?sourceid=aso&subid=ZH_CN-ET-AS-ADSBY6&medium=link&hl=zh_CN";
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(new KeyManager[0], new TrustManager[] {new DefaultTrustManager()}, new SecureRandom());
SSLContext.setDefault(ctx);
SSLSocketFactory factory = ctx.getSocketFactory();
Socket socket = factory.createSocket(host, 443);
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out.write("GET " + url + " HTTP/1.0");
out.flush();
out.close();
in.close();
Compruebe https://blogs.oracle.com/java-platform-group/entry/diagnosing_tls_ssl_and_https – user454322
Tenga en cuenta que [en realidad no era un SSLv2 de todos modos] (http://stackoverflow.com/a/4686924/372643), solo un SSLv3 (o superior) encapsulado en un SSLv2. – Bruno