需要在一个程序中的SSL握手,以获取有关,如公共密钥和密码套件远程服务器的一些信息。我知道一些称为隐形握手的东西,它不会完成握手,但会获得所需的信息,例如我所提到的。任何机构可以解释如何在Java中执行此操作。我试图搜索,但无法找到确切的具体方法。我如何让隐形SSL握手在Java中
1
A
回答
1
隐身?从来没有听说过这个。
你可以注册一个javax.net.ssl.HandShakeCompletedListener
你的SSL客户端套接字得到后握手已经完成
javax.net.ssl.HandShakeCompletedListener证书等,但是任何希望的类实现 接口接收在给定SSLSocket连接上完成 SSL协议握手的通知。
而且您还可以通过SSLEngine
处理握手数据。
1
Stelath模式不知道这一点,但我用来做一些事情像下面从服务器检索
import java.io.IOException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
public class GetCertificates {
public static void main(String[] args) throws NoSuchAlgorithmException, KeyManagementException, IOException{
String host="google.com";
int port = 443;
SSLContext ssl = SSLContext.getInstance("TLS");
ssl.init(null, new TrustManager[]{new SimpleX509TrustManager()}, null);
SSLSocketFactory factory = ssl.getSocketFactory();
SSLSocket socket = (SSLSocket) factory.createSocket(host,port);
SSLSession session = socket.getSession();
javax.security.cert.X509Certificate[] certs = session.getPeerCertificateChain();
System.out.println(certs[certs.length-1].getSubjectDN());
// you can display certificates info here and also cipher suites
session.getCipherSuite();
session.invalidate();
}
}
class SimpleX509TrustManager implements X509TrustManager {
public void checkClientTrusted(
X509Certificate[] cert, String a)
throws CertificateException {
}
public void checkServerTrusted(
X509Certificate[] cert, String a)
throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}
相关问题
- 1. Java中的SSL握手
- 2. Java SSL握手失败(SSLPoke)
- 3. Java客户端SSL握手
- 4. SSL握手失败Java
- 5. SSL握手失败
- 6. SSL握手超时
- 7. SSL握手异常
- 8. SSL握手问题
- 9. javax.net.ssl.SSLHandshakeException:javax.net.ssl.SSLProtocolException:SSL握手中止:SSL = 0x52e57148:
- 10. 使用Java的SSL握手错误
- 11. tomcat ssl客户端握手java错误
- 12. java ssl握手而不下载证书
- 13. 如何mpesa ssl握手失败
- 14. 如何浏览器产生SSL握手
- 15. Android SSL握手例外
- 16. SSL无法进行握手
- 17. Nginx的SSL握手错误
- 18. SSL握手异常 - RESTEASY004655
- 19. SSL/TLS握手分析
- 20. 重新协商SSL握手
- 21. SSL握手失败 - HttpClient 4.1.2
- 22. ftp_login():SSL/TLS握手失败
- 23. SSL握手失败错误
- 24. 坏SSL握手泽西
- 25. MobileFirst 7.0 SSL握手问题
- 26. WebLogic SSL握手错误
- 27. Selenium SSL握手问题
- 28. Java 7 ssl握手在Java 6上运行时失败
- 29. 2路SSL :: SSL握手失败错误
- 30. 我为什么会遇到握手故障(Java SSL)
为什么证书链?除非服务器需要客户端证书,否则您可以使用内置的SSL类完成正常的SSL握手,然后获取所有SSL会话详细信息。 – EJP 2012-08-11 02:18:47