1

Я пытаюсь сделать HTTP POST, но я получаю две разные ошибки:Рукопожатие неудачу на леденец

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

Я Устранена Нет сертификат партнера ошибка через обходной путь, как указано здесь: https://stackoverflow.com/a/4837230/4254419

, но пока что фиксирует ошибку, он выдает новую ошибку вместо этого, что Рукопожатие не удалось

Я знаю, что это не безопасно, и я не забочусь, это не для поэтому я забочусь о безопасности. Есть ли проблема в этой проблеме?

ответ

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, как я писал выше. Кроме того, это не лучшее решение, которое может возникнуть у вас позже, потому что для подключения он может использовать старый алгоритм шифрования.

Надеюсь, это поможет.