Skip to main content

How to handle SSL certificates in OKHTTP in Kotlin Android

How to handle SSL certificates in OKHTTP in Kotlin Android.

Here's a step-by-step tutorial on how to handle SSL certificates in OKHTTP in Kotlin for Android:

Step 1: Add dependencies

To start, you need to add the necessary dependencies to your project. Open your project's build.gradle file and add the following lines to the dependencies block:

implementation 'com.squareup.okhttp3:okhttp:4.9.1'
implementation 'javax.net.ssl:ssl-context:1.0.0'
implementation 'javax.net.ssl:ssl-context-builder:1.0.0'

Sync your project to download the dependencies.

Step 2: Create SSLContext

Next, you need to create an SSLContext object that will handle the SSL configuration. In this example, we'll use a self-signed certificate.

import javax.net.ssl.SSLContext
import java.security.KeyStore
import java.security.cert.CertificateFactory

fun createSSLContext(): SSLContext {
val certificateFactory = CertificateFactory.getInstance("X.509")
val certificate = certificateFactory.generateCertificate(inputStream) // replace inputStream with your certificate file
val keyStore = KeyStore.getInstance(KeyStore.getDefaultType())
keyStore.load(null, null)
keyStore.setCertificateEntry("certificate", certificate)

val trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
trustManagerFactory.init(keyStore)

val sslContext = SSLContext.getInstance("TLS")
sslContext.init(null, trustManagerFactory.trustManagers, null)

return sslContext
}

Make sure to replace inputStream with your certificate file. You can store your certificate file in the res/raw directory and access it using context.resources.openRawResource(R.raw.my_certificate).

Step 3: Create OkHttpClient

Now, create an OkHttpClient with the custom SSL configuration. You can use the SSLContext created in the previous step.

import okhttp3.OkHttpClient

fun createOkHttpClient(): OkHttpClient {
val sslContext = createSSLContext()
val sslSocketFactory = sslContext.socketFactory

return OkHttpClient.Builder()
.sslSocketFactory(sslSocketFactory, trustManager)
.build()
}

Step 4: Make HTTP requests

With the OkHttpClient created, you can now use it to make HTTP requests as usual. Here's an example of making a GET request to a URL:

import okhttp3.Request

val client = createOkHttpClient()
val request = Request.Builder()
.url("https://example.com")
.build()

val response = client.newCall(request).execute()
val responseBody = response.body?.string()

Replace "https://example.com" with the URL you want to make a request to.

That's it! You have successfully handled SSL certificates in OKHTTP in Kotlin for Android. Remember to handle any exceptions that may occur during the process and adjust the code based on your specific certificate and server configurations.