gpt4 book ai didi

在 Lollipop Android 设备上使用 ksoap 的 Android HTTPS SSLHandshake 异常 : Connection Reset By Peer,

转载 作者:太空宇宙 更新时间:2023-11-03 14:55:43 25 4
gpt4 key购买 nike

我在使用使用 ksoap 库的 Lollipop Android 设备连接到 https 站点时遇到问题。我收到 SSLHandshake 异常:对等方重置连接。我注意到 Android 5.0 对 TLS/SSL 配置进行了更改,在他们的网站上声明

TLSv1.2 and TLSv1.1 protocols are now enabled, AES-GCM (AEAD) cipher suites are now enabled, MD5, 3DES, export, and static key ECDH cipher suites are now disabled, Forward Secrecy cipher suites (ECDHE and DHE) are preferred.

我检查了服务器,它使用 TLS_RSA_WITH_3DES_EDE_CBC_SHA 作为 Android 5.0 不支持的密码套件

我尝试使用此链接上的解决方案来接受所有证书: KSOAP 2 Android with HTTPS

并制作自定义 SSLSocketFactory 以仅启用首选密码套件: How to override the cipherlist sent to the server by Android when using HttpsURLConnection?

但没有成功,我收到错误消息“不支持 TLS_RSA_WITH_3DES_EDE_CBC_SHA”

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

最佳答案

我遇到了同样的问题。我找到了一个链接 https://code.google.com/p/android/issues/detail?id=88313我在哪里找到代码:

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

希望这对您有所帮助。

关于在 Lollipop Android 设备上使用 ksoap 的 Android HTTPS SSLHandshake 异常 : Connection Reset By Peer,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29625197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com