Cara Membuat Sertifikat Authority SSL Apache dan Proxy HTTPS


Tutorial Membuat Sertifikat SSL ApacheCara 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 dibuat
    openssl 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 :

    membuat ca authority

    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 :
    membuat sertifikat ssl klien

  • 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

    validasi sertifikat ssl klien

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 digunakan
  • private.crt, akan kita gunakan untuk web server apache (directive SSLCertificateFile /path_to_private.crt) pada file konfigurasi ssl-sites, di debian jessie filenya bernama default-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 :

Tutorial Membuat VPN Server PPTP Pada Debian Jessie

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 file private.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

    konfigurasi file ssl-sites

    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 perintah service 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 perintah cp 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 :

    konfigurasi https_port squid.conf

  • 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 :

    import sertifikat ssl ke mozilla
    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 :
    install sertifikat ssl chrome-1

    install sertifikat ssl chrome-2

    install sertifikat ssl chrome-3

    install sertifikat ssl chrome-4

    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 pada New 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

    screenshoot HTTPS web server apache

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 Apache
Creating 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.

00votes
Article Rating

   
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x