如何获取 HTTPS 连接使用的密码

问题描述 投票:0回答:3

如何在 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)

java ssl tls1.2
3个回答
2
投票

致电

HttpsURLConnection.getCipherSuite()

我之前给出了一个冗长的答案,但现在我发现这是不必要的。


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
投票

您可以使用以下命令打印协议(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());
© www.soinside.com 2019 - 2024. All rights reserved.