Value Stream Indonesia

Implementasi SSL Pinning pada Aplikasi Mobile (Android & iOS)

Ditulis oleh Rahman Hardianto – Trainer V-Academy

SSL Pinning / Certificate Pinning merupakan cara untuk memastikan request dari aplikasi yang diterima server valid tanpa adanya interupsi atau perubahan yang mungkin diakibatkan dari serangan MiTM (Man in The Middle Attack). SSL Pinning akan mengamankan jembatan komunikasi yang terhubung ke server, sehingga jika terdapat request yang diterima server namun berbeda certificate maka server akan menolaknya.

Kali ini kita akan coba menambahkan SSL Pinning pada Aplikasi Mobile (Android & iOS) menggunakan Certificate Pinner. Kita akan menggunakan domain yang telah dilengkapi ssl dari api.github.com sebagai percobaan.

Langkah pertama, kita perlu mendapatkan Public Key/Hash dari .cer/.crt file

  1. Download certificate server
  2. Selanjutnya, kita eksekusi perintah di bawah ini hilangkan tanda petik dua
    openssl x509 -in “your_cerficate.cer” -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64
  3. Setelah itu akan muncul key hasil dari file .cer yang kita generate, contoh “lmo8/KPXoMsxI+J9hY+ibNm2r0IYChmOsF9BxD74PVc=”

Setelah kita dapatkan key, kita coba tambahkan pada aplikasi Android dan iOS kita. Untuk Android kita menggunakan OkHttpClient dan iOS akan menggunakan URLSession.

Bagian I – Android

Buat object CertificatePinner dengan key yang telah didapatkan sebelumnya

Definisikan CertificatePinner pada http client yang akan kita gunakan seperti di bawah ini

Bagian II – iOS

Kita coba buat Object Helper untuk request ke API dengan mendefinisikan key yang telah kita dapatkan sebelumnya

Tambah extends URLSessionDelegate pada class helper yang telah kita buat dan definisikan method urlSession seperti di bawah

Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *