期限切れ/自己署名証明書のある社内サイトをクロールする必要があります。そのホストに対して有効な証明書を構成する人は誰もいないので、安全でない接続を使用する必要があります。
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)
}
上記の回避策は機能しますが、冗長すぎて、特定の接続だけでなく、アプリによって行われるすべての接続に対して安全でないモードを設定しているようです。