Faqihah Husnul Faqihah Husnul Khatimah adalah SEO Writer dengan pengalaman 2+ tahun menciptakan konten informatif dan persuasif untuk berbagai industri, termasuk teknologi. Bersama GudangSSL, berkomitmen untuk membantu Anda menemukan sertifikat SSL terbaik dan terpercaya.

Apa Itu SSL Pinning, Manfaat, dan Cara Mengimplementasikannya

4 min read

Sedang mencari cara untuk memperkuat pertahanan website atau aplikasi dari serangan man-in-the-middle?

Jika ya, GudPeople perlu mengenal SSL Pinning. 

Apa Itu SSL Pinning?

SSL Pinning adalah sebuah teknik untuk mencegah serangan Man-in-the-Middle (MITM) dengan cara menanamkan public key dari sertifikat SSL/TLS secara hardcode (langsung dimasukkan ke dalam kode) ke aplikasi atau perangkat. 

Jadi, saat aplikasi atau perangkat berkomunikasi dengan server, aplikasi tersebut akan membandingkan public key sertifikat SSL server dengan public key yang sudah ditanamkan (hardcode) di dalam aplikasi atau perangkat tersebut. 

Jika keduanya cocok, maka koneksi dianggap aman.

Normalnya, aplikasi akan mempercayai sertifikat yang ditandatangani oleh Certificate Authority (CA) terpercaya. 

Namun, CA berisiko dikompromikan, dan hacker bisa membuat sertifikat palsu yang tampak asli.

Nah, SSL Pinning mencegah hal ini dengan membatasi sertifikat yang dipercaya hanya untuk sertifikat yang telah ditentukan.  

Manfaat SSL Pinning

1. Meningkatkan Keamanan 

SSL Pinning menambahkan lapisan keamanan ekstra terhadap serangan Man-in-the-Middle (MITM). 

Serangan MITM terjadi ketika peretas menyisipkan diri di antara komunikasi client dan server untuk mencegat dan memanipulasi pertukaran data. 

Nah, bila menggunakan teknik SSL Pinning, aplikasi hanya akan berkomunikasi dengan server yang memiliki sertifikat atau private key yang tepat sehingga mencegah peretas menyisipkan sertifikat palsu.  

2. Mencegah Serangan Berbasis Sertifikat

SSL Pinning mencegah serangan yang melibatkan sertifikat palsu atau CA yang dikompromikan. 

Meskipun peretas berhasil mendapatkan sertifikat valid untuk domain tertentu, aplikasi yang di-pinning akan menolaknya dan memblokir koneksi palsu tersebut.  

3. Meningkatkan Performa Aplikasi

SSL Pinning meningkatkan performa aplikasi karena mengurangi waktu yang dibutuhkan untuk validasi sertifikat. 

Aplikasi tidak perlu lagi memvalidasi sertifikat server dengan CA terpercaya sehingga menghemat waktu pemrosesan dan mengurangi latensi.  

4. Memastikan Kepercayaan

Dengan mewajibkan perangkat klien untuk memverifikasi identitas server melalui sertifikat atau public key terpercaya, SSL Pinning memastikan kepercayaan antara client dan server.

Cara Kerja SSL Pinning

SSL Pinning bekerja dengan cara:

apa itu SSL pinning
Sumber: indusface.com
  1. Client (misalnya, aplikasi seluler atau browser) membuat koneksi SSL/TLS dengan server.  
  2. Server mengirimkan sertifikat dan public key, yang digunakan untuk mengenkripsi data yang dipertukarkan antara client dan server.  
  3. Client memverifikasi identitas server dengan memeriksa sertifikat digital server yang dikeluarkan oleh CA terpercaya.  
  4. Dengan SSL Pinning, client juga memeriksa apakah public key server cocok dengan public key yang telah di-hardcode ke dalam kode atau konfigurasi client.  
  5. Jika public key cocok, koneksi diizinkan untuk dilanjutkan.  
  6. Jika public key server tidak cocok dengan kunci yang disematkan, client menganggap bahwa serangan MITM sedang berlangsung dan menghentikan koneksi.  
  7. Jika client perlu memperbarui public key yang disematkan, aplikasi harus diperbarui dengan kunci yang baru.

Bagaimana Implementasi SSL Pinning?

1. Android

Pada Android, implementasi SSL Pinning dapat dilakukan dengan beberapa cara, yakni:

Network Security Configuration (Android 7.0+)

Buat file XML network_security_config.xml di folder res/xml.

Kemudian, tambahkan konfigurasi domain dan pin sertifikat (dalam bentuk hash).

XML

<?xml version=”1.0″ encoding=”utf-8″?>

<network-security-config>

    <domain-config>

        <domain includeSubdomains=”true”>your_domain.com</domain>

        <pin-set>

            <pin digest=”SHA-256″>BASE64_ENCODED_SHA256_PIN</pin>

            <pin digest=”SHA-256″>BASE64_ENCODED_SHA256_BACKUP_PIN</pin>

        </pin-set>

    </domain-config>

</network-security-config>

Ini referensi file konfigurasi di AndroidManifest.xml.

XML

<application

    android:networkSecurityConfig=”@xml/network_security_config”

    …>

</application>

OkHttp dengan CertificatePinner Menggunakan Library OkHttp

