如何在Java中获取HTTPS连接使用的密码?在使用以下代码点击URL后,我需要找到使用的TLS版本,无论是TLS 1.1还是1.2:
url = new URL(https_url);
HttpsURLConnection con = (HttpsURLConnection)url.openConnection();
下面给出了firefox浏览器的屏幕截图。 任何人都可以帮我解决这个问题吗? TLS Version
我试过了
SSLSocket socket = (SSLSocket) con.getSSLSocketFactory().createSocket();
String[] test = socket.getSSLParameters().getProtocols();
但是这给出了为连接启用的协议列表。我在哪里需要服务器响应中使用的协议。
附带的屏幕截图显示了我期望阅读的内容(TLS 1.2)
答案 0 :(得分:0)
我认为con.getCipherSuite();
应该为算法做点算...
https://docs.oracle.com/javase/7/docs/api/javax/net/ssl/HttpsURLConnection.html
对于tls来说这可能是一个奇怪的解决方案,但是如果你设法打开一个新的SSL套接字(也许你可以用socket.close();
关闭)
SSLSocket socket = (SSLSocket) con.getSSLSocketFactory().createSocket();
String[] test = socket.getSSLParameters().getProtocols();
在测试值中请注意:您可以获得可用的TLS版本而不仅仅是一个版本。
答案 1 :(得分:0)
SSLSocketFactory
上安装自定义HttpsURLConnection
,或在连接时执行任何I / O. SSLSocketFactory
可以返回最近创建的SSLSocket
,或者确实包含所有SSLSocket
。SSLSocketFactory
检索相关的SSLSession
,并从当前SSLSockets
获取当前密码。请注意,由于连接池和HTTP保持活动,将HttpsURLConnections
与<View>
<Text>Some Text</Text>
<Image
style={{width: 50, height: 50}}
source={{uri: 'https://facebook.github.io/react/img/logo_og.png'}}
/>
<Text>Some Text</Text>
<Image
style={{width: 50, height: 50}}
source={{uri: 'https://facebook.github.io/react/img/logo_og.png'}}
/>
<Text>Some Text</Text>
<Image
style={{width: 50, height: 50}}
source={{uri: 'https://facebook.github.io/react/img/logo_og.png'}}
/>
</View>
相关联并非易事。答案 2 :(得分:-1)
您可以使用以下命令打印协议(TLSv1.2)和套件(TLS_ECDHE_RSA_WITH_AES):
SSLSocket ss = (SSLSocket) SSLSocketFactory.getDefault().createSocket("host", 443);
System.out.println("protocol: "+ss.getSession().getProtocol());
System.out.println("suite: "+ss.getSession().ss.getSession().getCipherSuite());