I want to perform a https
request to an arbitrary IP but I run into the following error:
No subject alternative names matching IP address XX.XX.XX.XX found
I have tried to disable the SSL verification but the error persists:
import java.net.URI
import java.net.http.HttpRequest.BodyPublishers
import java.net.http.HttpResponse.BodyHandlers
import java.net.http.{HttpClient, HttpRequest}
import java.security.SecureRandom
import java.security.cert.X509Certificate
import java.time.Duration
import java.util.concurrent.ConcurrentLinkedQueue
import javax.net.ssl.{SSLContext, X509TrustManager}
import scala.io.Source
import scala.jdk.CollectionConverters.MapHasAsScala
import scala.sys.SystemProperties
object TrustAnyTrustManager extends X509TrustManager {
override def getAcceptedIssuers : Array[X509Certificate] = Array()
override def checkClientTrusted(x509Certificates: Array[X509Certificate], s: String): Unit = {}
override def checkServerTrusted(x509Certificates: Array[X509Certificate], s: String): Unit = {}
}
def request(target : String, ssl : Boolean = true) = {
val sslContext = SSLContext.getInstance("TLS")
sslContext.init(null, Array(TrustAnyTrustManager), new SecureRandom())
new SystemProperties().addOne("jdk.internal.httpclient.disableHostnameVerification" -> true.toString)
val client = HttpClient.newBuilder()
.sslContext(sslContext)
.connectTimeout(Duration.ofSeconds(2))
.followRedirects(HttpClient.Redirect.NEVER).build()
val url = s"http${if (ssl) "s" else ""}://$target"
val request = HttpRequest.newBuilder(URI.create(url)).method("HEAD", BodyPublishers.noBody()).build()
val response = client.send(request, BodyHandlers.discarding())
}
How can I disable the alternative names check?