Peroleh pin sertifikat (SHA-256 hash dari public key sertifikat). 

Anda bisa mendapatkannya melalui browser atau command line:

openssl s_client -servername your_domain.com -port 443 < /dev/null | openssl x509 -outform PEM | openssl dgst -sha256 -binary | openssl enc -base64.

Setelah itu, implementasikan CertificatePinner di kode OkHttp Anda.

Java

import okhttp3.CertificatePinner;

import okhttp3.OkHttpClient;

// …

CertificatePinner certificatePinner = new CertificatePinner.Builder()

    .add(“your_domain.com”, “sha256/BASE64_ENCODED_SHA256_PIN”)

    .build();

OkHttpClient client = new OkHttpClient.Builder()

    .certificatePinner(certificatePinner)

    .build();

2. iOS

Implementasi SSL Pinning di iOS umumnya dilakukan dengan cara yang mirip dengan Android, yaitu dengan custom implementasi di kode aplikasi.

Salah satu caranya menggunakan URLSessionDelegate.

Implementasikan method URLSessionDelegate seperti urlSession(_:didReceive challenge:completionHandler:).

Lakukan validasi pin sertifikat di dalam method ini:

func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {

    if let trust = challenge.protectionSpace.serverTrust {

        let pinnedCertificates = // Array of pinned certificates

        if SecTrustEvaluateWithError(trust, &error) {

            // Validasi pin sertifikat terhadap pinnedCertificates

        } else {

            // Handle validasi gagal

        }

    }

}

3. Web (Browser)

SSL Pinning pada web browser umumnya kurang relevan untuk aplikasi web biasa karena browser sudah memiliki mekanisme validasi sertifikat bawaan. 

Namun, untuk aplikasi web progresif (PWA) atau aplikasi desktop berbasis web, misalnya Electron, Anda bisa mempertimbangkan implementasi custom.

Kesimpulan

SSL Pinning adalah teknik keamanan yang penting untuk mencegah serangan Man-in-the-Middle dengan cara “menanamkan” public key sertifikat SSL langsung ke dalam aplikasi. 

Jadi, hanya sertifikat yang sesuai yang dipercaya. 

Teknik ini meningkatkan keamanan dengan membatasi sertifikat yang valid, mencegah serangan berbasis sertifikat palsu, meningkatkan performa aplikasi dengan mengurangi waktu validasi sertifikat, dan memastikan kepercayaan antara client dan server. 

Implementasinya berbeda-beda tergantung pada platform, seperti menggunakan Network Security Configuration atau OkHttp di Android, URLSessionDelegate di iOS, dan pertimbangan khusus untuk aplikasi web progresif atau desktop.

Nah, setelah memahami pentingnya SSL Pinning, langkah selanjutnya adalah memastikan Anda menggunakan sertifikat SSL yang terpercaya.

Jangan asal memilih dan membeli sertifikat SSL, ya.

Salah-salah, bukannya meningkatkan keamanan website, malah mendatangkan masalah baru.

Sebab itu, selalu beli sertifikat SSL dari CA atau penyedia SSL terpercaya, seperti GudangSSL!

GudangSSL adalah penyedia sertifikat SSL terbaik dan termurah di Indonesia yang menyediakan sertifikat SSL dari berbagai brand ternama, seperti Sectigo, Globalsign, Entrust, Sectigo, Symantec, dan banyak lagi.

Harga SSL di GudangSSL juga 30% lebih hemat dari CA, lho!

Meski murah, bukan berarti tidak berkualitas, ya! Semua produk SSL di GudangSSL sudah terbukti mampu bekerja di lebih dari 99% browser. Kami juga siap memberikan GARANSI 15 HARI setelah SSL diaktifkan!

Punya pertanyaan? Tak usah sungkan, tim customer support GudangSSL siap menjawab pertanyaan para GudPeople!

HUBUNGI KAMI SEKARANG!

Jadikan website #MakinAman dengan sertifikat SSL dari GudangSSL!

Faqihah Husnul Faqihah Husnul Khatimah adalah SEO Writer dengan pengalaman 2+ tahun menciptakan konten informatif dan persuasif untuk berbagai industri, termasuk teknologi. Bersama GudangSSL, berkomitmen untuk membantu Anda menemukan sertifikat SSL terbaik dan terpercaya.

Session Hijacking: Definisi, Cara Kerja, dan Cara Mencegah

Kehilangan akses dari akun online Anda bisa berakibat fatal, lho, mulai dari pencurian data pribadi hingga kerugian finansial. Salah satu cara peretas melakukan ini...
Faqihah Husnul
5 min read

3 Cara Memperpanjang Sertifikat SSL GudangSSL

Masa berlaku sertifikat SSL biasanya hanya 1 tahun saja. Setelah masa berlaku habis, Anda harus memperpanjang sertifikat secara berkala, ya. Untungnya, kalau membeli SSL...
Faqihah Husnul
2 min read

Reissue SSL: Definisi, Fungsi dan Cara Melakukannya

Sedang mengalami masalah dengan sertifikat SSL yang expired, tidak valid, atau perlu diperbarui karena perubahan informasi website?  Jika ya, Anda mungkin perlu melakukan reissue...
Faqihah Husnul
2 min read