android 常用文章收藏

Kotlin绕过SSL验证

2019-01-03  本文已影响0人  爱学习的蹭蹭
package com.flong.kotlin.utils.security
import java.security.cert.CertificateException
import java.security.cert.X509Certificate
import javax.net.ssl.*
import javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier
import javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory

object SSLContextSecurity {

    /**
     * 绕过验证
     * @return
     */
    fun createIgnoreVerifySSL(sslVersion: String): SSLSocketFactory {
        var sc = SSLContext.getInstance(sslVersion);
        val trustAllCerts: Array<TrustManager> = arrayOf(object : X509TrustManager {
            @Throws(CertificateException::class)
            override fun checkClientTrusted(
                    chain: Array<java.security.cert.X509Certificate>, authType: String) {
            }

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

            override fun getAcceptedIssuers(): Array<X509Certificate?> {
                return arrayOfNulls(0)
            }
        })

        sc!!.init(null, trustAllCerts, java.security.SecureRandom())

        // Create all-trusting host name verifier
        val allHostsValid = HostnameVerifier { _, _ -> true }
        /***
         * 如果 hostname in certificate didn't match的话就给一个默认的主机验证
         */
        setDefaultSSLSocketFactory(sc.getSocketFactory());
        setDefaultHostnameVerifier(allHostsValid);
        return sc.socketFactory;
    }


}
上一篇 下一篇

猜你喜欢

热点阅读