某些设备上的“IllegalArgumentException:SSLSocketFactory为null”,有些则没有?

时间:2013-10-28 05:30:55

标签: java android http ssl https

我正在使用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)

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

知道发生了什么事吗?

1 个答案:

答案 0 :(得分:0)

这是caused(hyperlink with solution)在版本低于Jellybean的Android设备上使用TLSv1.2。

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

if(Build.VERSION.SDK_INT<16)
    sslContext = SSLContext.getInstance("TLS");
else
    sslContext = SSLContext.getInstance("TLSv1.2");