0

我正在使用 StartSSL 的免费 SSL 证书。我将 PEM 编码证书添加到我的应用程序中。

该实现适用于我的三部 android 手机(都是果冻豆),但三星 Galaxy note 1(android 版本 4.0.4)不起作用。

令人惊讶的是,它没有给出 SSLException,而是 IllegalArgumentException。

异常更详细

    Caused by: java.lang.IllegalArgumentException: SSLSocketFactory is null
    at javax.net.ssl.HttpsURLConnection.setSSLSocketFactory(HttpsURLConnection.java:282)
    at com.lovey.util.NetworkFunction.communicateString(NetworkFunction.java:288)
    at com.lovey.util.NetworkFunction.login(NetworkFunction.java:337)
    at com.lovey.classes.LoginAsync.doInBackground(LoginAsync.java:36)
    at com.lovey.classes.LoginAsync.doInBackground(LoginAsync.java:1)
    at android.os.AsyncTask$2.call(AsyncTask.java:264)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)

我认为一切正常。在资产中读取证书的输入流工作正常。

知道发生了什么吗?

4

1 回答 1

0

这是通过在版本低于 Jellybean 的 Android 设备上使用 TLSv1.2引起的(与解决方案的超链接) 。

请改用此来源。还要让您的服务器接受 TLSv1.0 连接。

if(Build.VERSION.SDK_INT<16)
    sslContext = SSLContext.getInstance("TLS");
else
    sslContext = SSLContext.getInstance("TLSv1.2");
于 2013-10-28T09:56:51.810 回答