2015-11-17 4 views
0

Я не буду Тринг JDK1.7 с кодом нижечто протокол используется в SSLContext.getInstance

SSLContext sc = SSLContext.getInstance("SSL"); 
sc.init(null,null,null); 
SSLSocketFactory sf = sc.getSocketFactory(); 
SSLSocket ss = (SSLSocket)sf.createSocket(); 
System.out.println(Arrays.toString(ss.getSupportedProtocols())); 

Независимо от того, какой протокол я ставлю в качестве getInstance параметра, нет никаких изменений в результате. Я пробовал эти протоколы:

  • SSLv2Hello
  • SSLv3
  • TLSv1
  • TLSv1.1
  • TLSv1.2

Где этот параметр вступит в силу, как я могу позвонить sslsocket.setEnabledProtocols для установки протоколов, которые я хочу позже?

+0

Я проверил некоторые вопросы, но нет ответов на это, http://stackoverflow.com/questions/11504173/sslcontext- инициализация http://serverfault.com/questions/64484/functional-implications-of-differences-in-ssl-and-tls/368574#368574 – xiaoming

+0

Ваш код работал отлично для меня, когда я использовал SSLContext.getInstance ("TLSv1 ") и' 'SSLContext' (http://docs.oracle.com/javase/7/docs/api/javax/net/ssl/SSLContext.html) javadoc говорит: * Каждая реализация платформы Java является требуется для поддержки следующего стандартного протокола SSLContext: TLSv1 *. –

ответ

1

Он влияет на протоколы с включенными протоколами.

Было бы интересно, если бы вы печатали результат getEnabledProtocols(), а не getSupportedProtocols().

+0

да, вы правы, результат: SSLContext.getInstance к ss.getEnabledProtocols * TLSv1.1 производят SSLv3, TLSv1, TLSv1.1 * SSL производят SSLv3, TLSv1 * TLSv1.2 производят SSLv3, TLSv1 , TLSv1.1, TLSv1.2 , но кажется, что этот параметр может быть переопределен ss.setEnabledProtocols, поэтому я думаю, что SSLContext.getInstance не имеет значения? – xiaoming

+0

Важно, если вы не вызываете 'setEnabledProtocols().' – EJP

Смежные вопросы