SSL (Secure Socket Layer) dan TLS (Transport Layer Security) adalah 2 protokol yang memberikan keamanan (security) dalam tranportasi data di dalam jaringan komputer (computer network)
SSL merupakan dasar dari TLS. Istilah SSL dan TLS kadang dipakai untuk hal yang sama, dalam hal ini SSL.
SSL/TLS memberikan kemampuan untuk men-autentikasi, verifikasi data yang menjamin integritas data yang dikirimkan atau diterima dalam jaringan komputer. Penggunanan protokol SSL/TLS memberikan jaminan data yang dikirim dari satu komputer melalui jarangan komputer ke komputer lainnya tidak dibaca, tidak dirubah dalam perjalanan data itu sendiri dan dapat memastikan bahwa
data yang dikirimkan sampai ke tujuan yang dikehendaki.
Untuk menjamin faktor-faktor yang ditulis di atas ini diperlukan
- enkripsi data yang menjadikan data yang ada tidak bisa dibaca oleh selain pengirim dan penerima
- proses sign it yang menjadikan penerima punya keyakinan bahwa data yang diterima adalah data yang dikirim oleh pengirim.’
Untuk itu dibutuhkan apa yang disebut keys (kunci)
Kunci (Keys)
Ada 2 jenis kunci:
- Kunci Privat ( Private Keys)
- Kunci Publik (Public Keys)
Kedua kunci ini bersifat sepasang, dengan pengertian untuk mengenkripsi dan dekripsi (decrypt) dibutuhkan kedua kunci tersebut. Kunci Publik bisa diakses semua orang. Contoh yang dapat dilihat dari internet adalah seperti berikut
$key->toString('PKCS1').
-----BEGIN RSA PUBLIC KEY-----
MEgCQQCo9+BpMRYQ/dL3DS2CyJxRF+j6ctbT3/Qp84+KeFhnii7NT7fELilKUSnx
S30WAvQCCo2yU1orfgqr41mM70MBAgMBAAE=
-----END RSA PUBLIC KEY-----
PKCS8
Kunci publik di atas didapat dari situs berikut: https://phpseclib.com/docs/rsa-keys
Berbeda dengan kunci publik, kunci privat haruslah dijaga untuk tidak diketahui oleh pihak-pihak yang tidak berkepentingan.
Komponen berikutnya yang diperlukan untuk menciptakan sebuah ekosistem jaringan komputer yang bersifat aman, dibutuhkan apa yang disebut sebagai sertifikat digital.
Kedua
Kedua kunci di atas, publik dan privat adalah bersifat sepasang, yang artinya untuk mengenkripsi dibutuhkan private key dan untuk
mengubah data yang dienkripsi dibutuhkan public key.
Kunci publik (public keys) bisa diakses oleh semua pihak.
Kunci privat (private keys)bersifat rahasia dan harus dijaga kerahasiannya oleh sang pengguna.
Lalu untuk menciptakan sebuah ekosistem komunikasi rahasia di jaringan komputer dibutuhkan apa yang disebut sebagai sertifikat digital. Badan yang mengeluarkan sertifikat digital ini adalah apa yang disebut sebagai Certificate Authority (CA). CA yang saya kenal salah satunya adalah GlobalSign.
Cara Mendapatkan Sertifikat Digital
Sertifikat Digital didapatkan dari sebuah CA seperti yang disebut di atas. Untuk itu perlu diciptakan apa yang disebut sebagai CSR (Certificate Signing Request).
openssl req -new -key private.key -out mycsr.csr -subj "/C=US/ST=California/L=San Francisco/O=Example Inc./OU=IT/CN=www.example.com/emailAddress=admin@example.com"
Perintah di atas akan menghasilkan file csr yang bernama: mycsr.csr. File bernama mycsr.csr ini kemudian dikirimkan ke sebuah CA yang kemudian akan mengirimkan balik dalam format zip yang berisikan sertifikat digital and kunci privat.
Berikut diperlihatkan contoh dari sebuah kunci privat. Kunci ini hanyalah sebagai contoh, karena saat sebuah kunci privat dapat dilihat secara umum, hilanglah fungsi dari kunci privat ini. Kunci privat adalah rahasia yang harus selalu dijaga.
$key->toString('PKCS8').
-----BEGIN PRIVATE KEY-----
MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqPfgaTEWEP3S9w0t
gsicURfo+nLW09/0KfOPinhYZ4ouzU+3xC4pSlEp8Ut9FgL0AgqNslNaK34Kq+NZ
jO9DAQIDAQABAkAgkuLEHLaqkWhLgNKagSajeobLS3rPT0Agm0f7k55FXVt743hw
Ngkp98bMNrzy9AQ1mJGbQZGrpr4c8ZAx3aRNAiEAoxK/MgGeeLui385KJ7ZOYktj
hLBNAB69fKwTZFsUNh0CIQEJQRpFCcydunv2bENcN/oBTRw39E8GNv2pIcNxZkcb
NQIgbYSzn3Py6AasNj6nEtCfB+i1p3F35TK/87DlPSrmAgkCIQDJLhFoj1gbwRbH
/bDRPrtlRUDDx44wHoEhSDRdy77eiQIgE6z/k6I+ChN1LLttwX0galITxmAYrOBh
BVl433tgTTQ=
-----END PRIVATE KEY-----
Seperti terlihat dari contoh-contoh di atas, adalah sangat mudah untuk menciptakan CSR, kunci privat, kunci publik oleh kita sendiri, Sertifikat semacam ini sering disebut sebagai self-signed certificate. Untuk keperluan komersil dan untuk berbagai situs yang diakses oleh umum adalah sangat bijak untuk menggunakan CA komersial, yang berbayar. Sertifikat komersial akan dikenal oleh berbagai web browser seperti Safari, Bing, Chrome dan lainnya. Sertifikat Self-signed tidak menimbulkan banyak masalah saat digunakan secara internal. Pengunaan Sertifikat Self-signed untuk umum akan menimbulkan pesan seperti di bawah ini:
"The Connection for This Site is Not Secure"
Di saat publik mengakses situs semacam ini akan menimbulkan ketidakpercayaan dan biasanya akan menyebabkan pengunjung situs untuk tidak men-klik lebih lanjut.
Jenis-jenis Sertifikat
Ada beberapa macam jenis sertifikat, di antaranya:
- Extended Validated Certificates (EVC)
- Domain validation Certificates (DVC)
EVC merupakan sertifikat digital dengan keamanan keamanan dan otentitasi tertinggi, Untuk mendapatkan EVC ini, CA akan meminta dokumen yang membuktikan badan hukum yang memegang situs web ini . Sedang DVC lebih sederhana di mana CA hanya membutuhkan bahwa requester DVC untuk membuktikan bahwa dia adalah pemilik domain dari DVC yang diminta.
Umumnya satu sertifikat digital diperuntukan untuk 1 nama domain. Contohnya di situ ini : pasirdatar.tech. Di kasus-kasus khusus ada yang disebut sertifikat wildcard. Sertifikat jenis ini bisa dicontohkan, dalam kasus ini pasirdatar.tech, menjadi seperti di bawah ini:
*.pasirdatar.tech
Dimana tanda “*” bisa diganti dengan berbagai string. Misalnya indah.pasirdatar.tech. Untuk kasus ini indah merupakan sub domain dari pasirdatar.tech.
Ada satu jenis sertifikat lainnya, dengan apa yang disebut Subject Alternative Name (SAN). Dengan Sertifikat SAN ini dapat digunakan untuk beberapa nama domain pasirdatar.tech, pasirdatar.com, pasirdatar.edu.
Encoding dan Extension
Ada berbagai macam encoding dari sertifikat digital ini: file biner dan file berbasis base64. Sedangkan extension dari file sertifikat ini berupa:
- .CERT
- .DER
- ..PEM — Privacy Enhanced Electron Mail
- .CRT
Di artikel berikut ini akan diperlihatkan beberapa perintah linux yang sering digunakan dalam instalasi sertifikat digital.
Rantai Kepercayan – Chain of Trust
Dalam manajemen sertifikat digital ada yang disebut sebagai rantai kepercayaan, yang dimulai dari Sertifikat Root, Sertifikat Intermediate (bisa lebih dari 1) dan yang terakhir sertfikat pengguna (akhir). Sertifikat Root adalah yang tertinggi, yang akan menandatangi (men-signed) sertifikat intermediate dan sertifikat intermediate akan menandatangani sertifikat akhir. Hal ini menciptakan sebuah kepercayaan yang tinggi di mana mata rantai sebuah sertifikat akhir (pengguna) dapat dipercayai sepenuhnya. Sebagai tambahan jika ada yang bertanya, Sertifikat Root ditandatangani (signed) oleh Sertifikat Root sendiri.
Rantai kepercayaan ini menciptakan kepercayaan yang kuat terhadap sertifikat akhir.
Contoh
Salah satu CA yang cukup dikenal adalah GlobalSign. Dari situs web perusahaan ini dapat dilihat sertifikat intermediate dari sertifikat organisasi seperti terlihat di bawah ini.
Sertifikat intermediate ini bisa dilihat di link ini. Terlihat dari gambar di atas Sertifikat intermediate ini bisa diunduh dalam bentuk Biner/DER atau dalam format Base64.
Berbagai Sertifikat Root dari Globalsign dapat dilihat dari di halaman ini. Berbagai perintah linux untuk menangani sertifikat ssl ini di situs ini dibahas di artikel ini.