1

我正在尝试进行 HTTP POST,但出现两个不同的错误:

javax.net.ssl.SSLHandshakeException: Handshake failed
net.ssl.SSLPeerUnverifiedException: No peer certificate

我通过此处指定的解决方法修复了No peer certificate错误: https ://stackoverflow.com/a/4837230/4254419

但是虽然这修复了错误,但它会引发一个新错误,即握手失败

我知道它不安全,我不在乎,它不是用于生产的,所以我不太关心安全性。是否有解决此问题的方法?

4

1 回答 1

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我上面写的两种方法。此外,这也不是您以后可能会遇到一些安全问题的最佳解决方案,因为对于连接,它可以使用一些旧的密码算法。

希望这可以帮助。

于 2015-06-09T20:30:18.313 回答