Cara Membuat Sertifikat Authority SSL Apache dan Proxy HTTPS – Artikel ini saya buat berdasarkan kasus yang pernah saya alami di tempat saya yang mana ada sebuah file yang dibutuhkan untuk proses caching salah satu konten video oleh Proxy Squid yang harus berada pada web server dan direspon dengan protokol HTTPS. Dengan menggunakan protokol HTTPS pada web server, sudah tentu dibutuhkan sertifikat SSL yang dianggap valid oleh browser yang kita gunakan.
Ada dua solusi untuk kasus ini, yaitu dengan membeli web hosting yang mendukung protokol HTTPS dengan sertifikat SSL yang valid secara global, cara ini membuat kita harus rela menyisihkan uang untuk membayar web hosting yang digunakan. Atau dengan menggunakan web server internal yang sudah support protokol HTTPS dengan sertifikat SSL yang sudah dianggap valid oleh browser yang digunakan, cara kedua ini memberikan kita konsekuensi untuk harus membuat sertifikat SSL sendiri dan mengimport sertifikat authority-nya ke browser-browser yang digunakan agar sertifikat tersebut dianggap valid oleh browser.
Baca Juga :
Cara Membuat FTP Server Pada Debian 8
Untuk kasus ini direkomendasikan sertifikat authority yang digunakan untuk verifikasi protokol HTTPS web server internal dengan sertifikat authority yang digunakan oleh proxy squid HTTPS sebaiknya sama, tujuannya supaya hanya satu file sertifikat authority saja yang diimport ke browser.
Sebelum menggunakan sertifikat SSL ini terlebih dahulu modul SSL pada Web Server Apache harus sudah aktif. Bagi yang belum mengetahui cara mengaktifkannya silahkan baca artikel : Cara Mengaktifkan Protokol HTTPS atau Mod SSL pada Web Server Apache. Silahkan akses server anda menggunakan SSH dan ikuti panduan berikut :
Membuat Sertifikat Authority SSL
- Ketikkan atau copy paste perintah berikut membuat private key
openssl genrsa -des3 -passout pass:password-anda -out caroot.key 2048
- Lanjutkan dengan perintah berikut untuk men-decrypt caroot.key
openssl rsa -passin pass:password-anda -in caroot.key -out caroot.key
- Kemudian lanjutkan dengan perintah berikut untuk membuat sertifikat authority yang ditanda tangani sendiri, dan jumlah
-days
nya silahkan anda sesuaikan, pada perintah dibawah ini sertifikat authority valid selama 10 tahun kedepan terhitung mulai semenjak serfikat authority dibuatopenssl req -x509 -new -nodes -key caroot.key -sha256 -days 3650 -out caroot.pem
setelah anda menjalankan perintah diatas, anda akan melihat form seperti gambar berikut ini :
Pengisian Form ini tidak sepenuhnya wajib melainkan dibutuhkan sebagai informasi kepemilikan sertifikat tersebut. Silahkan anda sesuikan pada bagian
Country Name, State, Locality, Organization Name dan Unit, Common Name serta Email
. - Langkah berikut ini bertujuan untuk mengkonversi caroot.pem menjadi caroot.crt agar proses import ke browser seperti Mozilla Firefox atau Google Chrome lebih simple. Silahkan ketikkan perintah berikut :
openssl x509 -in caroot.pem -outform DER -out caroot.crt
Membuat Sertifikat SSL Klien untuk Web Server Apache
- Ketikkan perintah berikut untuk membuat private key untuk hostname atau ip server anda
openssl genrsa -des3 -passout pass:password-anda -out private.key 2048
- Lalu lanjutkan dengan perintah berikut untuk mendecrypt private.key yang telah dibuat pada perintah diatas
openssl rsa -passin pass:password-anda -in private.key -out private.key
- Kemudian anda lanjutkan dengan perintah berikut ini untuk membuat CSR (Certificate Signing Request) yang nantinya akan di validasi atau diverifikasi oleh Sertifikat Authority (caroot.key dan caroot.pem) yang telah kita buat sebelumnya. Disini saya menggunakan domain
satemedan.com
sebagai CN (Common Name) hanya sebagai contoh saja, silahkan anda sesuaikan dengan domain internal yang ingin anda gunakan.openssl req -new -key private.key -out private.csr
Silahkan anda sesuaikan data-data yang saya isikan seperti pada gambar berikut ini :
- Selanjutnya buat sebuah file dengan nama
v3.ext
yang isinya berikut ini :authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = satemedan.com
atau bisa juga langsung eksekusi dengan perintah berikut ini :
touch v3.ext echo "authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = satemedan.com" > v3.ext
Ekstensi ini dibuat bertujuan agar result sertifikat SSL klien yang divalidasi dengan Sertifikat Authority yang kita buat dikonversi menjadi v3 dari v1, karena kasus yang saya temui, apabila langkah ini dilewati dan web server apache anda diakses dengan protokol HTTPS pada browser google chrome, sertifikat klien malah dianggap tidak valid meskipun Sertifikat Authority nya sudah di-install atau di-import ke google chrome. Untuk pembuktian, silahkan lewati langkah ini dan pada perintah
openssl x509 -req -in private.csr -CA caroot.pem -CAkey caroot.key -CAcreateserial -out private.crt -days 365 -sha256 -extfile v3.ext
, silahkan hapus parameter-extfile v3.ext
- Selanjutnya kita akan verifikasi CSR untuk Sertifikat SSL Klien yang akan digunakan oleh Web Server Apache dengan perintah berikut :
openssl x509 -req -in private.csr -CA caroot.pem -CAkey caroot.key -CAcreateserial -out private.crt -days 365 -sha256 -extfile v3.ext
Anda akan melihat output seperti gambar berikut setelah perintah diatas anda eksekusi
Setelah selesai langkah diatas berarti proses pembuatan sertifikat authority sendiri dan sertifikat ssl klien juga selesai dan kita sekarang sudah mempunyai beberapa file-file sertifikat penting yang nantinya akan kita gunakan, yaitu :
caroot.key
, akan digunakan untuk proxy squid (directive https_port … key=/path_to_caroot.key)caroot.pem
, akan digunakan untuk proxy squid (directive https_port … cert=/path_to_caroot.pem)caroot.crt
, akan kita import ke browser-browser yang digunakanprivate.crt
, akan kita gunakan untuk web server apache (directive SSLCertificateFile /path_to_private.crt) pada file konfigurasi ssl-sites, di debian jessie filenya bernamadefault-ssl.conf
, ada pada/etc/apache2/sites-enabled
private.key
, akan kita gunakan untuk web server apache (directive SSLCertificateKeyFile /path_to_private.key) pada file konfigurasi ssl-sites
Baca Juga :
Konfigurasi HTTPS pada Web Server Apache
Tahap selanjutnya anda ikuti panduan berikut untuk supaya file-file sertifikat diatas bisa berfungsi sebagaimana mestinya :
- Buat sebuah direktori dengan nama
certificate
pada/etc/apache2
lalu copy-kan fileprivate.key dan private.crt ke dalam direktori tersebut
mkdir /etc/apache2/certificate/ cp private.key /etc/apache2/certificate/ && cp private.crt /etc/apache2/certificate/
- Lalu buka file konfigurasi untuk ssl-sites Web Server Apache, disini saya menggunakan Debian Jessie, filenya bernama
default-ssl.conf
yang ada pada direktori/etc/apache2/sites-enabled/
. Sesuaikan perintah berikut dan perhatikan gambar dibawahnya :nano /etc/apache2/sites-enabled/default-ssl.conf
Silahkan sesuaikan direktive
ServerName, DocumentRoot, SSLCertificateFile, SSLCertificateKeyFile
, perhatikan yang saya tandai pada gambar diatas. Setelah selesai simpan perubahan dan restart service web server apache dengan perintahservice apache2 restart
Konfigurasi Sertifikat SSL pada Proxy Squid HTTPS
- Selanjutnya kita konfigurasikan proxy squid https nya agar menggunakan sertifikat authority yang sama dengan sertifikat authority yang digunakan oleh web server apache. Copy-kan file
caroot.key dan caroot.pem
ke direktori konfig proxy squid anda, misalkan ada di/etc/squid/
dengan perintahcp caroot.key /etc/squid/ && cp caroot.pem /etc/squid/
.perhatikan gambar berikut untuk contoh pada konfig yang saya gunakan, silahkan disesuaikan parameter
cert=/path_to_caroot.pem dan key=/path_to_caroot.key
: - Setelah anda sesuaikan silahkan di-save dan reload konfig yang sudah dirubah dengan
squid -k reconfigure
Import Sertifikat Authority (caroot.crt) ke Browser
- Terlebih dahulu copy-kan file caroot.crt yang sudah dibuat sebelumnya ke root direktori web server apache, misalkan di
/var/www/html
cp caroot.crt /var/www/html/
- Import ke Mozilla Firefox, silahkan akses di mozilla firefox
http://ip_server_anda/caroot.crt
dan anda akan melihat tampilan seperti gambar berikut ini :
Silahkan ceklist ketiga checkbox seperti yang terlihat pada gambar lalu klik tombol “OK” - Import ke Google Chrome, silahkan akses di google chrome
http://ip_server_anda/caroot.crt
lalu buka file caroot.crt yang didownload oleh google chrome, lalu install seperti urutan gambar berikut ini :Jika anda menjumpai notice “security warning” silahkan klik tombol “YES”
Set DNS Statik untuk CN (Common Name) pada MikroTik atau DNS Server
- Prosedur pembuatan Sertifikat Authority dan Sertifikat SSL Klien untuk web server apache sudah selesai, selanjutnya buat dns statik untuk CN (Common Name) web server apache anda pada mikrotik agar sertifikat SSL klien-nya valid saat diakses dibrowser menggunakan CN (Common Name) yang telah ditentukan sebelumnya. Pada langkah diatas kita saya memberikan contoh CN (Common Name) yang digunakan adalah
satemedan.com
, maka ketikkan perintah berikut padaNew terminal MikroTik
, sesuaikan ip address dan domainnya dengan yang akan anda gunakan/ip dns static add address=172.16.10.5 name=satemedan.com
- Selanjutnya tinggal kita tes akses dari browser menggunakan nama CN (Common Name) yang ditentukan dengan protokol HTTPS, berikut penampakan ditempat saya
Dengan demikian kita tidak perlu lagi bukan mengeluarkan uang untuk membayar web hosting hanya demi sebuah file seperti kasus yang saya jelaskan diawal artikel ini. Sertifikat Authority SSL yang digunakan untuk web server apache dan untuk proxy squid HTTPS adalah sama dengan konsekuensi Sertifikat Authority SSL yang kita buat harus diimport ke browser-browser yang digunakan.
Referensi :
Create a CA, issue server/client certificates and test them via ApacheCreating Your Own SSL Certificate Authority (and Dumping Self Signed Certs)https://stackoverflow.com/questions/18233835/creating-an-x509-v3-user-certificate-by-signing-csr
Jika ada yang merasa kurang paham silahkan tinggalkan komentar dan akan saya jawab secepatnya. Selamat Mencoba dan Selamat Bereksperimen. Jangan lupa untuk terus mengunjungi TopSETTING.COM untuk mendapatkan artikel dan tutorial bermanfaat lainnya.