0

StartSSL の無料の SSL 証明書を使用しています。PEM でエンコードされた証明書をアプリケーションに追加しました。

実装は 3 つの Android 携帯電話 (すべてジェリービーン) で動作しますが、Samsung 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 に答える