Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android HTTPS SSLHandshake异常:对等方使用棒棒糖Android设备上的ksoap重置连接_Android_Ssl_Android 5.0 Lollipop_Android Ksoap2_Sslhandshakeexception - Fatal编程技术网

Android HTTPS SSLHandshake异常:对等方使用棒棒糖Android设备上的ksoap重置连接

Android HTTPS SSLHandshake异常:对等方使用棒棒糖Android设备上的ksoap重置连接,android,ssl,android-5.0-lollipop,android-ksoap2,sslhandshakeexception,Android,Ssl,Android 5.0 Lollipop,Android Ksoap2,Sslhandshakeexception,我在使用棒棒糖Android设备和ksoap库连接https站点时遇到问题。我收到SSLHandshake异常:由对等方重置连接。我注意到安卓5.0在TLS/SSL配置、站点it状态上都有变化 TLSv1.2和TLSv1.1协议现已启用, AES-GCM(AEAD)密码套件现已启用, MD5、3DES、导出和静态密钥ECDH密码套件现在已禁用, 首选前向保密密码套件(ECDHE和DHE) 我检查了服务器,它使用TLS_RSA_和_3DES_EDE_CBC_SHA作为密码套件,这是Android

我在使用棒棒糖Android设备和ksoap库连接https站点时遇到问题。我收到SSLHandshake异常:由对等方重置连接。我注意到安卓5.0在TLS/SSL配置、站点it状态上都有变化

TLSv1.2和TLSv1.1协议现已启用, AES-GCM(AEAD)密码套件现已启用, MD5、3DES、导出和静态密钥ECDH密码套件现在已禁用, 首选前向保密密码套件(ECDHE和DHE)

我检查了服务器,它使用TLS_RSA_和_3DES_EDE_CBC_SHA作为密码套件,这是Android 5.0不支持的

我已尝试在此链接上使用解决方案来接受所有证书:

并将自定义SSLSocketFactory设置为仅启用首选密码套件:

但是没有成功,我收到一个错误“不支持TLS\u RSA\u WITH\u 3DES\u EDE\u CBC\u SHA”


在客户端是否有解决此问题的方法,因为我知道这可以通过升级服务器以添加Android 5支持的现代密码套件来解决。

我也有同样的问题。我找到了一个链接,在其中我找到了一个代码:

public class MySSLSocketFactory extends SSLSocketFactory {
           SSLContext sslContext = SSLContext.getInstance("TLS");


           public MySSLSocketFactory() throws UnrecoverableKeyException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
                super(null, null, null, null, null, null);

                final TrustManagerFactory trustMgrFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
                trustMgrFactory.init((KeyStore) null);

                sslContext.init(null, trustMgrFactory.getTrustManagers(), new SecureRandom());
            }

            @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;
            }
    }
您可以尝试使用自定义
SSlSocketFactory
,正如我在上面所写的那样。而且这不是最好的解决方案。稍后您可能会遇到一些安全问题,因为对于连接,它可能会使用一些旧的密码算法


希望这能有所帮助。

我也遇到了同样的问题,我用3DES\u EDE\u CBC\u SHA编写了SSL\u RSA\u,而不是用3DES\u EDE\u CBC\u SHA编写了TLS\u RSA\u,这对我很有效

你可以查一下