diff --git a/connekt-script-definition/src/main/java/io/amplicode/connekt/dsl/SslExtenstions.kt b/connekt-script-definition/src/main/java/io/amplicode/connekt/dsl/SslExtenstions.kt index 7ff66d0..fdeaeeb 100644 --- a/connekt-script-definition/src/main/java/io/amplicode/connekt/dsl/SslExtenstions.kt +++ b/connekt-script-definition/src/main/java/io/amplicode/connekt/dsl/SslExtenstions.kt @@ -6,6 +6,7 @@ import java.security.KeyStore import java.security.SecureRandom import java.security.cert.Certificate import java.security.cert.CertificateFactory +import java.security.cert.X509Certificate import javax.net.ssl.SSLContext import javax.net.ssl.TrustManagerFactory import javax.net.ssl.X509TrustManager @@ -83,4 +84,32 @@ fun OkHttpClient.Builder.addKeyStore(keyStoreFile: File, keystorePassword: Strin sslContext.socketFactory, trustManager ) +} + +/** + * Configures the [OkHttpClient.Builder] so that SSL/TLS certificate verification is disabled. + * + * This method creates a trust-all-certificates [X509TrustManager] which accepts any certificate. + * Using this configuration makes your application vulnerable to man-in-the-middle attacks because it + * will accept invalid or untrusted certificates. + * + * **IMPORTANT:** NEVER USE THIS METHOD IN PRODUCTION! Disabling SSL certificate validation exposes sensitive data + * and can lead to security breaches. + */ +fun OkHttpClient.Builder.insecure() { + + val trustAllCerts = object : X509TrustManager { + override fun checkClientTrusted(chain: Array?, authType: String?) {} + + override fun checkServerTrusted(chain: Array?, authType: String?) {} + + override fun getAcceptedIssuers(): Array? = emptyArray() + } + + val sslContext = SSLContext.getInstance("TLS") + sslContext.init(null, arrayOf(trustAllCerts), SecureRandom()) + + + sslSocketFactory(sslContext.socketFactory, trustAllCerts) + } \ No newline at end of file diff --git a/connekt-script-definition/src/test/java/io/amplicode/connekt/SslTest.kt b/connekt-script-definition/src/test/java/io/amplicode/connekt/SslTest.kt index 32fbd7e..fd90103 100644 --- a/connekt-script-definition/src/test/java/io/amplicode/connekt/SslTest.kt +++ b/connekt-script-definition/src/test/java/io/amplicode/connekt/SslTest.kt @@ -3,6 +3,7 @@ package io.amplicode.connekt import io.amplicode.connekt.dsl.GET import io.amplicode.connekt.dsl.addX509Certificate import io.amplicode.connekt.dsl.addKeyStore +import io.amplicode.connekt.dsl.insecure import io.amplicode.connekt.test.utils.server.ServerSslParams import io.amplicode.connekt.test.utils.server.TestServer import io.amplicode.connekt.test.utils.asUnit @@ -113,4 +114,15 @@ class SslTest(server: TestServer) : TestWithServer(server) { assertEquals("foo", body?.string()) } }.asUnit() + + @Test + fun `insecure via ext function`() = runScript { + configureClient { + insecure() + } + + GET("$hostHttps/foo") then { + assertEquals("foo", body?.string()) + } + }.asUnit() } \ No newline at end of file