Исправление небезопасной реализации HostnameVerifier - PullRequest
0 голосов
/ 21 апреля 2020

Я получаю предупреждение на панели инструментов Google, в котором говорится, что мне нужно исправить способ, которым я принимаю самозаверяющие сертификаты. Проблема заключается в том, что приложение, над которым я работаю, должно иметь возможность подключаться к нескольким самозаверяющим сертификатам, а URL-адреса серверов вводятся пользователем вручную.

Код, который у меня сейчас есть, это * 1003. *

        try {
            HttpsURLConnection.setDefaultHostnameVerifier { hostname, session -> true }
            val ssl_context = SSLContext.getInstance("TLS")

            ssl_context.init(null, arrayOf<X509TrustManager>(object : X509TrustManager {
                @Throws(CertificateException::class)
                override fun checkClientTrusted(chain: Array<X509Certificate>, authType: String) {
                }

                @Throws(CertificateException::class)
                override fun checkServerTrusted(chain: Array<X509Certificate>, authType: String) {
                }

                override fun getAcceptedIssuers(): Array<X509Certificate?> {
                    return arrayOfNulls(0)
                }
            }), SecureRandom())
            HttpsURLConnection.setDefaultSSLSocketFactory(
                ssl_context.socketFactory
            )
        } catch (e: Exception) { 
            //e.printStackTrace();
        }

Есть ли более безопасный способ принять любой тип самоподписанного сертификата?

...