Teknologi Umum v2.0
Reinaldy

abis baca post orang jadi penasaran

Apakah Anda tahu kalau SSL certificate bisa digunakan selain untuk keperluan website (https)?

Apakah Anda tahu kalau SSL certificate bisa digunakan selain untuk keperluan website (https)?

1114
TahuTidak

Yak betul, SSL (yang sebenernya sekarang lebih disebut sebagai TLS -- Transport Layer Security) merupakan sebuah protokol (suatu standar untuk melakukan formatting & processing terhadap suatu data -- baca: https://www.cloudflare.com/en-gb/learning/network-layer/what-is-a-protocol/) agar suatu koneksi dapat terlaksana secara aman.
Kalo bahasa bullshit ala-ala security auditor Indonesia itu "agar koneksinya ter-enkripsi", yang kalo ditanya, most of the time mereka nggak bisa jawab gimana cara kerja encryption di berbagai layer.

TLS (baca: https://www.cloudflare.com/en-gb/learning/ssl/transport-layer-security-tls/), itu memang salah satu tujuannya untuk mengamankan website, dimana kita sebagai users bisa memasukan kombinasi email, password, kalau mau sawer vtuber favorit harus masukin data kartu kredit, kalo mau checkout merchandise wibu juga harus masukin data-data yang sangat sensitif. Kalau di dalam perjalanan (in-transport) sudah encrypted, akan meminimalisir terjadinya Man In the Middle attack atau Packet Sniffing.

Ilustrasi TLS handshake. Setelah prosedur handshake ini selesai, barulah semua data yang lewat koneksi ini bisa dijamin keamanannya, susah banget buat dibaca mentah-mentah tulisannya.

Bukan, beda sama handshake JKT48 yang sekarang sistemnya undian.

Sekarang kita bahas certificate nya, di dalam suatu paket (atau bundle) certificate yang sah, biasanya terdiri atas:

  • Certificate Authority -> Siapa pihak berwenang yang melakukan issuance (mengeluarkan) sertifikat ini.
  • Certificate -> Certificate TLS nya yang public, boleh dibaca orang lain.
  • Private Key -> Certificate TLS nya yang private, harus disimpan baik-baik.
    Combo dari 3 ini bakal bikin simbol gembok warna hijau di browser.

Kalo di browser websitenya https juga, tapi gemboknya warna merah, agak kebuka sedikit gimana? Nah itu namanya certificate invalid. Invalid ini bisa karena (1) self-signed, atau (2) certificate nya udah expired.
Self-signed -> Bukan dari "Certificate Authority" yang populer. Contoh CA yang populer: Google, ZeroSSL, Lets Encrypt, GlobalSign, dll. Biasanya dipakai untuk personal use, atau internally di kantor. Baca: https://www.linode.com/docs/guides/create-a-self-signed-tls-certificate/
Certificate udah expired -> ya.. udah expired, ibarat Indomie udah expired, masih mau dimakan? Bisa aja, tapi nggak ada yang jamin abis ini tetep sehat atau masuk IGD.
REVISI: Ada beberapa poin tambahan lagi dari Pak Zasda: https://t.me/teknologi_umum_v2/632866

Oke so far harusnya udah paham basic-basic TLS dan butuh apa aja biar bisa dapet gembok hijau itu.
Tapi kan yang kita tau sebatas buat website doang, https doang.
Kalo di inget-inget lagi, kan namanya "Transport Layer Security", jadi sebenernya koneksi protokol apapun selain HTTP yang bisa implement TLS ya bisa aja pake TLS.
Misal beberapa yang populer disini bisa kok pake TLS, contoh:

Seharusnya muncul pertanyaan: Kalo misal PostgreSQL kita bikin koneksinya pake TLS, buat apa sih sebenernya? Bukannya yang namanya database itu nggak akan pernah di-expose ke public ya?
TLS itu guarantee security di level transport. Client yang pegang Certificate Authority yang sama kayak di PostgreSQL bisa memastikan juga kalo dia connect ke server yang bener.

Pertanyaan lanjutan: Kalo cuma memastikan client (app biasanya sih) connect ke server PostgreSQL yang bener, kan bisa aja kita bikin server PostgreSQL palsu yang pake TLS certificate yang sama, misal expiry certificate nya 10 tahun.
Nah, TLS yang modern itu bisa juga meng-authenticate dirinya sendiri dengan cara menunjukan certificate. Kalau selama ini kan cuma server yang show certificatenya (semua certificate & private key hanya dipegang server). Tapi kalau ada client yang juga turut show certificatenya (certificate & private key tadi) kepada si server, maka terjadi yang namanya TLS Client Authentication. Baca: https://blog.cloudflare.com/introducing-tls-client-auth/

Dah sampe sini aja. Kalo ada pertanyaan, langsung reply ke message terkait.
Kalo tertarik sama konten-konten kayak gini, beri like ke message yang ini: https://t.me/teknologi_umum_v2/632857 (biar Aji masukin ke TGIF nya teknum)

Nggak bahas beberapa hal ini karena out of scope:

  • Certificate Management (ACME, Vault)
  • TLS version (1.1 vs 1.2 vs 1.3)
  • QUIC
  • Crypto algo for TLS certificate (kebanyakan)
  • Secure ClientHello
  • berbagai vendor kayak OpenSSL, LibreSSL, WolfSSL, dll (tapi khusus yang ini, ada interesting table yang bisa di lihat https://en.wikipedia.org/wiki/Comparison_of_TLS_implementations)
Zasda Yusuf Mikail

Izin edit yang mulia:

  1. CA yg sign cert tersebut tidak terdaftar as Trusted CA di komputer tersebut. (Self sign tidak masalah asal diimport dulu CA yg sign as Trusted CA)
  2. Expired
  3. Masuk ke dalam Certificate Revocation List (CRL)