【发布时间】:2020-04-13 23:28:15
【问题描述】:
我使用下面的代码创建一个到服务器的套接字并获取服务器公钥(服务器 TLS 版本是 1.2)。
问题出在 Android socket.startHandshake();
catch error : javax.net.ssl.SSLException: Connection closed by peer.
我搜索了很多,发现我必须强制 Android +、+、+)。
SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory();
SSLSocket socket = (SSLSocket) factory.createSocket(hostname, 443);
socket.setSoTimeout(10000);
socket.startHandshake();
Certificate[] certs = socket.getSession().getPeerCertificates();
Certificate cert = certs[0];
PublicKey serverKey = cert.getPublicKey();
CertificateFactory cf = CertificateFactory.getInstance("X.509");
InputStream caInput = context.getResources().getAssets().open("filename.cert");
Certificate ca;
ca = cf.generateCertificate(caInput);
if (String.valueOf(serverKey).equals(String.valueOf(ca.getPublicKey()))) {
My codes ...
}
我该怎么做?谢谢。
【问题讨论】:
标签: java android sockets ssl tls1.2