我正在尝试进行HTTP POST,但我遇到两个不同的错误:
javax.net.ssl.SSLHandshakeException: Handshake failed
net.ssl.SSLPeerUnverifiedException: No peer certificate
我通过此处指定的解决方法修复了无对等证书错误:https://stackoverflow.com/a/4837230/4254419
但是虽然修复了错误,但它会引发新的错误,这是握手失败
我知道这不安全而且我不在乎,这不是为了生产所以我更不关心安全性。是否有解决此问题的方法?
答案 0 :(得分:1)
我遇到了同样的问题。 我找到了一个链接https://code.google.com/p/android/issues/detail?id=88313,在那里我找到了一个代码:
public class MySSLSocketFactory extends SSLSocketFactory {
SSLContext sslContext = SSLContext.getInstance("TLS");
...
@Override
public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException {
final SSLSocket sslSocket = (SSLSocket) sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);
sslSocket.setEnabledCipherSuites(sslSocket.getSupportedCipherSuites());
return sslSocket;
}
@Override
public Socket createSocket() throws IOException {
final SSLSocket sslSocket = (SSLSocket) sslContext.getSocketFactory().createSocket();
sslSocket.setEnabledCipherSuites(sslSocket.getSupportedCipherSuites());
return sslSocket;
}
}
您可以使用您提供的链接中的MySSLSocketFactory
代码,但您需要覆盖两种方法createSocket
,如上所述。
此外,它不是最佳解决方案,您可以在以后遇到一些安全问题,因为对于连接,它可以使用一些旧的密码算法。
希望这有帮助。