8

期限切れ/自己署名証明書のある社内サイトをクロールする必要があります。そのホストに対して有効な証明書を構成する人は誰もいないので、安全でない接続を使用する必要があります。

curl--insecureそのためのフラグがあり、

Scala finagle ライブラリには.tlsWithoutValidation()モードがあります。

質問: 同様のオプションを持つ Kotlin ライブラリはありますか?

UPD : これまでのところ、私はここにあるジャビッシュの回避策でFuelを使用していますが、まだより良い方法を探しています..

fun useInsecureSSL() {

    // Create a trust manager that does not validate certificate chains
    val trustAllCerts = arrayOf<TrustManager>(object : X509TrustManager {
        override fun getAcceptedIssuers(): Array<X509Certificate>? = null
        override fun checkClientTrusted(chain: Array<X509Certificate>, authType: String) = Unit
        override fun checkServerTrusted(chain: Array<X509Certificate>, authType: String) = Unit
    })

    val sc = SSLContext.getInstance("SSL")
    sc.init(null, trustAllCerts, java.security.SecureRandom())
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.socketFactory)

    // Create all-trusting host name verifier
    val allHostsValid = HostnameVerifier { _, _ -> true }

    // Install the all-trusting host verifier
    HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid)
}

上記の回避策は機能しますが、冗長すぎて、特定の接続だけでなく、アプリによって行われるすべての接続に対して安全でないモードを設定しているようです。

4

1 に答える 1