Android SSL库中出现故障,通常是协议错误

Android SSL库中出现故障,通常是协议错误,android,ssl,Android,Ssl,我知道stackoverflow中有很多关于ssl证书的类似问题。我看了所有这些问题,但我并没有解决这个问题。我正在尝试使用ssl证书连接https。我正在关注android文档 . 这是我的代码: ProviderInstaller.installIfNeeded(this) val cf = CertificateFactory.getInstance("X.509") val caInput = resources.openRawResou

我知道stackoverflow中有很多关于ssl证书的类似问题。我看了所有这些问题,但我并没有解决这个问题。我正在尝试使用ssl证书连接https。我正在关注android文档 . 这是我的代码:

        ProviderInstaller.installIfNeeded(this)
        val cf = CertificateFactory.getInstance("X.509")
        val caInput = resources.openRawResource(R.raw.cert)
        val ca: Certificate
        try {
            ca = cf.generateCertificate(caInput)
        } finally {
            caInput.close()
        }
        val keyStoreType = KeyStore.getDefaultType()
        val keyStore = KeyStore.getInstance(keyStoreType)
        keyStore.load(null, null)
        keyStore.setCertificateEntry("ca", ca)

        val tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm()
        val tmf = TrustManagerFactory.getInstance(tmfAlgorithm)
        tmf.init(keyStore)

        val kmf = KeyManagerFactory.getInstance("X509")
        kmf.init(keyStore, pass.toCharArray())
        val trustAllCerts = arrayOf<TrustManager>(object : X509TrustManager {
            override fun getAcceptedIssuers(): Array<X509Certificate> {
                return arrayOf<X509Certificate>();
            }
            override fun checkClientTrusted(p0: Array<out X509Certificate>?, p1: String?) {
            }
            override fun checkServerTrusted(p0: Array<out X509Certificate>?, p1: String?) {
            }
        })
        val context = SSLContext.getInstance("TLSv1")
        context.init(kmf.keyManagers, trustAllCerts, java.security.SecureRandom())
        val socketFactory = context.socketFactory
        HttpsURLConnection.setDefaultSSLSocketFactory(socketFactory)
        doAsync {
            val url = URL(sourceUrl)
            val urlConnection = url.openConnection() as HttpsURLConnection
            val `in` = urlConnection.inputStream
        }
ssl=0x5266a740:ssl库中出现故障,通常是协议错误 W:错误:14077102:SSL例程:SSL23_GET_SERVER_HELLO:不支持的协议(外部/openssl/SSL/s23_clnt.c:714 0x52587f10:0x00000000) W:com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:448) W:com.android.okhttp.Connection.upgradeToTls(Connection.java:146) W:com.android.okhttp.Connection.connect(Connection.java:107) W:com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294) W:com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255) W:com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206) W:com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345) W:com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296) W:com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:179) W:com.android.okhttp.internal.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:246) W:com.triomobil.triotys.pinning.PinningActivity$onCreate$1.invoke(PinningActivity.kt:142) W:com.triomobil.triotys.pinning.PinningActivity$onCreate$1.invoke(PinningActivity.kt:33) W:org.jetbrains.anko.AsyncKt$doAsync$1.invoke(Async.kt:140) W:org.jetbrains.anko.AsyncKt$doAsync$1.invoke(Async.kt) W:org.jetbrains.anko.AsyncKt$sam$Callable$761a5578.call(Async.kt) W:at java.util.concurrent.FutureTask.run(FutureTask.java:237) W:at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152) W:at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265) W:at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) W:at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) W:at java.lang.Thread.run(Thread.java:841) W:由以下原因引起:javax.net.ssl.SSLProtocolException:ssl握手中止:ssl=0x5266a740:ssl库中出现故障,通常是协议 错误 W:错误:14077102:SSL例程:SSL23_GET_SERVER_HELLO:不支持的协议(外部/openssl/SSL/s23_clnt.c:714 0x52587f10:0x00000000) W:com.android.org.conscrypt.NativeCrypto.SSL\u do\u握手(本机方法) W:com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:406) W:。。。20多


我在寻找所有类似的问题。我什么都试过了,但没用

“…不支持的协议…”-这意味着服务器不支持您正在使用的SSL/TLS协议(“TLSv1”)。这与证书无关。请检查您的服务器支持哪些协议,并确保它们符合您的期望。我的服务器支持TLSv1.1。数据包捕获(tcpdump,wireshark…-上载到cloudshark.org)可能有助于进一步调试问题。通过数据包捕获,人们可以看到握手的细节,并可能找到握手失败的原因。我在API 16模拟器上遇到了这个问题。另见。
javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: