Apa Itu SSL Pinning, Manfaat, dan Cara Mengimplementasikannya

Sedang Trending 1 tahun yang lalu

Sedang mencari langkah untuk memperkuat pertahanan aplikasi dari serangan man-in-the-middle?

Jika ya, Anda perlu mengenal SSL pinning

Apa Itu SSL Pinning?

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

Jadi, saat aplikasi alias perangkat berkomunikasi dengan server, aplikasi tersebut bakal membandingkan public key sertifikat SSL/TLS server dengan public key nan sudah ditanamkan (hardcode) di dalam aplikasi alias perangkat tersebut. 

Jika keduanya cocok, maka hubungan dianggap aman.

Normalnya, aplikasi bakal mempercayai sertifikat nan ditandatangani oleh Certificate Authority (CA) terpercaya. Namun, CA berisiko dikompromikan, dan hacker bisa membikin sertifikat tiruan nan tampak asli.

Nah, SSL Pinning mencegah perihal ini dengan membatasi sertifikat nan dipercaya hanya untuk sertifikat nan 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 penyerang menyisipkan diri di antara komunikasi pengguna dan server, mencegat dan memanipulasi info nan dipertukarkan. 

Nah, dengan SSL Pinning, aplikasi hanya bakal berkomunikasi dengan server nan mempunyai sertifikat alias private key nan tepat sehingga mencegah penyerang untuk menyisipkan sertifikat palsu.  

2. Mencegah Serangan Berbasis Sertifikat

SSL Pinning mencegah serangan nan melibatkan sertifikat tiruan alias CA nan dikompromikan. 

Meskipun penyerang sukses mendapatkan sertifikat sah untuk domain tertentu, aplikasi nan di-pinning bakal menolaknya dan memblokir hubungan tiruan tersebut.  

3. Meningkatkan Performa 

SSL Pinning meningkatkan performa aplikasi lantaran mengurangi waktu nan dibutuhkan untuk pengesahan sertifikat. 

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

4. Memastikan Kepercayaan

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

Cara Kerja SSL Pinning

SSL Pinning bekerja dengan cara:

  1. Klien (misalnya, aplikasi seluler) membikin hubungan SSL/TLS dengan server.  
  2. Server mengirimkan sertifikat dan kunci publiknya, nan digunakan untuk mengenkripsi info nan dipertukarkan antara pengguna dan server.  
  3. Klien memverifikasi identitas server dengan memeriksa sertifikat digital server nan dikeluarkan oleh CA nan terpercaya.  
  4. Dengan SSL Pinning, pengguna juga memeriksa apakah kunci publik server cocok dengan kunci publik nan telah di-hardcode ke dalam kode alias konfigurasi klien.  
  5. Jika public key cocok, hubungan diizinkan untuk dilanjutkan.  
  6. Jika public key server tidak cocok dengan kunci nan disematkan, pengguna menganggap bahwa serangan MITM sedang berjalan dan menghentikan koneksi.  
  7. Jika pengguna perlu memperbarui public key yang disematkan, aplikasi kudu diperbarui dengan kunci nan baru.

Bagaimana Implementasi SSL Pinning?

1. Android

Pada Android, penerapan SSL Pinning dapat dilakukan dengan beberapa cara:

Network Security Configuration (Android 7.0+)

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

Kemudian, tambahkan konfigurasi domain dan pin sertifikat (dalam corak 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 alias 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 langkah nan mirip dengan Android, ialah dengan custom penerapan di kode aplikasi.

Salah satu caranya menggunakan URLSessionDelegate.

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

Lakukan pengesahan 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 pengesahan gagal

        }

    }

}

3. Web (Browser)

SSL Pinning pada web browser umumnya kurang relevan untuk aplikasi web biasa lantaran browser sudah mempunyai sistem pengesahan sertifikat bawaan. 

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

  • HTTP Public Key Pinning (HPKP): Header HTTP nan sudah deprecated dan tidak disarankan lagi.
  • Service Worker: Mungkin diimplementasikan dengan interceptor di service worker (lebih kompleks dan advanced).

Beli SSL Lebih Hemat di GudangSSL!

Nah, untuk mengimplementasikan SSL spinning, Anda memerlukan penyedia SSL terpercaya, seperti GudangSSL!

GudangSSL adalah penyedia sertifikat SSL terbaik dan termurah nan menyediakan sertifikat SSL dari beragam brand ternama, seperti Sectigo, Globalsign, Entrust, Sectigo, Symantec, dan banyak lagi.

Kami juga menyediakan beragam produk SSL dengan nilai 30% lebih irit daripada CA!

Semua produk SSL di GudangSSL bisa bekerja di lebih dari 99% browser! Bila ada masalah, kami memberikan GARANSI 15 HARI setelah SSL diaktifkan!

Yuk, amankan website Anda sekarang dengan sertifikat SSL dari GudangSSL!

HUBUNGI KAMI SEKARANG!

Selengkapnya
Sumber Tips Trik Gudangssl
Tips Trik Gudangssl