Publish HTTPS Local Server Using Cloudflare
Fega Suseno
Posted on May 21, 2024
hallo world!
Postingan kali ini akan membahas sedikit studi kasus, kita akan membuat server lokal kita agar bisa di akses online. Kali ini kita akan hubungkannya dengan cloudflare.
Kenapa cloudflare?
Karena Cloudflare memiliki fitur CDN (Content Delivery Network) dan juga DDOS Protection, sehingga membuat website lebih aman.
Kita akan langsung ke lab, berikut ini gambaran topologinya
Sedikit saya jelaskan Topologinya, jadi pada gambar di atas saya punya server local, router dengan Public Static IP, domain nzucode.store
(berlangganan pada provider) dan akun cloudflare.
- Step 1: Pointing Domain ke Cloudflare
Pertama kita perlu melakukan forwarding port 80 dan 443 pada router, ini bertujuan agar server lokal kita bisa di ekspose keluar, pada kasus saya menggunakan mikrotik.
Pada cloudflare kita copy pada bagian nameserver
Ini nantinya akan kita arahkan untuk nameserver domain kita. Untuk caranya berbeda-beda tergantung provider domain yg kita pakai, disini saya menggunakan rumahweb sebagai providernya. Kurang lebih seperti ini caranya https://www.rumahweb.com/journal/cara-setting-domain-di-cloudflare/
- Step 2: Konfigurasi SSL Certificate
Kita akan membuat certificate SLL pada cloudflare, Certificate ini yg nantinya akan kita pasang pada sisi server local. Pastikan untuk mengcopy dan menyimpanya, karena certificate .pem
hanya bisa dilihat satu kali.
Pastikan juga untuk enable beberapa opsi berikut
- Step 3: Install Certificate Pada Local Server
Pertama buat config file di /etc/apache2/sites-available
untuk nama confignya misal nzucode.com.conf
, Untuk referensi kita bisa copy juga dari default-ssl.conf
, tapi nanti perlu ada yg di ubah. Contoh konfignya saya cantumkan berikut:
<VirtualHost *:443>
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/nzucode.pem
SSLCertificateKeyFile /etc/ssl/private/nzucode.key
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Kita buat file dengan nama nzucode.pem
pada directory /etc/ssl/certs/
lalu paste certificate .pem
yang di dapat dari cloudflare.
nano /etc/ssl/certs/nzucode.pem
Buat juga file dengan nama nzucode.key
pada directory /etc/ssl/private/
dan pastekan juga certificate .key
yang sebelumnya kita dapatkan dari cloudflare juga.
nano /etc/ssl/private/nzucode.key
Untuk direktory SSL .pem
dan .key
bisa di sesuaikan sesuai config site-available
yg kita setting.
Selanjutnya tinggal aktifkan modul ssl
dan enable site confignya (Ini bertujuan untuk enable config nzucode.com.conf)
a2enmod ssl
a2ensite nzucode.com.conf
Setelah itu pastikan confignya semua benar dengan
apachectl configtest
jika terdapat error seperti berikut ini
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Cukup tambahkan syntak berikut ini ServerName 127.0.0.1
pada baris paling bawah config file /etc/apache/apache2.conf
.
# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
ServerName 127.0.0.1
lalu coba lagi jalankan perintahnya
apachectl configtest
jika sudah berhasil lakukan reload
dan restart
apachenya
systemctl reload apache2.service
systemctl restart apache2.service
- Step 4: Konfigurasi SSL Certificate Terakhir kita hanya perlu testing dengan ssl checker
Coba akses halaman web nya, seharusnya sudah https
.
Selamat mencoba, semoga bermanfaat.
Posted on May 21, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.