DEV Community

Fega Suseno
Fega Suseno

Posted on

Create a Self-Signed SSL Certificate for Apache in Ubuntu 22.04

Hallo guys.
Pada postingan ini kita akan membahas bagaimana untuk membuat ssl sertifikat local untuk server kita di jaringan local. Sebelum lanjut perlu saya mention bahwa sertifikat ini kita buat sendiri sehingga ini tidak akan valid terbaca oleh browser, jadi mungkin nanti akan ada peringatan seperti di bawah ketika mengakses https nya.

Image description

Oke langsung lanjut ke pembahasan, di asumsikan apache web server sudah terinstall di ubuntu kita sesuai judul post ini.

Pertama aktifkan modul ssl

a2enmod ssl
Enter fullscreen mode Exit fullscreen mode

Reload web server untuk mengaktifkan perubahanya

systemctl reload apche2
Enter fullscreen mode Exit fullscreen mode

Setelah modul aktif, berikutnya adalah membuat sertifikat dengan menggunakan tools openssl, biasanya tools ini sudah default di ubuntu versi 22.04 ini.

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nama-ssl.key -out /etc/ssl/certs/nama-ssl.crt
Enter fullscreen mode Exit fullscreen mode

Lalukan informasi yg perlu di isi, sesuaikan saja seperti Country

Name (2 letter code) [XX]:US
State or Province Name (full name) []:Example
Locality Name (eg, city) [Default City]:Example 
Organization Name (eg, company) [Default Company Ltd]:Example Inc
Organizational Unit Name (eg, section) []:Example Dept
Common Name (eg, your name or your server's hostname) []:your_domain_or_ip
Email Address []:webmaster@example.com
Enter fullscreen mode Exit fullscreen mode

Selanjutnya adalah membuat konfigurasi file ssl di /etc/apache2/sites-available. Tapi saya sarankan untuk mengcopy dari file default-ssl.conf bawaan apache untuk meminimalisir typo dan error.

cp default-ssl.conf domainmu-ssl.conf
Enter fullscreen mode Exit fullscreen mode

Selanjutnya tinggal edit file hasil copy tadi

nano /etc/apache2/sites-available/domainmu-ssl.conf
Enter fullscreen mode Exit fullscreen mode

Buat konfigurasinya jadi seperti ini

+<VirtualHost *:443>
                ServerAdmin webmaster@localhost
+               DocumentRoot /var/www/html

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined

+               SSLEngine on
+               SSLCertificateFile      /etc/ssl/certs/ssl-fega.crt
+               SSLCertificateKeyFile /etc/ssl/private/ssl-fega.key

-               <FilesMatch "\.(cgi|shtml|phtml|php)$">
-                               SSLOptions +StdEnvVars
-               </FilesMatch>
-               <Directory /usr/lib/cgi-bin>
-                               SSLOptions +StdEnvVars
-               </Directory>
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Enter fullscreen mode Exit fullscreen mode

Bagian yang hijau adalah bagian yg perlu di perhatikan saat edit, biasanya terlewat saat memodifikasi filenya. Bagian warna merah itu optional bawaan dari hasil copy, ini jika ingin dihapuspun tidak masalah. Pada bagian SSLCertificateFile dan SSLCertificateKeyFile arahkan pathnya sesuai file yg di buat dengan openssl tadi di atas. Perhatikan juga pada bagian DocumentRoot bahwa pathnya diarahkan sesuai!

Selanjutnya save dan exit.
setelah itu enable config site dari file yg kita buat yaitu domainmu-ssl.conf dengan menggunakan perintah berikut

a2ensite domainmu-ssl.conf
Enter fullscreen mode Exit fullscreen mode

cek bahwa semua configurasi benar dengan perintah berikut

apachectl configtest
Enter fullscreen mode Exit fullscreen mode

jika syntax sudah ok selanjutnya bisa merestart apache web servernya. Jalankan perintah berikut

systemctl restart apache2
Enter fullscreen mode Exit fullscreen mode

Selanjutnya uji coba dddengan mengakses web dengan https://domainmu.com atau dengan https://ip-servermu.

Jika ingin otomatis redirect servermu bisa di tambahkan dengan syntak berikut pada virtualhost servermu. Ingat ini virtualhostnya ya, bukan config ssl yg tadi.
Anggaplah kita masih menggunakan 000-default.conf.

nano 000-default.conf
Enter fullscreen mode Exit fullscreen mode

Tambahkan baris yg saya beri warna hijau

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
+       Redirect / https://your_domain_or_ip/

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Enter fullscreen mode Exit fullscreen mode

Simpan dan exit, lalu restart servernya

systemctl restart apache2
Enter fullscreen mode Exit fullscreen mode

Jika berhasil, ketika mengakses web server maka akan langsung di arahkan dengan https.

Selamat mencoba, semoga bermanfaat.

Top comments (0)